83 lines · 2.5 KB · JavaScript
RawDownload
import { mcpTest } from "../src/testkit.mjs";import { selfhost } from "./execute.test.mjs"; const uniqueId = (prefix) => `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`; mcpTest(  "x emulator OAuth client-credentials clients authenticate with HTTP Basic",  selfhost,  async (mcp) => {    const slug = uniqueId("x-oauth-basic");    const instance = slug;    const baseUrl = `https://emulators.dev/x/${instance}`;     mcp.say(      "Register the X emulator OpenAPI integration, create a confidential OAuth client, and start a client-credentials connection through Executor itself.",    );     const started = await mcp.call("execute", {      code: `const slug = ${JSON.stringify(slug)};const baseUrl = ${JSON.stringify(baseUrl)};const authorizationUrl = baseUrl + "/2/oauth2/authorize";const tokenUrl = baseUrl + "/2/oauth2/token"; const added = await tools.executor.openapi.addSpec({  spec: { kind: "url", url: "https://x.emulators.dev/2/openapi.json" },  slug,  baseUrl,  authenticationTemplate: [{    slug: "oauth2",    type: "oauth",    authorizationUrl,    tokenUrl,    scopes: [],  }],}); const client = await tools.executor.coreTools.oauth.clients.create({  owner: "org",  slug: slug + "-client",  authorizationUrl,  tokenUrl,  grant: "client_credentials",  clientId: "x-confidential-client",  clientSecret: "x-confidential-secret",}); const connection = await tools.executor.coreTools.oauth.start({  client: slug + "-client",  clientOwner: "org",  owner: "org",  name: "machine",  integration: slug,  template: "oauth2",}); return JSON.stringify({ added, client, connection }, null, 2);`,    });     mcp.expect(started.text).toContain("Execution paused: Add an OpenAPI integration");     const resumed = await mcp.approvePaused(started.text);    const ledger = await fetch(`${baseUrl}/_emulate/ledger?limit=20`).then((r) => r.json());    const tokenRequest = ledger.entries.find(      (entry) =>        entry.path === "/2/oauth2/token" &&        entry.request?.body?.grant_type === "client_credentials",    );     if (!resumed.ok) {      mcp.expect(Boolean(tokenRequest)).toBe(true);      mcp.expect(Object.hasOwn(tokenRequest.request.body, "client_secret")).toBe(false);    }     mcp.expect(resumed.ok).toBe(true);    mcp.expect(resumed.text).toContain('"status": "connected"');     mcp.expect(Boolean(tokenRequest)).toBe(true);    mcp.expect(tokenRequest.request.headers.authorization).toBe("[redacted]");    mcp.expect(Object.hasOwn(tokenRequest.request.body, "client_secret")).toBe(false);  },);