93 lines
2.5 KiB
JavaScript
93 lines
2.5 KiB
JavaScript
import assert from "node:assert/strict";
|
||
import test from "node:test";
|
||
|
||
import { resolveClientRoute } from "../../src/web/utils/clientRoute.js";
|
||
|
||
test("shows gateway route as the active Mac connection", () => {
|
||
const route = resolveClientRoute({
|
||
state: {
|
||
singboxRunning: true,
|
||
proxyPort: 18080,
|
||
clientSettings: {
|
||
sharedProxyEnabled: true,
|
||
sharedProxy: { host: "192.168.50.111", port: 8080, protocol: "socks5" },
|
||
},
|
||
},
|
||
});
|
||
|
||
assert.equal(route.mode, "gateway");
|
||
assert.equal(route.status, "connected");
|
||
assert.equal(route.title, "Подключено к gateway");
|
||
assert.equal(route.target, "192.168.50.111:8080");
|
||
assert.deepEqual(route.path, [
|
||
"Mac apps",
|
||
"127.0.0.1:18080",
|
||
"Gateway 192.168.50.111:8080",
|
||
"Internet",
|
||
]);
|
||
});
|
||
|
||
test("shows local VPN route with selected server", () => {
|
||
const route = resolveClientRoute({
|
||
state: {
|
||
singboxRunning: true,
|
||
proxyPort: 8082,
|
||
selectedTag: "nl-amsterdam",
|
||
clientSettings: {},
|
||
},
|
||
activeServer: { tag: "nl-amsterdam", country: "NL" },
|
||
});
|
||
|
||
assert.equal(route.mode, "vpn");
|
||
assert.equal(route.status, "connected");
|
||
assert.equal(route.title, "Подключено через VPN");
|
||
assert.equal(route.target, "nl-amsterdam");
|
||
});
|
||
|
||
test("shows direct route when home mode is enabled", () => {
|
||
const route = resolveClientRoute({
|
||
state: {
|
||
singboxRunning: true,
|
||
proxyPort: 8082,
|
||
clientSettings: { homeBypassEnabled: true },
|
||
},
|
||
});
|
||
|
||
assert.equal(route.mode, "direct");
|
||
assert.equal(route.status, "connected");
|
||
assert.equal(route.title, "Подключено напрямую");
|
||
assert.equal(route.target, "без VPN");
|
||
});
|
||
|
||
test("shows configured but stopped route clearly", () => {
|
||
const route = resolveClientRoute({
|
||
state: {
|
||
singboxRunning: false,
|
||
configExists: true,
|
||
proxyPort: 8082,
|
||
selectedTag: "nl-amsterdam",
|
||
clientSettings: {},
|
||
},
|
||
});
|
||
|
||
assert.equal(route.mode, "vpn");
|
||
assert.equal(route.status, "stopped");
|
||
assert.equal(route.title, "VPN настроен, но остановлен");
|
||
});
|
||
|
||
test("shows missing setup when nothing is configured", () => {
|
||
const route = resolveClientRoute({
|
||
state: {
|
||
singboxRunning: false,
|
||
configExists: false,
|
||
proxyPort: 8082,
|
||
clientSettings: {},
|
||
},
|
||
});
|
||
|
||
assert.equal(route.mode, "none");
|
||
assert.equal(route.status, "empty");
|
||
assert.equal(route.title, "Не подключено");
|
||
assert.equal(route.target, "выберите режим");
|
||
});
|