forked from Yara724/api
87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
import { Types } from "mongoose";
|
|
import {
|
|
blameCaseInitiatedByFieldExpert,
|
|
claimCaseInitiatedByFieldExpert,
|
|
} from "./tenant-scope";
|
|
|
|
describe("field expert ownership helpers", () => {
|
|
const expertId = new Types.ObjectId();
|
|
const otherExpertId = new Types.ObjectId();
|
|
const blameId = new Types.ObjectId();
|
|
|
|
describe("blameCaseInitiatedByFieldExpert", () => {
|
|
it("matches when initiatedByFieldExpertId equals actor.sub (string)", () => {
|
|
expect(
|
|
blameCaseInitiatedByFieldExpert(
|
|
{
|
|
expertInitiated: true,
|
|
initiatedByFieldExpertId: expertId,
|
|
},
|
|
{ sub: String(expertId) },
|
|
),
|
|
).toBe(true);
|
|
});
|
|
|
|
it("does not require actor.role on JWT", () => {
|
|
expect(
|
|
blameCaseInitiatedByFieldExpert(
|
|
{
|
|
expertInitiated: true,
|
|
initiatedByFieldExpertId: expertId,
|
|
},
|
|
{ sub: String(expertId) },
|
|
),
|
|
).toBe(true);
|
|
});
|
|
|
|
it("rejects another expert", () => {
|
|
expect(
|
|
blameCaseInitiatedByFieldExpert(
|
|
{
|
|
expertInitiated: true,
|
|
initiatedByFieldExpertId: expertId,
|
|
},
|
|
{ sub: String(otherExpertId) },
|
|
),
|
|
).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("claimCaseInitiatedByFieldExpert", () => {
|
|
it("matches claim.initiatedByFieldExpertId", () => {
|
|
expect(
|
|
claimCaseInitiatedByFieldExpert(
|
|
{ initiatedByFieldExpertId: expertId },
|
|
{ sub: String(expertId) },
|
|
),
|
|
).toBe(true);
|
|
});
|
|
|
|
it("matches via linked expert-initiated blame when claim field is missing", () => {
|
|
expect(
|
|
claimCaseInitiatedByFieldExpert(
|
|
{ blameRequestId: blameId },
|
|
{ sub: String(expertId) },
|
|
{
|
|
expertInitiated: true,
|
|
initiatedByFieldExpertId: expertId,
|
|
},
|
|
),
|
|
).toBe(true);
|
|
});
|
|
|
|
it("rejects when neither claim nor blame links to actor", () => {
|
|
expect(
|
|
claimCaseInitiatedByFieldExpert(
|
|
{ blameRequestId: blameId },
|
|
{ sub: String(expertId) },
|
|
{
|
|
expertInitiated: true,
|
|
initiatedByFieldExpertId: otherExpertId,
|
|
},
|
|
),
|
|
).toBe(false);
|
|
});
|
|
});
|
|
});
|