49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
|
import { MatterConfigFlow, createMatterDiscoveryDescriptor } from '../../ts/integrations/matter/index.js';
|
|
|
|
tap.test('matches Matter zeroconf records', async () => {
|
|
const descriptor = createMatterDiscoveryDescriptor();
|
|
const matcher = descriptor.getMatchers()[0];
|
|
|
|
const operational = await matcher.matches({
|
|
type: '_matter._tcp.local.',
|
|
name: 'Kitchen Bulb._matter._tcp.local.',
|
|
host: 'kitchen-bulb.local',
|
|
port: 5540,
|
|
txt: { dn: 'Kitchen Bulb' },
|
|
}, {});
|
|
const commissionable = await matcher.matches({
|
|
type: '_matterc._udp.local.',
|
|
name: 'Commissionable._matterc._udp.local.',
|
|
host: 'commissionable.local',
|
|
port: 5540,
|
|
}, {});
|
|
|
|
expect(operational.matched).toBeTrue();
|
|
expect(operational.candidate?.name).toEqual('Kitchen Bulb');
|
|
expect(commissionable.matched).toBeTrue();
|
|
expect(commissionable.candidate?.model).toEqual('Commissionable Matter device');
|
|
});
|
|
|
|
tap.test('manual Matter setup defaults to local server URL', async () => {
|
|
const descriptor = createMatterDiscoveryDescriptor();
|
|
const matcher = descriptor.getMatchers()[1];
|
|
const result = await matcher.matches({}, {});
|
|
|
|
expect(result.matched).toBeTrue();
|
|
expect(result.candidate?.metadata?.url).toEqual('ws://localhost:5580/ws');
|
|
});
|
|
|
|
tap.test('Matter config flow uses candidate URL default', async () => {
|
|
const flow = new MatterConfigFlow();
|
|
const step = await flow.start({
|
|
source: 'manual',
|
|
metadata: { url: 'ws://matter.local:5580/ws' },
|
|
}, {});
|
|
const done = await step.submit?.({});
|
|
|
|
expect(done?.config?.url).toEqual('ws://matter.local:5580/ws');
|
|
});
|
|
|
|
export default tap.start();
|