test: cover external OpenCode proxy routing

- Expose external OpenCode base URL to proxy runtime
- Add regression coverage for provider requests through external OpenCode hosts
This commit is contained in:
Bohdan Triapitsyn
2026-04-07 22:48:17 +03:00
parent 46d166e205
commit 2e5b02e753
2 changed files with 36 additions and 0 deletions
+1
View File
@@ -596,6 +596,7 @@ const serverUtilsRuntime = createServerUtilsRuntime({
longRequestTimeoutMs: LONG_REQUEST_TIMEOUT_MS,
getRuntime: () => ({
openCodePort,
openCodeBaseUrl,
openCodeNotReadySince,
isOpenCodeReady,
isRestartingOpenCode,
@@ -80,4 +80,39 @@ describe('OpenCode proxy SSE forwarding', () => {
expect(await response.text()).toBe('data: {"ok":true}\n\n');
expect(seenAuthorization).toBe('Bearer test-token');
});
it('routes generic API requests through external OpenCode base URL', async () => {
const upstream = express();
upstream.get('/config/providers', (_req, res) => {
res.json({ ok: true, source: 'external-host' });
});
upstreamServer = await listen(upstream);
const upstreamPort = upstreamServer.address().port;
const externalBaseUrl = `http://127.0.0.1:${upstreamPort}`;
const app = express();
registerOpenCodeProxy(app, {
fs: {},
os: {},
path,
OPEN_CODE_READY_GRACE_MS: 0,
getRuntime: () => ({
openCodePort: 3902,
openCodeBaseUrl: externalBaseUrl,
isOpenCodeReady: true,
openCodeNotReadySince: 0,
isRestartingOpenCode: false,
}),
getOpenCodeAuthHeaders: () => ({}),
buildOpenCodeUrl: (requestPath) => `${externalBaseUrl}${requestPath}`,
ensureOpenCodeApiPrefix: () => {},
});
proxyServer = await listen(app);
const proxyPort = proxyServer.address().port;
const response = await fetch(`http://127.0.0.1:${proxyPort}/api/config/providers`);
expect(response.status).toBe(200);
expect(await response.json()).toEqual({ ok: true, source: 'external-host' });
});
});