mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
79 lines
2.7 KiB
JavaScript
79 lines
2.7 KiB
JavaScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import assert from 'node:assert/strict';
|
|
import {describe, test} from 'node:test';
|
|
import {installTestModuleStub} from './LocalAppTestSupport.test.mjs';
|
|
|
|
installTestModuleStub(
|
|
'electron-log',
|
|
`export const calls = [];
|
|
const record = (level) => (...args) => calls.push({level, args});
|
|
export default {debug: record('debug'), error: record('error'), info: record('info'), warn: record('warn')};`,
|
|
);
|
|
|
|
process.env.FLUXER_DISABLE_NATIVE_GATEWAY = '1';
|
|
|
|
const {createGatewaySocketBoundary, isNativeGatewayAvailable, loadGatewaySocketBinding} = await import(
|
|
'./GatewaySocketNativeBoundary.ts'
|
|
);
|
|
const {calls: electronLogCalls} = await import('electron-log');
|
|
|
|
function createFakeConnection() {
|
|
return {
|
|
sendText: () => {},
|
|
sendBinary: () => {},
|
|
close: () => {},
|
|
dispose: () => {},
|
|
};
|
|
}
|
|
|
|
describe('GatewaySocketNativeBoundary', () => {
|
|
test('returns null instead of throwing when the binding is unavailable', () => {
|
|
assert.equal(createGatewaySocketBoundary(null), null);
|
|
});
|
|
|
|
test('honours the environment kill switch and logs the disable reason once', () => {
|
|
assert.equal(loadGatewaySocketBinding(), null);
|
|
assert.equal(loadGatewaySocketBinding(), null);
|
|
assert.equal(isNativeGatewayAvailable(), false);
|
|
assert.equal(createGatewaySocketBoundary(), null);
|
|
const disableLogs = electronLogCalls.filter((entry) =>
|
|
String(entry.args[0]).includes('native gateway transport is disabled'),
|
|
);
|
|
assert.equal(disableLogs.length, 1);
|
|
assert.equal(disableLogs[0].args[1], 'FLUXER_DISABLE_NATIVE_GATEWAY');
|
|
});
|
|
|
|
test('pins the transport mode to gateway and forwards both callbacks positionally', () => {
|
|
const calls = [];
|
|
const connection = createFakeConnection();
|
|
const boundary = createGatewaySocketBoundary((options, onEvent, onTerminalEvent) => {
|
|
calls.push({options, onEvent, onTerminalEvent});
|
|
return connection;
|
|
});
|
|
const onEvent = () => {};
|
|
const onTerminalEvent = () => {};
|
|
const result = boundary.connect({url: 'wss://gateway.fluxer.app', address: null, onEvent, onTerminalEvent});
|
|
assert.equal(result, connection);
|
|
assert.equal(calls.length, 1);
|
|
assert.deepEqual(calls[0].options, {url: 'wss://gateway.fluxer.app', address: null, mode: 'gateway'});
|
|
assert.equal(calls[0].onEvent, onEvent);
|
|
assert.equal(calls[0].onTerminalEvent, onTerminalEvent);
|
|
});
|
|
|
|
test('forwards a pinned address unchanged', () => {
|
|
const calls = [];
|
|
const boundary = createGatewaySocketBoundary((options) => {
|
|
calls.push(options);
|
|
return createFakeConnection();
|
|
});
|
|
boundary.connect({
|
|
url: 'wss://gateway.fluxer.app',
|
|
address: '203.0.113.7',
|
|
onEvent: () => {},
|
|
onTerminalEvent: () => {},
|
|
});
|
|
assert.equal(calls[0].address, '203.0.113.7');
|
|
});
|
|
});
|