Files
fluxer/fluxer_desktop/src/main/GatewaySocketNativeBoundary.test.mjs
T

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');
});
});