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:
@@ -596,6 +596,7 @@ const serverUtilsRuntime = createServerUtilsRuntime({
|
|||||||
longRequestTimeoutMs: LONG_REQUEST_TIMEOUT_MS,
|
longRequestTimeoutMs: LONG_REQUEST_TIMEOUT_MS,
|
||||||
getRuntime: () => ({
|
getRuntime: () => ({
|
||||||
openCodePort,
|
openCodePort,
|
||||||
|
openCodeBaseUrl,
|
||||||
openCodeNotReadySince,
|
openCodeNotReadySince,
|
||||||
isOpenCodeReady,
|
isOpenCodeReady,
|
||||||
isRestartingOpenCode,
|
isRestartingOpenCode,
|
||||||
|
|||||||
@@ -80,4 +80,39 @@ describe('OpenCode proxy SSE forwarding', () => {
|
|||||||
expect(await response.text()).toBe('data: {"ok":true}\n\n');
|
expect(await response.text()).toBe('data: {"ok":true}\n\n');
|
||||||
expect(seenAuthorization).toBe('Bearer test-token');
|
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' });
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user