56 lines
2.3 KiB
TypeScript
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();
|
|
});
|
|
});
|