File size: 1,664 Bytes
bf48b89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { afterEach, describe, expect, it, vi } from 'vitest';

afterEach(() => {
    vi.resetModules();
    vi.clearAllMocks();
    vi.unmock('header-generator');
});

describe('header-generator (mocked)', () => {
    it('retries invalid safari user agents', async () => {
        const headersQueue = [{ 'user-agent': 'Mozilla/5.0 Applebot Safari' }, { 'user-agent': 'Mozilla/5.0 Safari' }];

        vi.doMock('header-generator', () => ({
            HeaderGenerator: class {
                getHeaders() {
                    return headersQueue.shift() ?? { 'user-agent': 'Mozilla/5.0 Safari' };
                }
            },
            PRESETS: {
                MODERN_MACOS_CHROME: { mock: true },
            },
        }));

        const { generateHeaders } = await import('@/utils/header-generator');
        const headers = generateHeaders({ preset: 'safari' } as any);

        expect(headers['user-agent']).toContain('Safari');
        expect(headersQueue.length).toBe(0);
    });

    it('accepts firefox user agents', async () => {
        const headersQueue = [{ 'user-agent': 'Mozilla/5.0 Firefox' }];

        vi.doMock('header-generator', () => ({
            HeaderGenerator: class {
                getHeaders() {
                    return headersQueue.shift() ?? { 'user-agent': 'Mozilla/5.0 Firefox' };
                }
            },
            PRESETS: {
                MODERN_MACOS_CHROME: { mock: true },
            },
        }));

        const { generateHeaders } = await import('@/utils/header-generator');
        const headers = generateHeaders();

        expect(headers['user-agent']).toContain('Firefox');
    });
});