import assert from 'node:assert/strict' import { test } from 'node:test' import { resolveWgClientEndpoint } from '../../packages/contracts/src/wireguard' import { generatePeerClientConf as client } from '../../lib/wg-config' import { generatePeerClientConf as backend } from '../../backend/src/services/wireguard-config' test('client endpoint uses exporting server or explicit client metadata', () => { assert.equal(resolveWgClientEndpoint(undefined, '192.0.2.1', 51879), '192.0.2.1:51879') assert.equal(resolveWgClientEndpoint('vpn.example:443', '192.0.2.1', 51879), 'vpn.example:443') assert.equal(resolveWgClientEndpoint('vpn.example', '192.0.2.1', 51879), 'vpn.example:51879') assert.equal(resolveWgClientEndpoint(undefined, '2001:db8::1', 51879), '[2001:db8::1]:51879') assert.equal(resolveWgClientEndpoint('[2001:db8::2]:443', '192.0.2.1', 51879), '[2001:db8::2]:443') assert.equal(resolveWgClientEndpoint(undefined, undefined, 51879), undefined) assert.equal(resolveWgClientEndpoint('vpn.example:0', '192.0.2.1', 51879), undefined) assert.equal(resolveWgClientEndpoint('https://vpn.example', '192.0.2.1', 51879), undefined) }) for (const [name, generate] of [['frontend', client], ['backend', backend]] as const) { test(`${name}: incomplete client data stays a template without invented routes`, () => { const code = generate({ serverPublicKey: 'fixture-server-key', endpoint: resolveWgClientEndpoint(undefined, '192.0.2.1', 51879) }) assert(code.includes('Endpoint = 192.0.2.1:51879')) assert(code.includes('# Address = <')) assert(code.includes('# AllowedIPs = <')) assert(code.includes('# PrivateKey = <')) assert(!/^AllowedIPs =|^Address =|^PrivateKey =/m.test(code)) assert(!code.includes('0.0.0.0/0')) }) test(`${name}: explicit client parameters remain unchanged`, () => { const code = generate({ serverPublicKey: 'fixture-server-key', peerAddress: '198.18.255.242/30', peerDns: '192.0.2.53', allowedIps: ['198.18.255.240/30'], endpoint: 'vpn.example:443', persistentKeepalive: 5 }) assert(code.includes('Address = 198.18.255.242/30')) assert(code.includes('AllowedIPs = 198.18.255.240/30')) assert(code.includes('DNS = 192.0.2.53')) assert(code.includes('Endpoint = vpn.example:443')) }) }