Files
openchamber/packages/web/server/lib/security/request-security.test.js
T

50 lines
1.4 KiB
JavaScript
Raw Normal View History

import { describe, expect, test } from 'bun:test';
import { createRequestSecurityRuntime } from './request-security.js';
const createRuntime = () => createRequestSecurityRuntime({
readSettingsFromDiskMigrated: async () => ({}),
});
describe('request security runtime', () => {
test('allows packaged client origins for remote client transports', async () => {
const runtime = createRuntime();
await expect(runtime.isRequestOriginAllowed({
headers: {
origin: 'openchamber-ui://app',
host: '192.168.1.130:1202',
},
socket: {},
})).resolves.toBe(true);
await expect(runtime.isRequestOriginAllowed({
headers: {
origin: 'capacitor://localhost',
host: '192.168.1.130:1202',
},
socket: {},
})).resolves.toBe(true);
// Android Capacitor WebView (androidScheme 'https') reports this origin.
await expect(runtime.isRequestOriginAllowed({
headers: {
origin: 'https://localhost',
host: '192.168.1.130:1202',
},
socket: {},
})).resolves.toBe(true);
});
test('rejects unknown origins', async () => {
const runtime = createRuntime();
await expect(runtime.isRequestOriginAllowed({
headers: {
origin: 'https://evil.example.com',
host: '192.168.1.130:1202',
},
socket: {},
})).resolves.toBe(false);
});
});