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
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
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")
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user