@pact-foundation/pact 12.3.0 → 12.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/package.json +3 -2
- package/src/dsl/verifier/proxy/parseBody.d.ts +1 -1
- package/src/dsl/verifier/proxy/parseBody.js +5 -8
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.spec.js +16 -47
- package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.js +2 -11
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.d.ts +4 -0
- package/src/dsl/verifier/proxy/proxyRequest.js +23 -0
- package/src/dsl/verifier/proxy/proxyRequest.js.map +1 -0
- package/src/dsl/verifier/proxy/proxyRequest.spec.d.ts +1 -0
- package/src/dsl/verifier/proxy/proxyRequest.spec.js +100 -0
- package/src/dsl/verifier/proxy/proxyRequest.spec.js.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [12.4.0](https://github.com/pact-foundation/pact-js/compare/v12.3.1...v12.4.0) (2024-03-25)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **corporate proxy:** support in verifier ([f3ec1be](https://github.com/pact-foundation/pact-js/commit/f3ec1be2029c365e1888798f8a78935a0ed3f74c))
|
|
11
|
+
|
|
12
|
+
### [12.3.1](https://github.com/pact-foundation/pact-js/compare/v12.3.0...v12.3.1) (2024-03-25)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Fixes and Improvements
|
|
16
|
+
|
|
17
|
+
* update to latest pact-core 14.3.3 ([34d8a4b](https://github.com/pact-foundation/pact-js/commit/34d8a4bc9fba6f98590509e1bb1c78b3377792e5))
|
|
18
|
+
|
|
5
19
|
## [12.3.0](https://github.com/pact-foundation/pact-js/compare/v12.2.0...v12.3.0) (2024-02-28)
|
|
6
20
|
|
|
7
21
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pact-foundation/pact",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.4.0",
|
|
4
4
|
"description": "Pact for all things Javascript",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
]
|
|
96
96
|
},
|
|
97
97
|
"dependencies": {
|
|
98
|
-
"@pact-foundation/pact-core": "^14.3.
|
|
98
|
+
"@pact-foundation/pact-core": "^14.3.3",
|
|
99
99
|
"@types/express": "^4.17.11",
|
|
100
100
|
"axios": "^1.6.1",
|
|
101
101
|
"body-parser": "^1.20.0",
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"graphql": "^14.0.0",
|
|
105
105
|
"graphql-tag": "^2.9.1",
|
|
106
106
|
"http-proxy": "^1.18.1",
|
|
107
|
+
"https-proxy-agent": "^7.0.4",
|
|
107
108
|
"js-base64": "^3.6.1",
|
|
108
109
|
"lodash": "^4.17.21",
|
|
109
110
|
"lodash.isfunction": "3.0.8",
|
|
@@ -4,5 +4,5 @@ import * as http from 'http';
|
|
|
4
4
|
interface ReqBodyExtended extends http.IncomingMessage {
|
|
5
5
|
body?: Buffer | Record<string, unknown>;
|
|
6
6
|
}
|
|
7
|
-
export declare const parseBody: (
|
|
7
|
+
export declare const parseBody: (req: ReqBodyExtended) => Buffer;
|
|
8
8
|
export {};
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseBody = void 0;
|
|
4
|
-
var parseBody = function (
|
|
4
|
+
var parseBody = function (req) {
|
|
5
|
+
var bodyData = Buffer.alloc(0);
|
|
5
6
|
if (!req.body || !Object.keys(req.body).length) {
|
|
6
|
-
return;
|
|
7
|
+
return bodyData;
|
|
7
8
|
}
|
|
8
|
-
var bodyData;
|
|
9
9
|
if (Buffer.isBuffer(req.body)) {
|
|
10
10
|
bodyData = req.body;
|
|
11
11
|
}
|
|
12
12
|
else if (typeof req.body === 'object') {
|
|
13
|
-
bodyData = JSON.stringify(req.body);
|
|
14
|
-
}
|
|
15
|
-
if (bodyData) {
|
|
16
|
-
proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
|
|
17
|
-
proxyReq.write(bodyData);
|
|
13
|
+
bodyData = Buffer.from(JSON.stringify(req.body));
|
|
18
14
|
}
|
|
15
|
+
return bodyData;
|
|
19
16
|
};
|
|
20
17
|
exports.parseBody = parseBody;
|
|
21
18
|
//# sourceMappingURL=parseBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseBody.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/parseBody.ts"],"names":[],"mappings":";;;AAMO,IAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"parseBody.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/parseBody.ts"],"names":[],"mappings":";;;AAMO,IAAM,SAAS,GAAG,UAAC,GAAoB;IAC5C,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/B,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;QAC9C,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;KACrB;SAAM,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;QACvC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAClD;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAdW,QAAA,SAAS,aAcpB"}
|
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -64,51 +41,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
64
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
42
|
var chai_1 = __importDefault(require("chai"));
|
|
66
43
|
var chai_as_promised_1 = __importDefault(require("chai-as-promised"));
|
|
67
|
-
var sinon_1 = __importDefault(require("sinon"));
|
|
68
|
-
var http = __importStar(require("http"));
|
|
69
44
|
var parseBody_1 = require("./parseBody");
|
|
70
45
|
chai_1.default.use(chai_as_promised_1.default);
|
|
71
46
|
var expect = chai_1.default.expect;
|
|
72
47
|
describe('Verifier', function () {
|
|
73
|
-
afterEach(function () {
|
|
74
|
-
sinon_1.default.restore();
|
|
75
|
-
});
|
|
76
48
|
describe('#parseBody', function () {
|
|
77
|
-
var proxyReq;
|
|
78
|
-
beforeEach(function () {
|
|
79
|
-
proxyReq = sinon_1.default.createStubInstance(http.ClientRequest);
|
|
80
|
-
});
|
|
81
49
|
describe('when request body exists', function () {
|
|
82
|
-
it('it
|
|
83
|
-
var req;
|
|
50
|
+
it('it returns the request body buffer', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
51
|
+
var req, body;
|
|
84
52
|
return __generator(this, function (_a) {
|
|
85
53
|
req = { body: '' };
|
|
86
54
|
req.body = Buffer.from('foo');
|
|
87
|
-
(0, parseBody_1.parseBody)(
|
|
88
|
-
expect(
|
|
89
|
-
expect(
|
|
55
|
+
body = (0, parseBody_1.parseBody)(req);
|
|
56
|
+
expect(body).to.be.instanceOf(Buffer);
|
|
57
|
+
expect(body.toString()).to.eq('foo');
|
|
90
58
|
return [2 /*return*/];
|
|
91
59
|
});
|
|
92
60
|
}); });
|
|
93
|
-
it('it
|
|
94
|
-
var req;
|
|
61
|
+
it('it returns a buffer of the request body object', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
62
|
+
var req, body;
|
|
95
63
|
return __generator(this, function (_a) {
|
|
96
64
|
req = { body: { foo: 'bar' } };
|
|
97
|
-
(0, parseBody_1.parseBody)(
|
|
98
|
-
expect(
|
|
99
|
-
expect(
|
|
65
|
+
body = (0, parseBody_1.parseBody)(req);
|
|
66
|
+
expect(body).to.be.instanceOf(Buffer);
|
|
67
|
+
expect(body.toString()).to.eq(JSON.stringify(req.body));
|
|
100
68
|
return [2 /*return*/];
|
|
101
69
|
});
|
|
102
70
|
}); });
|
|
103
71
|
});
|
|
104
72
|
describe('when request body does not exist', function () {
|
|
105
|
-
it('
|
|
106
|
-
var req;
|
|
73
|
+
it('returns an empty buffer', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
74
|
+
var req, body;
|
|
107
75
|
return __generator(this, function (_a) {
|
|
108
76
|
req = 'foo';
|
|
109
|
-
(0, parseBody_1.parseBody)(
|
|
110
|
-
expect(
|
|
111
|
-
expect(
|
|
77
|
+
body = (0, parseBody_1.parseBody)(req);
|
|
78
|
+
expect(body).to.be.instanceOf(Buffer);
|
|
79
|
+
expect(body).to.not.have.length;
|
|
80
|
+
expect(body.toString()).to.be.empty;
|
|
112
81
|
return [2 /*return*/];
|
|
113
82
|
});
|
|
114
83
|
}); });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseBody.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/parseBody.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseBody.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/parseBody.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAwB;AACxB,sEAA8C;AAE9C,yCAAwC;AAExC,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AAEjB,IAAA,MAAM,GAAK,cAAI,OAAT,CAAU;AAExB,QAAQ,CAAC,UAAU,EAAE;IACnB,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,0BAA0B,EAAE;YACnC,EAAE,CAAC,oCAAoC,EAAE;;;oBACjC,GAAG,GAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;oBAC9B,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAExB,IAAI,GAAG,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;;;iBACtC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE;;;oBAC7C,GAAG,GAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;oBAEpC,IAAI,GAAG,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;;;iBACzD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kCAAkC,EAAE;YAC3C,EAAE,CAAC,yBAAyB,EAAE;;;oBACtB,GAAG,GAAQ,KAAK,CAAC;oBAEjB,IAAI,GAAG,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;;;iBACrC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -35,12 +35,8 @@ var logger_1 = __importDefault(require("../../../common/logger"));
|
|
|
35
35
|
var stateHandler_1 = require("./stateHandler/stateHandler");
|
|
36
36
|
var hooks_1 = require("./hooks");
|
|
37
37
|
var tracer_1 = require("./tracer");
|
|
38
|
-
var parseBody_1 = require("./parseBody");
|
|
39
38
|
var messages_1 = require("./messages");
|
|
40
|
-
|
|
41
|
-
// if there are no targets to proxy (e.g. in the case
|
|
42
|
-
// of message pact
|
|
43
|
-
var defaultBaseURL = function () { return 'http://127.0.0.1/'; };
|
|
39
|
+
var proxyRequest_1 = require("./proxyRequest");
|
|
44
40
|
// Listens for the server start event
|
|
45
41
|
var waitForServerReady = function (server) {
|
|
46
42
|
return new Promise(function (resolve, reject) {
|
|
@@ -87,13 +83,8 @@ var createProxy = function (config, stateSetupPath, messageTransportPath) {
|
|
|
87
83
|
// Proxy server will respond to Verifier process
|
|
88
84
|
app.all('/*', function (req, res) {
|
|
89
85
|
logger_1.default.debug("Proxying ".concat(req.method, ": ").concat(req.path));
|
|
90
|
-
proxy.web(req, res,
|
|
91
|
-
changeOrigin: config.changeOrigin === true,
|
|
92
|
-
secure: config.validateSSL === true,
|
|
93
|
-
target: config.providerBaseUrl || defaultBaseURL(),
|
|
94
|
-
});
|
|
86
|
+
proxy.web(req, res, (0, proxyRequest_1.toServerOptions)(config, req));
|
|
95
87
|
});
|
|
96
|
-
proxy.on('proxyReq', function (proxyReq, req) { return (0, parseBody_1.parseBody)(proxyReq, req); });
|
|
97
88
|
// TODO: node is now using ipv6 as a default. This should be customised
|
|
98
89
|
return http
|
|
99
90
|
.createServer(app)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAC9B,0DAAmC;AACnC,4DAAqC;AACrC,yCAA6B;AAG7B,kEAA4C;AAC5C,4DAAsE;AACtE,iCAAgE;AAChE,mCAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toServerOptions = void 0;
|
|
4
|
+
var https_proxy_agent_1 = require("https-proxy-agent");
|
|
5
|
+
var stream_1 = require("stream");
|
|
6
|
+
var parseBody_1 = require("./parseBody");
|
|
7
|
+
// A base URL is always needed for the proxy, even
|
|
8
|
+
// if there are no targets to proxy (e.g. in the case
|
|
9
|
+
// of message pact
|
|
10
|
+
var defaultBaseURL = function () { return 'http://127.0.0.1/'; };
|
|
11
|
+
var toServerOptions = function (config, req) {
|
|
12
|
+
// Provide direct support for standard proxy configuration
|
|
13
|
+
var systemProxy = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;
|
|
14
|
+
return {
|
|
15
|
+
changeOrigin: config.changeOrigin === true,
|
|
16
|
+
secure: config.validateSSL === true,
|
|
17
|
+
target: config.providerBaseUrl || defaultBaseURL(),
|
|
18
|
+
agent: systemProxy && new https_proxy_agent_1.HttpsProxyAgent(systemProxy),
|
|
19
|
+
buffer: stream_1.Readable.from((0, parseBody_1.parseBody)(req)),
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.toServerOptions = toServerOptions;
|
|
23
|
+
//# sourceMappingURL=proxyRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxyRequest.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxyRequest.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAEpD,iCAAkC;AAGlC,yCAAwC;AAExC,kDAAkD;AAClD,qDAAqD;AACrD,kBAAkB;AAClB,IAAM,cAAc,GAAG,cAAM,OAAA,mBAAmB,EAAnB,CAAmB,CAAC;AAE1C,IAAM,eAAe,GAAG,UAC7B,MAAoB,EACpB,GAAoB;IAEpB,0DAA0D;IAC1D,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAEtE,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;QAC1C,MAAM,EAAE,MAAM,CAAC,WAAW,KAAK,IAAI;QACnC,MAAM,EAAE,MAAM,CAAC,eAAe,IAAI,cAAc,EAAE;QAClD,KAAK,EAAE,WAAW,IAAI,IAAI,mCAAe,CAAC,WAAW,CAAC;QACtD,MAAM,EAAE,iBAAQ,CAAC,IAAI,CAAC,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC;KACtC,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,eAAe,mBAc1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var chai_1 = __importDefault(require("chai"));
|
|
18
|
+
var stream_1 = require("stream");
|
|
19
|
+
var proxyRequest_1 = require("./proxyRequest");
|
|
20
|
+
var expect = chai_1.default.expect;
|
|
21
|
+
describe('#toServerOptions', function () {
|
|
22
|
+
var toServerOptions = function (opts, req) {
|
|
23
|
+
if (opts === void 0) { opts = {}; }
|
|
24
|
+
return (0, proxyRequest_1.toServerOptions)(opts, req !== null && req !== void 0 ? req : {});
|
|
25
|
+
};
|
|
26
|
+
context('changeOrigin', function () {
|
|
27
|
+
it('forwards option', function () {
|
|
28
|
+
var res = toServerOptions({ changeOrigin: true });
|
|
29
|
+
expect(res.changeOrigin).to.be.true;
|
|
30
|
+
});
|
|
31
|
+
it('is false by default', function () {
|
|
32
|
+
var res = toServerOptions();
|
|
33
|
+
expect(res.changeOrigin).to.be.false;
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
context('secure', function () {
|
|
37
|
+
it('is true when validating ssl', function () {
|
|
38
|
+
var res = toServerOptions({ validateSSL: true });
|
|
39
|
+
expect(res.secure).to.be.true;
|
|
40
|
+
});
|
|
41
|
+
it('is false by default', function () {
|
|
42
|
+
var res = toServerOptions();
|
|
43
|
+
expect(res.secure).to.be.false;
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
context('target', function () {
|
|
47
|
+
it('uses providerBaseUrl', function () {
|
|
48
|
+
var expectedTarget = 'http://test.com';
|
|
49
|
+
var res = toServerOptions({ providerBaseUrl: expectedTarget });
|
|
50
|
+
expect(res.target).to.eq(expectedTarget);
|
|
51
|
+
});
|
|
52
|
+
it('uses loopback address by default', function () {
|
|
53
|
+
var res = toServerOptions();
|
|
54
|
+
expect(res.target).to.eq('http://127.0.0.1/');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
context('agent', function () {
|
|
58
|
+
var initialEnv = __assign({}, process.env);
|
|
59
|
+
afterEach(function () {
|
|
60
|
+
process.env = __assign({}, initialEnv);
|
|
61
|
+
});
|
|
62
|
+
it('uses no agent by default', function () {
|
|
63
|
+
var res = toServerOptions();
|
|
64
|
+
expect(res.agent).to.be.undefined;
|
|
65
|
+
});
|
|
66
|
+
it('uses HTTPS_PROXY', function () {
|
|
67
|
+
var _a, _b;
|
|
68
|
+
var expectedProxy = 'http://proxy.host/';
|
|
69
|
+
process.env.HTTPS_PROXY = expectedProxy;
|
|
70
|
+
var res = toServerOptions();
|
|
71
|
+
expect((_b = (_a = res.agent) === null || _a === void 0 ? void 0 : _a.proxy) === null || _b === void 0 ? void 0 : _b.toString()).to.eq(expectedProxy);
|
|
72
|
+
});
|
|
73
|
+
it('uses HTTP_PROXY', function () {
|
|
74
|
+
var _a, _b;
|
|
75
|
+
var expectedProxy = 'http://my.proxy/';
|
|
76
|
+
process.env.HTTP_PROXY = expectedProxy;
|
|
77
|
+
var res = toServerOptions();
|
|
78
|
+
expect((_b = (_a = res.agent) === null || _a === void 0 ? void 0 : _a.proxy) === null || _b === void 0 ? void 0 : _b.toString()).to.eq(expectedProxy);
|
|
79
|
+
});
|
|
80
|
+
it('prefers HTTPS_PROXY to HTTP_PROXY', function () {
|
|
81
|
+
var _a, _b;
|
|
82
|
+
process.env.HTTPS_PROXY = 'http://unused/';
|
|
83
|
+
var expectedProxy = 'http://expected.proxy/';
|
|
84
|
+
process.env.HTTPS_PROXY = expectedProxy;
|
|
85
|
+
var res = toServerOptions();
|
|
86
|
+
expect((_b = (_a = res.agent) === null || _a === void 0 ? void 0 : _a.proxy) === null || _b === void 0 ? void 0 : _b.toString()).to.eq(expectedProxy);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
context('buffer', function () {
|
|
90
|
+
it('provides readable of body', function () {
|
|
91
|
+
var res = toServerOptions({}, { body: 'a' });
|
|
92
|
+
expect(res.buffer).to.be.instanceOf(stream_1.Readable);
|
|
93
|
+
});
|
|
94
|
+
it('provides readable when body is undefined', function () {
|
|
95
|
+
var res = toServerOptions();
|
|
96
|
+
expect(res.buffer).to.be.instanceOf(stream_1.Readable);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=proxyRequest.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxyRequest.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxyRequest.spec.ts"],"names":[],"mappings":"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"}
|