Files

75 lines
2.4 KiB
JavaScript
Raw Permalink Normal View History

import assert from 'node:assert/strict';
import test from 'node:test';
import {
PRODUCTION_UPDATER_FEED,
parseLoopbackUpdaterUrl,
resolveUpdaterFeed,
} from './updater-feed.mjs';
const overrideEnvironment = {
OPENCHAMBER_E2E: '1',
OPENCHAMBER_UPDATER_E2E_URL: 'http://127.0.0.1:49152/updates/',
};
test('production updater feed is immutable GitHub configuration', () => {
assert.equal(Object.isFrozen(PRODUCTION_UPDATER_FEED), true);
assert.deepEqual(PRODUCTION_UPDATER_FEED, {
provider: 'github',
owner: 'openchamber',
repo: 'openchamber',
});
});
test('requires the complete E2E environment and embedded build-marker conjunction', () => {
const cases = [
{},
{ environment: overrideEnvironment },
{ environment: { OPENCHAMBER_E2E: '1' }, testBuild: true },
{
environment: { OPENCHAMBER_UPDATER_E2E_URL: overrideEnvironment.OPENCHAMBER_UPDATER_E2E_URL },
testBuild: true,
},
{ environment: overrideEnvironment, testBuild: false },
];
for (const input of cases) assert.equal(resolveUpdaterFeed(input), PRODUCTION_UPDATER_FEED);
});
test('accepts only credential-free loopback HTTP(S) URLs', () => {
assert.equal(parseLoopbackUpdaterUrl('http://127.0.0.1:8080/feed'), 'http://127.0.0.1:8080/feed');
assert.equal(parseLoopbackUpdaterUrl('https://127.255.0.1/feed/'), 'https://127.255.0.1/feed/');
assert.equal(parseLoopbackUpdaterUrl('http://[::1]:8080/feed'), 'http://[::1]:8080/feed');
for (const value of [
'http://localhost:8080/feed',
'http://0.0.0.0:8080/feed',
'http://192.168.1.5:8080/feed',
'https://example.com/feed',
'file:///tmp/feed',
'ftp://127.0.0.1/feed',
'http://user:secret@127.0.0.1/feed',
'http://127.0.0.1/feed?token=secret',
'http://127.0.0.1/feed#fragment',
'not-a-url',
]) assert.equal(parseLoopbackUpdaterUrl(value), null, value);
});
test('uses a generic feed only when every test-only gate is valid', () => {
assert.deepEqual(resolveUpdaterFeed({
environment: overrideEnvironment,
testBuild: true,
}), {
provider: 'generic',
url: 'http://127.0.0.1:49152/updates/',
});
});
test('invalid URLs fall back to the production feed even with both test gates', () => {
for (const url of ['https://example.com/feed', 'http://localhost/feed', '']) {
assert.equal(resolveUpdaterFeed({
environment: { ...overrideEnvironment, OPENCHAMBER_UPDATER_E2E_URL: url },
testBuild: true,
}), PRODUCTION_UPDATER_FEED);
}
});