livekit-server-sdk
Version:
Server-side SDK for LiveKit
45 lines (38 loc) • 1.51 kB
text/typescript
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
//
// SPDX-License-Identifier: Apache-2.0
import { describe, expect, it } from 'vitest';
import { AccessToken } from './AccessToken.js';
import { WebhookEvent, WebhookReceiver } from './WebhookReceiver.js';
const testApiKey = 'abcdefg';
const testSecret = 'abababa';
describe('webhook receiver', () => {
const body =
'{"event":"room_started", "room":{"sid":"RM_TkVjUvAqgzKz", "name":"mytestroom", "emptyTimeout":300, "creationTime":"1628545903", "turnPassword":"ICkSr2rEeslkN6e9bXL4Ji5zzMD5Z7zzr6ulOaxMj6N", "enabledCodecs":[{"mime":"audio/opus"}, {"mime":"video/VP8"}]}}';
const sha = 'CoEQz1chqJ9bnZRcORddjplkvpjmPujmLTR42DbefYI=';
const t = new AccessToken(testApiKey, testSecret);
t.sha256 = sha;
const receiver = new WebhookReceiver(testApiKey, testSecret);
it('should receive and decode WebhookEvent', async () => {
const token = await t.toJwt();
const event = await receiver.receive(body, token);
expect(event).toBeTruthy();
expect(event.room?.name).toBe('mytestroom');
expect(event.event).toBe('room_started');
});
});
describe('decoding json payload', () => {
it('should allow server to return extra fields', () => {
const obj = {
type: 'room_started',
room: {
sid: 'RM_TkVjUvAqgzKz',
name: 'mytestroom',
},
extra: 'extra',
};
const event = new WebhookEvent(obj);
expect(event).toBeTruthy();
expect(event.room?.name).toBe('mytestroom');
});
});