Ctrl K
ComunidadGuías…

test/connect-env-token-gate.test.js

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { after, before, describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { config } from '../src/config.js';
import { startServer } from '../src/server.js';
import { __resetConnectDeps, __setConnectDeps } from '../src/handlers/chat.js';

// Single-token DEVIN_CONNECT deploy: the pool is intentionally empty and the
// connect client falls back to DEVIN_CONNECT_TOKEN. The HTTP prechecks must not
// 503 before that fallback is reached.
const SAVED = {};
const ENV_KEYS = ['DEVIN_CONNECT', 'DEVIN_CONNECT_TOKEN', 'WINDSURF_API_KEY'];
for (const k of ENV_KEYS) SAVED[k] = process.env[k];

let server;
let port;

before(async () => {
  process.env.DEVIN_CONNECT = '1';
  process.env.DEVIN_CONNECT_TOKEN = 'test-env-token-shape-only';
  delete process.env.WINDSURF_API_KEY;
  config.apiKey = 'test-dashboard-key';
  config.host = '127.0.0.1';
  config.port = 0;
  __setConnectDeps({
    toChatCompletion: async () => ({
      status: 200,
      body: {
        id: 'chatcmpl-env-token', object: 'chat.completion', created: 0,
        model: 'claude-opus-5-5-medium',
        choices: [{ index: 0, message: { role: 'assistant', content: 'PONG' }, finish_reason: 'stop' }],
        usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 },
      },
    }),
  });
  server = startServer();
  await new Promise((resolve, reject) => {
    server.once('listening', resolve);
    server.once('error', reject);
  });
  port = server.address().port;
});

after(async () => {
  __resetConnectDeps();
  if (server) await new Promise((resolve) => server.close(resolve));
  for (const k of ENV_KEYS) {
    if (SAVED[k] === undefined) delete process.env[k];
    else process.env[k] = SAVED[k];
  }
});

describe('DEVIN_CONNECT single-token deploy', () => {
  it('serves /v1/chat/completions with an env token and an empty pool', async () => {
    const res = await fetch(`http://127.0.0.1:${port}/v1/chat/completions`, {
      method: 'POST',
      headers: { authorization: 'Bearer test-dashboard-key', 'content-type': 'application/json' },
      body: JSON.stringify({
        model: 'claude-opus-5-5-medium',
        messages: [{ role: 'user', content: 'hi' }],
      }),
    });
    const body = await res.json();
    assert.equal(res.status, 200, JSON.stringify(body));
    assert.equal(body.choices?.[0]?.message?.content, 'PONG');
    assert.equal(body.model, 'claude-opus-5-5-medium');
  });
});