mirror of
https://github.com/alibaba/anyproxy.git
synced 2025-04-22 10:31:25 +00:00
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const { basicProxyRequest, proxyServerWithRule, } = require('../util.js');
|
|
|
|
const RULE_PAYLOAD = 'this is something in rule';
|
|
|
|
const rule = {
|
|
*beforeSendRequest(requestDetail) {
|
|
const requestOptions = requestDetail.requestOptions;
|
|
return {
|
|
requestOptions,
|
|
requestData: RULE_PAYLOAD,
|
|
};
|
|
},
|
|
|
|
*beforeDealHttpsRequest(requestDetail) {
|
|
return requestDetail.host.indexOf('httpbin.org') >= 0;
|
|
}
|
|
};
|
|
|
|
describe('Rule beforeDealHttpsRequest', () => {
|
|
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 replace the https request body', async () => {
|
|
const url = 'https://httpbin.org/put';
|
|
const payloadStream = fs.createReadStream(path.resolve(__dirname, '../fixtures/upload.txt'));
|
|
const postHeaders = {
|
|
anyproxy_header: 'header_value',
|
|
};
|
|
|
|
await basicProxyRequest(proxyHost, 'PUT', url, postHeaders, {}, payloadStream).then((result) => {
|
|
const proxyRes = result.response;
|
|
const body = JSON.parse(result.body);
|
|
expect(proxyRes.statusCode).toBe(200);
|
|
expect(body.data).toEqual(RULE_PAYLOAD);
|
|
expect(body.url.indexOf('/put')).toBeGreaterThan(0);
|
|
});
|
|
});
|
|
});
|