Add native hub protocol integrations
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||
import { createNanoleafDiscoveryDescriptor } from '../../ts/integrations/nanoleaf/index.js';
|
||||
|
||||
tap.test('matches Nanoleaf mDNS zeroconf records', async () => {
|
||||
const descriptor = createNanoleafDiscoveryDescriptor();
|
||||
const matcher = descriptor.getMatchers().find((matcherArg) => matcherArg.id === 'nanoleaf-mdns-match');
|
||||
const result = await matcher!.matches({
|
||||
name: 'Nanoleaf Shapes ABCD',
|
||||
type: '_nanoleafapi._tcp.local.',
|
||||
host: 'nanoleaf-shapes.local',
|
||||
port: 16021,
|
||||
txt: {
|
||||
id: 'NL123ABC',
|
||||
md: 'NL42',
|
||||
},
|
||||
}, {});
|
||||
expect(result.matched).toBeTrue();
|
||||
expect(result.normalizedDeviceId).toEqual('NL123ABC');
|
||||
expect(result.candidate?.port).toEqual(16021);
|
||||
});
|
||||
|
||||
tap.test('matches Nanoleaf SSDP records', async () => {
|
||||
const descriptor = createNanoleafDiscoveryDescriptor();
|
||||
const matcher = descriptor.getMatchers().find((matcherArg) => matcherArg.id === 'nanoleaf-ssdp-match');
|
||||
const result = await matcher!.matches({
|
||||
st: 'nanoleaf:nl42',
|
||||
usn: 'uuid:nanoleaf-nl42',
|
||||
headers: {
|
||||
'_host': '192.168.1.55:16021',
|
||||
'nl-devicename': 'Nanoleaf Shapes ABCD',
|
||||
'nl-deviceid': 'NL123ABC',
|
||||
},
|
||||
}, {});
|
||||
expect(result.matched).toBeTrue();
|
||||
expect(result.candidate?.host).toEqual('192.168.1.55');
|
||||
expect(result.candidate?.model).toEqual('NL42');
|
||||
});
|
||||
|
||||
tap.test('validates manual Nanoleaf candidates', async () => {
|
||||
const descriptor = createNanoleafDiscoveryDescriptor();
|
||||
const matcher = descriptor.getMatchers().find((matcherArg) => matcherArg.id === 'nanoleaf-manual-match');
|
||||
const manualResult = await matcher!.matches({
|
||||
host: '192.168.1.56',
|
||||
port: 16021,
|
||||
metadata: { nanoleaf: true },
|
||||
}, {});
|
||||
expect(manualResult.matched).toBeTrue();
|
||||
|
||||
const validator = descriptor.getValidators()[0];
|
||||
const validation = await validator.validate(manualResult.candidate!, {});
|
||||
expect(validation.matched).toBeTrue();
|
||||
});
|
||||
|
||||
export default tap.start();
|
||||
Reference in New Issue
Block a user