41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
|
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||
|
|
import { AdguardIntegration, createAdguardDiscoveryDescriptor } from '../../ts/integrations/adguard/index.js';
|
||
|
|
|
||
|
|
tap.test('matches and validates manual AdGuard Home candidates', async () => {
|
||
|
|
const descriptor = createAdguardDiscoveryDescriptor();
|
||
|
|
const matcher = descriptor.getMatchers()[0];
|
||
|
|
const match = await matcher.matches({
|
||
|
|
host: '192.168.1.2',
|
||
|
|
port: 3000,
|
||
|
|
name: 'AdGuard Home',
|
||
|
|
}, {});
|
||
|
|
expect(match.matched).toBeTrue();
|
||
|
|
expect(match.candidate?.integrationDomain).toEqual('adguard');
|
||
|
|
expect(match.candidate?.manufacturer).toEqual('AdGuard Team');
|
||
|
|
|
||
|
|
const validator = descriptor.getValidators()[0];
|
||
|
|
const valid = await validator.validate({
|
||
|
|
source: 'manual',
|
||
|
|
integrationDomain: 'adguard',
|
||
|
|
host: '192.168.1.2',
|
||
|
|
port: 3000,
|
||
|
|
}, {});
|
||
|
|
expect(valid.matched).toBeTrue();
|
||
|
|
});
|
||
|
|
|
||
|
|
tap.test('config flow returns local HTTP AdGuard Home config', async () => {
|
||
|
|
const integration = new AdguardIntegration();
|
||
|
|
const step = await integration.configFlow.start({ source: 'manual', integrationDomain: 'adguard', host: 'http://192.168.1.2:3000/admin' }, {});
|
||
|
|
const incomplete = await step.submit?.({ host: '192.168.1.2', username: 'admin' });
|
||
|
|
expect(incomplete?.kind).toEqual('error');
|
||
|
|
|
||
|
|
const done = await step.submit?.({ host: 'http://192.168.1.2:3000/admin', username: 'admin', password: 'secret' });
|
||
|
|
expect(done?.kind).toEqual('done');
|
||
|
|
expect(done?.config?.host).toEqual('192.168.1.2');
|
||
|
|
expect(done?.config?.port).toEqual(3000);
|
||
|
|
expect(done?.config?.ssl).toBeFalse();
|
||
|
|
expect(done?.config?.basePath).toEqual('/admin');
|
||
|
|
});
|
||
|
|
|
||
|
|
export default tap.start();
|