@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
JavaScript
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