import { tap, expect } from '@git.zone/tstest/tapbundle'; import { VpnInstaller } from '../ts/index.js'; tap.test('VpnInstaller: detect platform', async () => { const platform = VpnInstaller.detectPlatform(); expect(['linux', 'macos', 'windows', 'unknown']).toContain(platform); }); tap.test('VpnInstaller: generate systemd unit', async () => { const unit = VpnInstaller.generateSystemdUnit({ binaryPath: '/usr/local/bin/smartvpn_daemon', socketPath: '/var/run/smartvpn.sock', mode: 'server', }); expect(unit.platform).toEqual('linux'); expect(unit.installPath).toContain('systemd'); expect(unit.installPath).toContain('smartvpn-server'); expect(unit.content).toContain('[Unit]'); expect(unit.content).toContain('[Service]'); expect(unit.content).toContain('[Install]'); expect(unit.content).toContain('--management-socket'); expect(unit.content).toContain('/var/run/smartvpn.sock'); expect(unit.content).toContain('--mode server'); }); tap.test('VpnInstaller: generate launchd plist', async () => { const unit = VpnInstaller.generateLaunchdPlist({ binaryPath: '/usr/local/bin/smartvpn_daemon', socketPath: '/var/run/smartvpn.sock', mode: 'client', }); expect(unit.platform).toEqual('macos'); expect(unit.installPath).toContain('LaunchDaemons'); expect(unit.content).toContain('rocks.push.smartvpn.client'); expect(unit.content).toContain('--management-socket'); expect(unit.content).toContain('/var/run/smartvpn.sock'); }); tap.test('VpnInstaller: generate service unit for current platform', async () => { const platform = VpnInstaller.detectPlatform(); if (platform === 'linux' || platform === 'macos') { const unit = VpnInstaller.generateServiceUnit({ binaryPath: '/usr/local/bin/smartvpn_daemon', socketPath: '/var/run/smartvpn.sock', mode: 'server', }); expect(unit.platform).toEqual(platform); expect(unit.content.length).toBeGreaterThan(0); } }); export default tap.start();