UNPKG

@pulzar/core

Version:

Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support

90 lines 2.84 kB
import { JWTGuard } from "../jwt.guard"; import { SessionGuard, MemorySessionStore } from "../session.guard"; import { randomUUID } from "crypto"; export class AuthTestUtils { jwtGuard; sessionGuard; testStore; constructor(options = {}) { this.jwtGuard = new JWTGuard({ secrets: options.jwtSecret || "test-jwt-secret", algorithm: "HS256", }); this.testStore = new MemorySessionStore(); this.sessionGuard = new SessionGuard({ store: this.testStore, secret: options.sessionSecret || "test-session-secret", name: "testSessionId", maxAge: 24 * 60 * 60 * 1000, secure: false, httpOnly: true, sameSite: "lax", path: "/", rolling: true, }); } /** * Create test JWT token */ async createTestJWT(subject = "test-user", overrides = {}) { const payload = { sub: subject, roles: overrides.roles || ["user"], permissions: overrides.permissions || ["read"], ...overrides, }; return this.jwtGuard.generateToken(payload); } /** * Create test session */ async createTestSession(userId = "test-user", sessionData = {}) { const data = { roles: ["user"], permissions: ["read"], ...sessionData, }; return this.sessionGuard.createSession(userId, data); } /** * Create test user object */ createTestUser(overrides = {}) { return { id: overrides.id || randomUUID(), email: overrides.email || "test@example.com", username: overrides.username || "testuser", roles: overrides.roles || ["user"], permissions: overrides.permissions || ["read"], metadata: overrides.metadata || {}, createdAt: overrides.createdAt || new Date(), updatedAt: overrides.updatedAt || new Date(), lastLoginAt: overrides.lastLoginAt, isActive: overrides.isActive ?? true, isVerified: overrides.isVerified ?? true, }; } /** * Clean up test data */ async cleanup() { await this.testStore.clear(); } } /** * Default test utilities instance */ export const authTestUtils = new AuthTestUtils(); /** * Helper functions for common test scenarios */ export async function createTestJWT(subject, overrides) { return authTestUtils.createTestJWT(subject, overrides); } export async function createTestSession(userId, data) { return authTestUtils.createTestSession(userId, data); } export function createTestUser(overrides) { return authTestUtils.createTestUser(overrides); } //# sourceMappingURL=auth-test-utils.js.map