/**
 * Auth test fixtures — JWT tokens, user payloads, and password helpers.
 *
 * Usage:
 * ```ts
 * import { TEST_USERS, TEST_JWT_SECRET, createTestToken } from '@bytelyst/testing';
 * ```
 */

/** Test JWT secret — NEVER use in production */
export const TEST_JWT_SECRET = 'test-jwt-secret-32-chars-long!!';

/** Pre-built test user payloads */
export const TEST_USERS = {
  admin: {
    id: 'user-admin-001',
    email: 'admin@test.com',
    name: 'Test Admin',
    role: 'super_admin',
    productId: 'lysnrai',
  },
  viewer: {
    id: 'user-viewer-001',
    email: 'viewer@test.com',
    name: 'Test Viewer',
    role: 'viewer',
    productId: 'lysnrai',
  },
  user: {
    id: 'user-basic-001',
    email: 'user@test.com',
    name: 'Test User',
    role: 'user',
    productId: 'lysnrai',
  },
} as const;

export type TestUserKey = keyof typeof TEST_USERS;

/**
 * Create a minimal JWT-like token payload for testing (not cryptographically signed).
 * For actual JWT creation, use `@bytelyst/auth` createJwtUtils().
 */
export function createTestTokenPayload(userKey: TestUserKey = 'admin') {
  const user = TEST_USERS[userKey];
  return {
    sub: user.id,
    email: user.email,
    role: user.role,
    productId: user.productId,
    iss: 'test',
    iat: Math.floor(Date.now() / 1000),
    exp: Math.floor(Date.now() / 1000) + 3600,
  };
}
