Download src/lib/rbac.test.ts from Jessedbrown/ipa-activity-generator-ptbr: direct link, hf CLI and curl.
- Browser
- Download file 1.39 kB
-
https://huggingface.co/Jessedbrown/ipa-activity-generator-ptbr/resolve/main/src/lib/rbac.test.ts
- Command line
-
hf download hf://Jessedbrown/ipa-activity-generator-ptbr/src/lib/rbac.test.ts
-
curl -L -o rbac.test.ts https://huggingface.co/Jessedbrown/ipa-activity-generator-ptbr/resolve/main/src/lib/rbac.test.ts
1.39 kB
| import { Role } from "@prisma/client"; | |
| import type { Session } from "next-auth"; | |
| import { describe, expect, it } from "vitest"; | |
| import { requireRole } from "./rbac"; | |
| describe("requireRole", () => { | |
| const baseSession = { | |
| user: { | |
| id: "user-1", | |
| email: "user@example.com", | |
| orgId: "org-1", | |
| role: Role.ADMIN, | |
| name: "Usuário teste", | |
| }, | |
| expires: new Date(Date.now() + 60_000).toISOString(), | |
| } satisfies Session; | |
| it("permite acesso quando o papel é autorizado", () => { | |
| expect(requireRole(baseSession, [Role.ADMIN, Role.TEACHER])).toBe(true); | |
| }); | |
| it("lança erro quando não há sessão ativa", () => { | |
| expect(() => requireRole(null, [Role.ADMIN])).toThrow( | |
| "Usuário sem sessão ativa." | |
| ); | |
| }); | |
| it("lança erro quando o usuário não tem role definida", () => { | |
| const sessionWithoutRole: Session = { | |
| ...baseSession, | |
| user: { ...baseSession.user, role: null }, | |
| } as Session; | |
| expect(() => requireRole(sessionWithoutRole, [Role.ADMIN])).toThrow( | |
| "Usuário sem sessão ativa." | |
| ); | |
| }); | |
| it("bloqueia perfis sem permissão", () => { | |
| const teacherSession: Session = { | |
| ...baseSession, | |
| user: { ...baseSession.user, role: Role.TEACHER }, | |
| }; | |
| expect(() => requireRole(teacherSession, [Role.ADMIN])).toThrow( | |
| "Acesso negado para este perfil." | |
| ); | |
| }); | |
| }); | |