import type { Context } from 'hono'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import type { HonoEnv } from '../src/app'; import { hasValidAuthToken } from '../src/lib/utils'; describe('hasValidAuthToken', () => { // Mock Context object let mockContext: Context; const validToken = 'valid-token-12345'; beforeEach(() => { // Reset mocks vi.resetAllMocks(); // Create a mock context with request headers and environment mockContext = { req: { header: vi.fn(), }, env: { API_TOKEN: validToken, }, } as unknown as Context; }); it('should return true when Authorization header has the correct Bearer token', () => { // Setup header mock to return the valid token mockContext.req.header = vi.fn().mockImplementation((name: string) => { if (name === 'Authorization') return `Bearer ${validToken}`; return undefined; }); // Call the function const result = hasValidAuthToken(mockContext); // Assert expect(result).toBe(true); expect(mockContext.req.header).toHaveBeenCalledWith('Authorization'); }); it('should return false when Authorization header is missing', () => { // Setup header mock to return undefined mockContext.req.header = vi.fn().mockImplementation((name: string) => { return undefined; }); // Call the function const result = hasValidAuthToken(mockContext); // Assert expect(result).toBe(false); expect(mockContext.req.header).toHaveBeenCalledWith('Authorization'); }); it('should return false when Authorization header has incorrect token value', () => { // Setup header mock to return an invalid token mockContext.req.header = vi.fn().mockImplementation((name: string) => { if (name === 'Authorization') return 'Bearer wrong-token'; return undefined; }); // Call the function const result = hasValidAuthToken(mockContext); // Assert expect(result).toBe(false); expect(mockContext.req.header).toHaveBeenCalledWith('Authorization'); }); it('should return false when Authorization header uses a scheme other than Bearer', () => { // Setup header mock to return a non-Bearer token mockContext.req.header = vi.fn().mockImplementation((name: string) => { if (name === 'Authorization') return `Basic ${validToken}`; return undefined; }); // Call the function const result = hasValidAuthToken(mockContext); // Assert expect(result).toBe(false); expect(mockContext.req.header).toHaveBeenCalledWith('Authorization'); }); it('should return false when API_TOKEN environment variable is not set or empty', () => { // Mock the environment with an empty API_TOKEN mockContext.env.API_TOKEN = ''; // Setup header mock to return a valid token format mockContext.req.header = vi.fn().mockImplementation((name: string) => { if (name === 'Authorization') return `Bearer ${validToken}`; return undefined; }); // Call the function const result = hasValidAuthToken(mockContext); // Assert expect(result).toBe(false); expect(mockContext.req.header).toHaveBeenCalledWith('Authorization'); }); });