|
1 | 1 | import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest' |
2 | 2 |
|
| 3 | +const { mockIsDev, mockIsTest } = vi.hoisted(() => ({ |
| 4 | + mockIsDev: vi.fn(() => false), |
| 5 | + mockIsTest: vi.fn(() => false), |
| 6 | +})) |
| 7 | + |
| 8 | +// Mock server environment helpers that get re-exported through environmentApi |
| 9 | +vi.mock('@lib/config/environmentServer', () => ({ |
| 10 | + isCI: vi.fn(() => false), |
| 11 | + isDev: mockIsDev, |
| 12 | + isE2eTest: vi.fn(() => false), |
| 13 | + isGitHub: vi.fn(() => false), |
| 14 | + isProd: vi.fn(() => true), |
| 15 | + isTest: mockIsTest, |
| 16 | + isUnitTest: vi.fn(() => false), |
| 17 | + isVercel: vi.fn(() => false), |
| 18 | +})) |
| 19 | + |
3 | 20 | // Mock environment utilities BEFORE importing the module under test |
4 | | -vi.mock('@pages/api/_environment', () => ({ |
| 21 | +vi.mock('@pages/api/_environment/environmentApi', () => ({ |
5 | 22 | getUpstashApiToken: vi.fn(() => 'test-token'), |
6 | 23 | getUpstashApiUrl: vi.fn(() => 'https://test-redis.upstash.io'), |
7 | | - isDev: vi.fn(() => false), |
8 | | - isTest: vi.fn(() => false), |
| 24 | + isDev: mockIsDev, |
| 25 | + isTest: mockIsTest, |
9 | 26 | })) |
10 | 27 |
|
11 | 28 | import { rateLimiters, checkRateLimit, checkContactRateLimit } from '@pages/api/_utils/rateLimit' |
@@ -94,8 +111,11 @@ describe('Rate Limit Utils', () => { |
94 | 111 | config: {}, |
95 | 112 | } |
96 | 113 |
|
97 | | - // Set the rate limiter for tests |
98 | | - Object.assign(rateLimiters.consent, mockRateLimiter) |
| 114 | + // Ensure each exported limiter uses the shared mock implementation |
| 115 | + Object.keys(rateLimiters).forEach((key) => { |
| 116 | + const mapKey = key as keyof typeof rateLimiters |
| 117 | + Object.assign(rateLimiters[mapKey], mockRateLimiter) |
| 118 | + }) |
99 | 119 | }) |
100 | 120 |
|
101 | 121 | it('should return success when rate limit is not exceeded', async () => { |
|
0 commit comments