import { describe, expect, it } from "@effect/vitest";import { ScopeId } from "@executor-js/sdk"; import { credentialTargetScopeOptions, normalizeCredentialTargetScope,} from "./credential-target-scope"; describe("credential target scope options", () => { it("offers personal and organization targets for a shared source scope", () => { const userScope = ScopeId.make("user"); const orgScope = ScopeId.make("org"); expect( credentialTargetScopeOptions({ sourceScope: orgScope, userScope, }).map((option) => ({ scopeId: option.scopeId, label: option.label })), ).toEqual([ { scopeId: userScope, label: "Personal" }, { scopeId: orgScope, label: "Organization" }, ]); }); it("only offers personal credentials when the source is personal", () => { const userScope = ScopeId.make("user"); expect( credentialTargetScopeOptions({ sourceScope: userScope, userScope, }).map((option) => ({ scopeId: option.scopeId, label: option.label })), ).toEqual([{ scopeId: userScope, label: "Personal" }]); }); it("falls back to the default target when the selected scope is no longer valid", () => { const userScope = ScopeId.make("user"); const orgScope = ScopeId.make("org"); const otherScope = ScopeId.make("other"); const options = credentialTargetScopeOptions({ sourceScope: orgScope, userScope, }); expect(normalizeCredentialTargetScope(otherScope, options)).toBe(userScope); expect(normalizeCredentialTargetScope(orgScope, options)).toBe(orgScope); });});
import { describe, expect, it } from "@effect/vitest";
import { ScopeId } from "@executor-js/sdk";
import {
credentialTargetScopeOptions,
normalizeCredentialTargetScope,
} from "./credential-target-scope";
describe("credential target scope options", () => {
it("offers personal and organization targets for a shared source scope", () => {
const userScope = ScopeId.make("user");
const orgScope = ScopeId.make("org");
expect(
credentialTargetScopeOptions({
sourceScope: orgScope,
userScope,
}).map((option) => ({ scopeId: option.scopeId, label: option.label })),
).toEqual([
{ scopeId: userScope, label: "Personal" },
{ scopeId: orgScope, label: "Organization" },
]);
});
it("only offers personal credentials when the source is personal", () => {
const userScope = ScopeId.make("user");
expect(
credentialTargetScopeOptions({
sourceScope: userScope,
userScope,
}).map((option) => ({ scopeId: option.scopeId, label: option.label })),
).toEqual([{ scopeId: userScope, label: "Personal" }]);
});
it("falls back to the default target when the selected scope is no longer valid", () => {
const userScope = ScopeId.make("user");
const orgScope = ScopeId.make("org");
const otherScope = ScopeId.make("other");
const options = credentialTargetScopeOptions({
sourceScope: orgScope,
userScope,
});
expect(normalizeCredentialTargetScope(otherScope, options)).toBe(userScope);
expect(normalizeCredentialTargetScope(orgScope, options)).toBe(orgScope);
});
});