Pulse/tests/integration/scripts/bootstrap-hosted-mobile-onboarding.test.mjs
2026-04-24 13:13:36 +01:00

76 lines
2.5 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
deriveTenantBaseUrl,
fetchOnboardingPayload,
fetchOnboardingPayloadViaCloudHost,
redactBearerTokens,
} from './bootstrap-hosted-mobile-onboarding.mjs';
test('deriveTenantBaseUrl maps the control-plane host to the tenant subdomain', () => {
assert.equal(
deriveTenantBaseUrl('https://cloud.pulserelay.pro/', 't-CANARY123'),
'https://t-canary123.cloud.pulserelay.pro',
);
});
test('fetchOnboardingPayload uses bearer auth without leaking it in failures', async () => {
const token = 'pulse_secret_token.value/with+chars';
const calls = [];
const fetchImpl = async (url, options) => {
calls.push({ options, url });
return {
ok: false,
status: 401,
text: async () => `bad Authorization: Bearer ${token}`,
};
};
await assert.rejects(
() => fetchOnboardingPayload({
fetchImpl,
rawToken: token,
tenantBaseUrl: 'https://t-canary.cloud.pulserelay.pro',
}),
(error) => {
assert.match(error.message, /Bearer \[REDACTED\]/);
assert.doesNotMatch(error.message, new RegExp(token.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
return true;
},
);
assert.equal(calls.length, 1);
assert.equal(calls[0].url, 'https://t-canary.cloud.pulserelay.pro/api/onboarding/qr');
assert.equal(calls[0].options.headers.Authorization, `Bearer ${token}`);
});
test('redactBearerTokens redacts bearer values in arbitrary command text', () => {
assert.equal(
redactBearerTokens('Command failed: curl -H Authorization: Bearer abc.def/ghi'),
'Command failed: curl -H Authorization: Bearer [REDACTED]',
);
});
test('fetchOnboardingPayloadViaCloudHost passes the bearer token over stdin only', () => {
const token = 'pulse_secret_token.value/with+chars';
const calls = [];
const payload = fetchOnboardingPayloadViaCloudHost({
cloudHost: 'root@pulse-cloud',
rawToken: token,
tenantBaseUrl: 'https://t-canary.cloud.pulserelay.pro',
runner: (command, args, options) => {
calls.push({ args, command, options });
return JSON.stringify({
deep_link: 'pulse://pair',
instance_id: 'relay_123',
relay: { enabled: true, url: 'wss://relay.example/ws' },
});
},
});
assert.equal(payload.instance_id, 'relay_123');
assert.equal(calls.length, 1);
assert.equal(calls[0].command, 'ssh');
assert.equal(calls[0].options.input, token);
assert.doesNotMatch(calls[0].args.join(' '), new RegExp(token.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
});