Files
stock-manager/tests/unit/lib/security.test.ts
T
aferrer f2b9239d82 test: add initial unit integration and e2e coverage
Adds the initial testing baseline for the project:

   Unit coverage:
   - Zod schemas for items, assignments, movements, categories, auth, recipients, users, and assets
   - password hashing and verification helpers
   - auth role helper functions

   Integration coverage with PostgreSQL Testcontainers:
   - item use-cases: create, duplicate names, delete constraints
   - assignment use-cases: create, insufficient stock, return, double return
   - asset use-cases: available/assigned creation and lifecycle transitions
   - user use-cases: create/update, uniqueness, admin safeguards, password reset
   - category use-cases: create/update/delete constraints
   - recipient use-cases: create/update and uniqueness constraints

   E2E smoke coverage with Playwright:
   - unauthenticated redirect to login
   - seeded admin login
   - dashboard load
   - admin users page
   - inventory items page
   - assignments page

   Also configures:
   - Vitest
   - Playwright
   - PostgreSQL Testcontainers helpers
   - deterministic E2E admin bootstrap
   - test artifact ignores

   Validation:
   - bun run test: 9 files / 37 tests passed
   - bun run test:e2e: 3 passed
   - bunx tsc --noEmit: passed
   - bunx prisma validate: passed
2026-06-07 04:14:01 +02:00

17 lines
640 B
TypeScript

import { describe, expect, it } from "vitest"
import { getPasswordHash, verifyPassword } from "@/lib/security"
describe("security helpers", () => {
it("hashes passwords and verifies the original plain password", async () => {
const hash = await getPasswordHash("secure-password")
expect(hash).not.toBe("secure-password")
await expect(verifyPassword("secure-password", hash)).resolves.toBe(true)
await expect(verifyPassword("wrong-password", hash)).resolves.toBe(false)
})
it("rejects empty passwords when hashing", async () => {
await expect(getPasswordHash("")).rejects.toThrow("Password is required")
})
})