126 lines · 4.0 KB · TypeScript
RawDownload
import { describe, expect, it } from "@effect/vitest";import { AuthTemplateSlug } from "@executor-js/sdk/shared"; import {  authMethodsFromConfig,  authenticationFromEditorValue,  editorValueFromAuthentication,  templateFromPlacements,} from "./auth-method-config";import type { Authentication } from "../sdk/types"; describe("authMethodsFromConfig", () => {  it("projects oauth templates with their stored endpoints + scopes", () => {    const methods = authMethodsFromConfig([      {        slug: AuthTemplateSlug.make("oauth"),        kind: "oauth2",        authorizationUrl: "https://x.example/auth",        tokenUrl: "https://x.example/token",        resource: "https://api.example",        scopes: ["read"],        supportsClientIdMetadataDocument: true,      },    ]);    expect(methods[0]).toMatchObject({      id: "oauth",      kind: "oauth",      source: "spec",      oauth: {        authorizationUrl: "https://x.example/auth",        tokenUrl: "https://x.example/token",        resource: "https://api.example",        scopes: ["read"],        supportsClientIdMetadataDocument: true,      },    });  });   it("projects apikey methods, multi-placement and multi-variable intact", () => {    const methods = authMethodsFromConfig([      {        slug: "custom_dd",        kind: "apikey",        placements: [          { carrier: "header", name: "DD-API-KEY", variable: "dd_api_key" },          { carrier: "query", name: "team_id", variable: "team_id" },        ],      },    ]);    expect(methods[0]).toMatchObject({ id: "custom_dd", kind: "apikey", source: "custom" });    expect(methods[0]?.placements).toEqual([      { carrier: "header", name: "DD-API-KEY", prefix: "", variable: "dd_api_key" },      { carrier: "query", name: "team_id", prefix: "", variable: "team_id" },    ]);  });}); describe("editor round-trip", () => {  it("apikey stored → editor → stored preserves placements and shared token input", () => {    const stored: Authentication = {      slug: "bearer",      kind: "apikey",      placements: [        { carrier: "header", name: "Authorization", prefix: "Bearer " },        { carrier: "query", name: "token" },      ],    };    const editor = editorValueFromAuthentication(stored);    const back = authenticationFromEditorValue(editor, "bearer");    expect(back).toEqual(stored);  });   it("oauth stored → editor carries endpoints + scopes", () => {    expect(      editorValueFromAuthentication({        slug: AuthTemplateSlug.make("oauth"),        kind: "oauth2",        authorizationUrl: "https://x.example/auth",        tokenUrl: "https://x.example/token",        resource: "https://api.example",        scopes: ["a", "b"],        supportsClientIdMetadataDocument: true,      }),    ).toEqual({      kind: "oauth",      authorizationUrl: "https://x.example/auth",      tokenUrl: "https://x.example/token",      resource: "https://api.example",      scopes: ["a", "b"],      supportsClientIdMetadataDocument: true,    });  });   it("none editor value yields no method", () => {    expect(authenticationFromEditorValue({ kind: "none" })).toBeNull();  });}); describe("templateFromPlacements", () => {  it("multi-placement custom methods assign distinct name-derived variables", () => {    expect(      templateFromPlacements(        [          { carrier: "header", name: "DD-API-KEY", prefix: "" },          { carrier: "header", name: "DD-APPLICATION-KEY", prefix: "" },        ],        "custom_dd",      ),    ).toEqual({      slug: "custom_dd",      kind: "apikey",      placements: [        { carrier: "header", name: "DD-API-KEY", variable: "dd_api_key" },        { carrier: "header", name: "DD-APPLICATION-KEY", variable: "dd_application_key" },      ],    });  });   it("a lone placement keeps the canonical token input (stored absent)", () => {    expect(templateFromPlacements([{ carrier: "query", name: "api_key", prefix: "" }])).toEqual({      slug: "",      kind: "apikey",      placements: [{ carrier: "query", name: "api_key" }],    });  });});