mirror of
https://github.com/alibaba/anyproxy.git
synced 2025-04-23 10:11:27 +00:00
61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
const { basicProxyRequest, proxyServerWithRule, } = require('../util.js');
|
|
|
|
const jestMockErrorFn = jest.fn();
|
|
const jestMockConnectErrorFn = jest.fn();
|
|
|
|
const ERROR_PAGE_IN_RULE = 'this is my error page';
|
|
const rule = {
|
|
onConnectError: jestMockConnectErrorFn,
|
|
*onError(requestDetail, error) {
|
|
jestMockErrorFn(requestDetail, error);
|
|
return {
|
|
response: {
|
|
statusCode: '200',
|
|
header: {},
|
|
body: ERROR_PAGE_IN_RULE,
|
|
}
|
|
};
|
|
},
|
|
*beforeDealHttpsRequest(requestDetail) {
|
|
return requestDetail.host.indexOf('intercept') === 0;
|
|
},
|
|
};
|
|
|
|
describe('Rule replaceResponseData', () => {
|
|
let proxyServer;
|
|
let proxyPort;
|
|
let proxyHost;
|
|
|
|
beforeAll(async () => {
|
|
proxyServer = await proxyServerWithRule(rule);
|
|
proxyPort = proxyServer.proxyPort;
|
|
proxyHost = `http://localhost:${proxyPort}`;
|
|
});
|
|
|
|
afterAll(() => {
|
|
return proxyServer && proxyServer.close();
|
|
});
|
|
|
|
it('should get error', async () => {
|
|
const url = 'https://intercept.anyproxy_not_exists.io/some_path';
|
|
const result = await basicProxyRequest(proxyHost, 'GET', url);
|
|
const proxyRes = result.response;
|
|
const body = result.body;
|
|
expect(proxyRes.statusCode).toBe(200);
|
|
expect(body).toBe(ERROR_PAGE_IN_RULE);
|
|
expect(jestMockErrorFn.mock.calls.length).toBe(1);
|
|
});
|
|
|
|
it('should get connec error', async () => {
|
|
const url = 'https://anyproxy_not_exists.io/do_not_intercept';
|
|
let e;
|
|
try {
|
|
await basicProxyRequest(proxyHost, 'GET', url);
|
|
} catch (err) {
|
|
e = err;
|
|
}
|
|
expect(e).not.toBeUndefined();
|
|
expect(jestMockConnectErrorFn.mock.calls.length).toBe(1);
|
|
});
|
|
});
|