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", scopes: ["read"], }, ]); expect(methods[0]).toMatchObject({ id: "oauth", kind: "oauth", source: "spec", oauth: { authorizationUrl: "https://x.example/auth", tokenUrl: "https://x.example/token", scopes: ["read"], }, }); }); 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", scopes: ["a", "b"], }), ).toEqual({ kind: "oauth", authorizationUrl: "https://x.example/auth", tokenUrl: "https://x.example/token", scopes: ["a", "b"], }); }); 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" }], }); });});
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",
scopes: ["read"],
},
]);
expect(methods[0]).toMatchObject({
id: "oauth",
kind: "oauth",
source: "spec",
oauth: {
authorizationUrl: "https://x.example/auth",
tokenUrl: "https://x.example/token",
scopes: ["read"],
},
});
});
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",
scopes: ["a", "b"],
}),
).toEqual({
kind: "oauth",
authorizationUrl: "https://x.example/auth",
tokenUrl: "https://x.example/token",
scopes: ["a", "b"],
});
});
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" }],
});
});
});