Files
integrations/test/devolo_home_network/test.devolo_home_network.discovery.node.ts
T

67 lines
2.2 KiB
TypeScript

import { expect, tap } from '@git.zone/tstest/tapbundle';
import { createDevoloHomeNetworkDiscoveryDescriptor } from '../../ts/integrations/devolo_home_network/index.js';
tap.test('matches devolo device API mDNS records', async () => {
const descriptor = createDevoloHomeNetworkDiscoveryDescriptor();
const matcher = descriptor.getMatchers()[0];
const result = await matcher.matches({
type: '_dvl-deviceapi._tcp.local.',
name: 'devolo-office._dvl-deviceapi._tcp.local.',
host: '192.168.1.20',
port: 80,
txt: {
Product: 'Magic 2 WiFi 6',
SN: 'S12345',
MT: '8528',
},
}, {});
expect(result.matched).toBeTrue();
expect(result.candidate?.integrationDomain).toEqual('devolo_home_network');
expect(result.normalizedDeviceId).toEqual('S12345');
expect(result.candidate?.metadata?.MT).toEqual('8528');
});
tap.test('rejects devolo Home Control central units', async () => {
const descriptor = createDevoloHomeNetworkDiscoveryDescriptor();
const matcher = descriptor.getMatchers()[0];
const result = await matcher.matches({
type: '_dvl-deviceapi._tcp.local.',
host: '192.168.1.21',
txt: { Product: 'Home Control Central Unit', SN: 'HC1', MT: '2600' },
}, {});
expect(result.matched).toBeFalse();
expect(result.metadata?.homeControl).toBeTrue();
});
tap.test('matches and validates manual snapshot candidates', async () => {
const descriptor = createDevoloHomeNetworkDiscoveryDescriptor();
const manualMatcher = descriptor.getMatchers()[1];
const validator = descriptor.getValidators()[0];
const manual = await manualMatcher.matches({
host: '192.168.1.22',
product: 'devolo Magic 2 LAN',
serialNumber: 'S67890',
snapshot: {
connected: true,
device: { host: '192.168.1.22', name: 'Basement Adapter', serialNumber: 'S67890' },
plcDevices: [],
plcLinks: [],
wifiStations: [],
neighboringWifiNetworks: [],
sensors: {},
switches: {},
actions: [],
events: [],
},
}, {});
const validated = await validator.validate(manual.candidate!, {});
expect(manual.matched).toBeTrue();
expect(validated.matched).toBeTrue();
expect(validated.metadata?.liveHttpImplemented).toEqual(false);
});
export default tap.start();