Add native hub protocol integrations
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
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();
|
||||
Reference in New Issue
Block a user