UNPKG

livekit-client

Version:

JavaScript/TypeScript client SDK for LiveKit

106 lines (100 loc) 4.08 kB
import { describe, expect, it } from 'vitest'; import DeviceManager from './DeviceManager'; class MockDeviceManager extends DeviceManager { dummyDevices?: MediaDeviceInfo[]; async getDevices( kind?: MediaDeviceKind | undefined, requestPermissions?: boolean, ): Promise<MediaDeviceInfo[]> { if (this.dummyDevices) { return this.dummyDevices; } else { return super.getDevices(kind, requestPermissions); } } } describe('Active device switch', () => { const deviceManager = new MockDeviceManager(); it('normalizes default ID correctly', async () => { deviceManager.dummyDevices = [ { deviceId: 'default', kind: 'audiooutput', label: 'Default - Speakers (Intel® Smart Sound Technology for I2S Audio)', groupId: 'c94fea7109a30d468722f3b7778302c716d683a619f41b264b0cf8b2ec202d9g', toJSON: () => 'dummy', }, { deviceId: 'communications', kind: 'audiooutput', label: 'Communications - Speakers (2- USB Advanced Audio Device) (0d8c:016c)', groupId: '5146b7ad442c53c9366b141edceca8be30c0a4b31c181968cc732a100176e765', toJSON: () => 'dummy', }, { deviceId: 'bfbbf4fbdba0ce0b12159f2f615ba856bdf17743d8b791265db22952d98c28cf', kind: 'audiooutput', label: 'Speakers (2- USB Advanced Audio Device) (0d8c:016c)', groupId: '5146b7ad442c53c9366b141edceca8be30c0a4b31c181968cc732a100176e765', toJSON: () => 'dummy', }, { deviceId: '6ca3eb8140dc3d2919d6747f73d8277e6ecaf0f179426695154e98615bafd2b9', kind: 'audiooutput', label: 'Speakers (Intel® Smart Sound Technology for I2S Audio)', groupId: 'c94fea7109a30d468722f3b7778302c716d683a619f41b264b0cf8b2ec202d9g', toJSON: () => 'dummy', }, ]; const normalizedID = await deviceManager.normalizeDeviceId('audiooutput', 'default'); expect(normalizedID).toBe('6ca3eb8140dc3d2919d6747f73d8277e6ecaf0f179426695154e98615bafd2b9'); }); it('returns undefined when default cannot be determined', async () => { deviceManager.dummyDevices = [ { deviceId: 'default', kind: 'audiooutput', label: 'Default', groupId: 'default', toJSON: () => 'dummy', }, { deviceId: 'd5a1ad8b1314736ad1936aae1d74fa524f954c3281b4af3b65b2492330c3a830', kind: 'audiooutput', label: 'Alder Lake PCH-P High Definition Audio Controller HDMI / DisplayPort 3 Output', groupId: 'af6745746c55f7697eadbb5e31a8f28ef836b4d8aefdc3655189a9e7d81eb8d', toJSON: () => 'dummy', }, { deviceId: '093f4e51743557382b19da4c0250869b9c6d176423b241f0d52ed665f636e9d2', kind: 'audiooutput', label: 'Alder Lake PCH-P High Definition Audio Controller HDMI / DisplayPort 2 Output', groupId: 'e53791b0ce4bad2b3a515cb1e154acf4758bb563b11942949130190d5c2e0d4', toJSON: () => 'dummy', }, { deviceId: 'a6ffa042ac4a88e9ff552ce50b016d0bbf60a9e3c2173a444b064ef1aa022fb5', kind: 'audiooutput', label: 'Alder Lake PCH-P High Definition Audio Controller HDMI / DisplayPort 1 Output', groupId: '69bb8042d093e8b33e9c33710cdfb8c0bba08889904b012e1a186704d74b39a', toJSON: () => 'dummy', }, { deviceId: 'd746e22bcfa3f8f76dfce7ee887612982c226eb1f2ed77502ed621b9d7cdae00', kind: 'audiooutput', label: 'Alder Lake PCH-P High Definition Audio Controller Speaker + Headphones', groupId: 'd08b9d0b8d1460c8c120333bdcbc42fbb92fa8e902926fb8b1f35d43ad7f10f', toJSON: () => 'dummy', }, { deviceId: 'c43858eb7092870122d5bc3af7b7b7e2f9baf9b3aa829adb34cc84c9f65538a3', kind: 'audiooutput', label: 'T11', groupId: '1ecff3666059160ac3ae559e97286de0ee2487bce8808e9040cba26805d3e15', toJSON: () => 'dummy', }, ]; const normalizedID = await deviceManager.normalizeDeviceId('audiooutput', 'default'); expect(normalizedID).toBe(undefined); }); });