anyproxy/test/rule/beforeDealHttpsRequest.spec.js

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);
});
});
});