31 lines
1.7 KiB
TypeScript
31 lines
1.7 KiB
TypeScript
import { existsSync } from "node:fs";
|
|
import { describe, expect, it } from "vitest";
|
|
import { resolveRepoPath } from "~/utils/testing/repoPaths";
|
|
import { passwordSafeAdminPath, passwordSafeExportPath, passwordSafePath, passwordSafeRevealPath, passwordSafeVaultPath } from "./passwordSafeRoutePaths";
|
|
|
|
describe("password-safe canonical route paths", () => {
|
|
it("keeps every password-safe surface outside the HR route tree", () => {
|
|
expect(passwordSafePath("acme")).toBe("/acme/passwords");
|
|
expect(passwordSafeVaultPath("acme", "vault-1")).toBe("/acme/passwords/vault-1");
|
|
expect(passwordSafeRevealPath("acme", "vault-1")).toBe("/acme/passwords/vault-1/reveal");
|
|
expect(passwordSafeExportPath("acme", "vault-1")).toBe("/acme/passwords/vault-1/export");
|
|
expect(passwordSafeAdminPath("acme")).toBe("/acme/passwords/admin");
|
|
});
|
|
|
|
it("registers canonical routes and explicit compatibility redirects", () => {
|
|
[
|
|
"apps/web/app/routes/app.$tenant/passwords._index.tsx",
|
|
"apps/web/app/routes/app.$tenant/passwords.$vaultId._index.tsx",
|
|
"apps/web/app/routes/app.$tenant/passwords.$vaultId.reveal.tsx",
|
|
"apps/web/app/routes/app.$tenant/passwords.$vaultId.export.tsx",
|
|
"apps/web/app/routes/app.$tenant/passwords.admin.tsx",
|
|
].forEach((routeFile) => expect(existsSync(resolveRepoPath(routeFile)), routeFile).toBe(true));
|
|
|
|
[
|
|
"apps/web/app/routes/app.$tenant/hr/password-safe._index.tsx",
|
|
"apps/web/app/routes/app.$tenant/hr/password-safe.$vaultId._index.tsx",
|
|
"apps/web/app/routes/app.$tenant/hr/admin.password-safe._index.tsx",
|
|
].forEach((legacyRouteFile) => expect(existsSync(resolveRepoPath(legacyRouteFile)), legacyRouteFile).toBe(true));
|
|
});
|
|
});
|