mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-17 18:25:42 +02:00
40 lines
1.8 KiB
JavaScript
40 lines
1.8 KiB
JavaScript
// Run: node --test electron/popupRoute.test.js
|
|
//
|
|
// ENG-279, second cut. The first version routed every popup opened by a browser card into a card so
|
|
// an agent could address it. An Electron probe then measured what that costs: a reopened card has
|
|
// window.opener = false and never receives the postMessage an OAuth popup uses to return the auth
|
|
// code, while a native popup gets both. So the routing broke sign-in AFTER the user authenticated.
|
|
//
|
|
// These tests encode the surviving invariant: a real window.open stays native, whoever opened it.
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { popupRoute } = require('./popupRoute');
|
|
|
|
test('a real window.open from a browser card stays NATIVE so window.opener survives', () => {
|
|
for (const d of ['new-window', 'default', 'other', undefined]) {
|
|
assert.equal(
|
|
popupRoute('webview', d),
|
|
'native',
|
|
`disposition ${d} was reopened as a card, which nulls window.opener and breaks the OAuth return channel`,
|
|
);
|
|
}
|
|
});
|
|
|
|
test('provider sign-in from the main window keeps its native popup', () => {
|
|
for (const d of ['new-window', 'default', undefined]) {
|
|
assert.equal(popupRoute('window', d), 'native', `disposition ${d} hijacked provider auth`);
|
|
}
|
|
});
|
|
|
|
test('tab dispositions still route to a card from anywhere, which predates ENG-279', () => {
|
|
for (const t of ['webview', 'window', 'browserView']) {
|
|
assert.equal(popupRoute(t, 'foreground-tab'), 'card');
|
|
assert.equal(popupRoute(t, 'background-tab'), 'card');
|
|
}
|
|
});
|
|
|
|
test('both routes are reachable, so the decision is not one-armed', () => {
|
|
const seen = new Set([popupRoute('webview', 'new-window'), popupRoute('webview', 'foreground-tab')]);
|
|
assert.equal(seen.size, 2, `only reached ${[...seen].join(', ')}`);
|
|
});
|