48 lines
1.8 KiB
TypeScript
48 lines
1.8 KiB
TypeScript
|
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||
|
|
import { createEsphomeDiscoveryDescriptor } from '../../ts/integrations/esphome/index.js';
|
||
|
|
|
||
|
|
tap.test('matches ESPHome native API mDNS records', async () => {
|
||
|
|
const descriptor = createEsphomeDiscoveryDescriptor();
|
||
|
|
const matcher = descriptor.getMatchers()[0];
|
||
|
|
const result = await matcher.matches({
|
||
|
|
type: '_esphomelib._tcp.local.',
|
||
|
|
name: 'kitchen_sensor._esphomelib._tcp.local.',
|
||
|
|
host: 'kitchen-sensor.local',
|
||
|
|
port: 6053,
|
||
|
|
txt: {
|
||
|
|
mac: 'aabbccddeeff',
|
||
|
|
name: 'kitchen_sensor',
|
||
|
|
friendly_name: 'Kitchen Sensor',
|
||
|
|
api_encryption: 'Noise_NNpsk0_25519_ChaChaPoly_SHA256',
|
||
|
|
},
|
||
|
|
}, {});
|
||
|
|
expect(result.matched).toBeTrue();
|
||
|
|
expect(result.normalizedDeviceId).toEqual('aa:bb:cc:dd:ee:ff');
|
||
|
|
expect(result.candidate?.host).toEqual('kitchen-sensor.local');
|
||
|
|
expect(result.candidate?.port).toEqual(6053);
|
||
|
|
expect(result.candidate?.metadata?.encryptionRequired).toBeTrue();
|
||
|
|
});
|
||
|
|
|
||
|
|
tap.test('matches new ESPHome mDNS service type and manual entries', async () => {
|
||
|
|
const descriptor = createEsphomeDiscoveryDescriptor();
|
||
|
|
const mdnsMatcher = descriptor.getMatchers()[0];
|
||
|
|
const manualMatcher = descriptor.getMatchers()[1];
|
||
|
|
const mdnsResult = await mdnsMatcher.matches({
|
||
|
|
type: '_esphome._tcp.local.',
|
||
|
|
name: 'garage_door._esphome._tcp.local.',
|
||
|
|
hostname: 'garage-door.local.',
|
||
|
|
port: 6053,
|
||
|
|
properties: { friendly_name: 'Garage Door' },
|
||
|
|
}, {});
|
||
|
|
const manualResult = await manualMatcher.matches({
|
||
|
|
host: 'garage-door.local',
|
||
|
|
name: 'Garage Door',
|
||
|
|
}, {});
|
||
|
|
expect(mdnsResult.matched).toBeTrue();
|
||
|
|
expect(mdnsResult.candidate?.name).toEqual('Garage Door');
|
||
|
|
expect(manualResult.matched).toBeTrue();
|
||
|
|
expect(manualResult.candidate?.port).toEqual(6053);
|
||
|
|
});
|
||
|
|
|
||
|
|
export default tap.start();
|