43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { generateKeypair } = require('../../utils/wg_keys');
|
|
const { renderClientConf } = require('../../utils/wg_conf');
|
|
|
|
test('generateKeypair returns valid base64 WireGuard keypair', () => {
|
|
const kp = generateKeypair();
|
|
assert.ok(kp.privateKey, 'privateKey should exist');
|
|
assert.ok(kp.publicKey, 'publicKey should exist');
|
|
assert.notEqual(kp.privateKey, kp.publicKey);
|
|
// WireGuard raw X25519 base64 keys are 44 characters ending with '='
|
|
assert.equal(kp.privateKey.length, 44);
|
|
assert.equal(kp.publicKey.length, 44);
|
|
});
|
|
|
|
test('renderClientConf generates valid wg0 client configuration', () => {
|
|
const peer = {
|
|
name: 'test-phone',
|
|
assignedIP: '10.100.0.5',
|
|
privateKey: 'c3VwZXJzZWNyZXRwcml2YXRla2V5MTIzNDU2Nzg5MDE=',
|
|
};
|
|
const site = {
|
|
subnet: '192.168.1.0/24',
|
|
exitAll: false,
|
|
};
|
|
const confStr = renderClientConf({
|
|
peer,
|
|
site,
|
|
serverPub: 'c2VydmVycHVibGlja2V5MTIzNDU2Nzg5MDEyMzQ1Njc=',
|
|
serverEndpoint: 'gw.theta42.com:51820',
|
|
dns: '1.1.1.1',
|
|
});
|
|
|
|
assert.ok(confStr.includes('[Interface]'));
|
|
assert.ok(confStr.includes('PrivateKey = c3VwZXJzZWNyZXRwcml2YXRla2V5MTIzNDU2Nzg5MDE='));
|
|
assert.ok(confStr.includes('Address = 10.100.0.5/32'));
|
|
assert.ok(confStr.includes('[Peer]'));
|
|
assert.ok(confStr.includes('PublicKey = c2VydmVycHVibGlja2V5MTIzNDU2Nzg5MDEyMzQ1Njc='));
|
|
assert.ok(confStr.includes('Endpoint = gw.theta42.com:51820'));
|
|
});
|