Files
apify--crawlee/test/browser-pool/anonymize-proxy-sugar.test.ts
2026-07-13 13:23:39 +08:00

56 lines
2.3 KiB
TypeScript

import { anonymizeProxy } from 'proxy-chain';
import { vi } from 'vitest';
import { anonymizeProxySugar } from '../../packages/browser-pool/src/anonymize-proxy';
describe('anonymizeProxySugar', () => {
// Mock the anonymizeProxy function from proxy-chain
beforeEach(() => {
vi.mock('proxy-chain', () => ({
anonymizeProxy: vi.fn((opts) => Promise.resolve(`anonymized-${opts.url}`)),
}));
});
afterEach(() => {
vi.clearAllMocks();
});
test.each([
['http://username:password@proxy:1000', 'http://username:password@proxy:1000'],
['http://username:password@proxy:1000/', 'http://username:password@proxy:1000'],
['socks://username:password@proxy:1000', 'socks://username:password@proxy:1000'],
['socks://username:password@proxy:1000/', 'socks://username:password@proxy:1000'],
])('should call anonymizeProxy from proxy-chain with correctly pre-processed URL: %s', async (input, expectedOutput) => {
const [anonymized] = await anonymizeProxySugar(input);
expect(anonymizeProxy).toHaveBeenCalledWith(expect.objectContaining({ url: expectedOutput }));
expect(anonymized).toBeTypeOf('string');
});
test('should pass ignoreProxyCertificate to anonymizeProxy', async () => {
await anonymizeProxySugar('http://username:password@proxy:1000', undefined, undefined, {
ignoreProxyCertificate: true,
});
expect(anonymizeProxy).toHaveBeenCalledWith(expect.objectContaining({ ignoreProxyCertificate: true }));
});
test('should anonymize proxy without credentials when ignoreProxyCertificate is set', async () => {
const [anonymized] = await anonymizeProxySugar('http://proxy:1000', undefined, undefined, {
ignoreProxyCertificate: true,
});
expect(anonymizeProxy).toHaveBeenCalledWith(
expect.objectContaining({ url: 'http://proxy:1000', ignoreProxyCertificate: true }),
);
expect(anonymized).toBeTypeOf('string');
});
test('should not anonymize proxy without credentials and without ignoreProxyCertificate', async () => {
const [anonymized] = await anonymizeProxySugar('http://proxy:1000');
expect(anonymizeProxy).not.toHaveBeenCalled();
expect(anonymized).toBeUndefined();
});
});