test-password-auth.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { eq } from 'drizzle-orm';
  2. import { db } from '../src/db';
  3. import { users } from '../src/db/schema/auth';
  4. import { isPasswordHash, verifyPassword } from '../src/lib/auth/password';
  5. async function runTest() {
  6. console.log('🔑 Testing password hashing...');
  7. const [admin] = await db
  8. .select()
  9. .from(users)
  10. .where(eq(users.email, 'admin@ekb.com'))
  11. .limit(1);
  12. if (!admin) {
  13. console.error('❌ admin@ekb.com not found. Run npx tsx src/db/seed.ts first.');
  14. process.exit(1);
  15. }
  16. if (!isPasswordHash(admin.passwordHash)) {
  17. console.error('❌ Admin password is not stored as a bcrypt hash.');
  18. process.exit(1);
  19. }
  20. const validPassword = await verifyPassword('hashed_password_here', admin.passwordHash);
  21. const invalidPassword = await verifyPassword('wrong-password', admin.passwordHash);
  22. if (!validPassword || invalidPassword) {
  23. console.error('❌ Password verification returned unexpected results.');
  24. process.exit(1);
  25. }
  26. console.log('✅ Password hashing checks passed.');
  27. process.exit(0);
  28. }
  29. runTest().catch((error) => {
  30. console.error('❌ Test failed with error:', error);
  31. process.exit(1);
  32. });