callman-core 1.16.0 → 1.17.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/dist/contract/contractValidator.d.ts.map +1 -1
- package/dist/contract/contractValidator.js +19 -2
- package/dist/contract/contractValidator.js.map +1 -1
- package/dist/contract/xpathResolver.d.ts +7 -0
- package/dist/contract/xpathResolver.d.ts.map +1 -0
- package/dist/contract/xpathResolver.js +69 -0
- package/dist/contract/xpathResolver.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/helpers/request-helpers.js +8 -0
- package/dist/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
- package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/request-executor.js +35 -0
- package/dist/scenario-runner/adapters/request-executor.js.map +1 -1
- package/dist/scenario-runner/adapters/types.d.ts +5 -0
- package/dist/scenario-runner/adapters/types.d.ts.map +1 -1
- package/dist/scenario-runner/condition.d.ts.map +1 -1
- package/dist/scenario-runner/condition.js +25 -2
- package/dist/scenario-runner/condition.js.map +1 -1
- package/dist/scenario-runner/graphTraversal.d.ts +3 -0
- package/dist/scenario-runner/graphTraversal.d.ts.map +1 -1
- package/dist/scenario-runner/graphTraversal.js +4 -0
- package/dist/scenario-runner/graphTraversal.js.map +1 -1
- package/dist/scenario-runner/nodePolicy.d.ts.map +1 -1
- package/dist/scenario-runner/nodePolicy.js +3 -0
- package/dist/scenario-runner/nodePolicy.js.map +1 -1
- package/dist/scenario-runner/runScenario.d.ts.map +1 -1
- package/dist/scenario-runner/runScenario.js +244 -2
- package/dist/scenario-runner/runScenario.js.map +1 -1
- package/dist/scenario-runner/types.d.ts +67 -4
- package/dist/scenario-runner/types.d.ts.map +1 -1
- package/dist/script/types.d.ts +4 -0
- package/dist/script/types.d.ts.map +1 -1
- package/dist/soap/envelope.d.ts +4 -0
- package/dist/soap/envelope.d.ts.map +1 -0
- package/dist/soap/envelope.js +25 -0
- package/dist/soap/envelope.js.map +1 -0
- package/dist/soap/transport.d.ts +22 -0
- package/dist/soap/transport.d.ts.map +1 -0
- package/dist/soap/transport.js +58 -0
- package/dist/soap/transport.js.map +1 -0
- package/dist/soap/wsSecurity.d.ts +19 -0
- package/dist/soap/wsSecurity.d.ts.map +1 -0
- package/dist/soap/wsSecurity.js +66 -0
- package/dist/soap/wsSecurity.js.map +1 -0
- package/dist-cjs/contract/contractValidator.js +19 -2
- package/dist-cjs/contract/contractValidator.js.map +1 -1
- package/dist-cjs/contract/xpathResolver.js +76 -0
- package/dist-cjs/contract/xpathResolver.js.map +1 -0
- package/dist-cjs/index.js +13 -1
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js +8 -0
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/request-executor.js +35 -0
- package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -1
- package/dist-cjs/scenario-runner/condition.js +25 -2
- package/dist-cjs/scenario-runner/condition.js.map +1 -1
- package/dist-cjs/scenario-runner/graphTraversal.js +5 -1
- package/dist-cjs/scenario-runner/graphTraversal.js.map +1 -1
- package/dist-cjs/scenario-runner/nodePolicy.js +3 -0
- package/dist-cjs/scenario-runner/nodePolicy.js.map +1 -1
- package/dist-cjs/scenario-runner/runScenario.js +243 -1
- package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
- package/dist-cjs/soap/envelope.js +29 -0
- package/dist-cjs/soap/envelope.js.map +1 -0
- package/dist-cjs/soap/transport.js +62 -0
- package/dist-cjs/soap/transport.js.map +1 -0
- package/dist-cjs/soap/wsSecurity.js +74 -0
- package/dist-cjs/soap/wsSecurity.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// SOAP transport application: Content-Type / SOAPAction header rules and
|
|
3
|
+
// the WS-Security injection, applied to the ALREADY-normalized runtime
|
|
4
|
+
// request right before the HTTP driver. User-set headers always win —
|
|
5
|
+
// the same rule the raw-body auto Content-Type follows.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.applySoapRequestTransforms = void 0;
|
|
8
|
+
const wsSecurity_js_1 = require("./wsSecurity.js");
|
|
9
|
+
const findHeaderKey = (headers, name) => Object.keys(headers).find((key) => key.toLowerCase() === name.toLowerCase());
|
|
10
|
+
// Mutates headers/body per SOAP semantics. Returns an error message when the
|
|
11
|
+
// config demands work the body cannot support (non-string body with
|
|
12
|
+
// WS-Security enabled, or no Envelope to inject into).
|
|
13
|
+
const applySoapRequestTransforms = (request, soap, resolveValue, options) => {
|
|
14
|
+
if (!soap.enabled) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const action = soap.action?.trim() ? resolveValue(soap.action).trim() : "";
|
|
18
|
+
const userProvidedContentType = options?.userProvidedContentType ?? Boolean(findHeaderKey(request.headers, "content-type"));
|
|
19
|
+
const setContentType = (value) => {
|
|
20
|
+
for (const key of Object.keys(request.headers)) {
|
|
21
|
+
if (key.toLowerCase() === "content-type") {
|
|
22
|
+
delete request.headers[key];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
request.headers["Content-Type"] = value;
|
|
26
|
+
};
|
|
27
|
+
if (soap.version === "1.2") {
|
|
28
|
+
if (!userProvidedContentType) {
|
|
29
|
+
setContentType(action
|
|
30
|
+
? `application/soap+xml; charset=utf-8; action="${action}"`
|
|
31
|
+
: "application/soap+xml; charset=utf-8");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
if (!userProvidedContentType) {
|
|
36
|
+
setContentType("text/xml; charset=utf-8");
|
|
37
|
+
}
|
|
38
|
+
if (action && !findHeaderKey(request.headers, "soapaction")) {
|
|
39
|
+
// SOAP 1.1 requires the value quoted.
|
|
40
|
+
request.headers.SOAPAction = `"${action}"`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (soap.wsSecurity?.enabled) {
|
|
44
|
+
if (typeof request.body !== "string" || !request.body.trim()) {
|
|
45
|
+
return "WS-Security requires a raw XML body with a SOAP Envelope.";
|
|
46
|
+
}
|
|
47
|
+
const resolvedSecurity = {
|
|
48
|
+
enabled: true,
|
|
49
|
+
username: resolveValue(soap.wsSecurity.username ?? ""),
|
|
50
|
+
password: resolveValue(soap.wsSecurity.password ?? ""),
|
|
51
|
+
passwordType: soap.wsSecurity.passwordType === "digest" ? "digest" : "text",
|
|
52
|
+
};
|
|
53
|
+
const injection = (0, wsSecurity_js_1.injectWsSecurityHeader)(request.body, resolvedSecurity);
|
|
54
|
+
if (!injection.injected) {
|
|
55
|
+
return "WS-Security could not find a SOAP Envelope in the request body.";
|
|
56
|
+
}
|
|
57
|
+
request.body = injection.xml;
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
};
|
|
61
|
+
exports.applySoapRequestTransforms = applySoapRequestTransforms;
|
|
62
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/soap/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// WS-Security UsernameToken header injection — runtime string insertion
|
|
3
|
+
// into the user's raw XML envelope. Deliberately NOT parse-and-rebuild:
|
|
4
|
+
// re-serializing would reformat the document and can lose CDATA fidelity.
|
|
5
|
+
// Nonce/Created are freshly generated per call (per attempt), which is why
|
|
6
|
+
// this runs at send time, never in the editor.
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.injectWsSecurityHeader = exports.buildWsSecurityHeader = void 0;
|
|
12
|
+
const crypto_js_1 = __importDefault(require("crypto-js"));
|
|
13
|
+
const WSSE_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
|
|
14
|
+
const WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
|
|
15
|
+
const PASSWORD_TEXT_TYPE = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText";
|
|
16
|
+
const PASSWORD_DIGEST_TYPE = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest";
|
|
17
|
+
const BASE64_ENCODING = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary";
|
|
18
|
+
const escapeXml = (value) => value
|
|
19
|
+
.replace(/&/g, "&")
|
|
20
|
+
.replace(/</g, "<")
|
|
21
|
+
.replace(/>/g, ">")
|
|
22
|
+
.replace(/"/g, """)
|
|
23
|
+
.replace(/'/g, "'");
|
|
24
|
+
// Password_Digest = Base64(SHA-1(nonce-bytes + created + password)) per the
|
|
25
|
+
// UsernameToken profile. `nonce` is the RAW bytes, base64 only on the wire.
|
|
26
|
+
const buildWsSecurityHeader = (config, now = new Date()) => {
|
|
27
|
+
const nonce = crypto_js_1.default.lib.WordArray.random(16);
|
|
28
|
+
const created = now.toISOString();
|
|
29
|
+
const isDigest = config.passwordType === "digest";
|
|
30
|
+
const passwordValue = isDigest
|
|
31
|
+
? crypto_js_1.default.SHA1(nonce.clone().concat(crypto_js_1.default.enc.Utf8.parse(created + config.password))).toString(crypto_js_1.default.enc.Base64)
|
|
32
|
+
: config.password;
|
|
33
|
+
const headerXml = `<wsse:Security xmlns:wsse="${WSSE_NS}" xmlns:wsu="${WSU_NS}">` +
|
|
34
|
+
`<wsse:UsernameToken>` +
|
|
35
|
+
`<wsse:Username>${escapeXml(config.username)}</wsse:Username>` +
|
|
36
|
+
`<wsse:Password Type="${isDigest ? PASSWORD_DIGEST_TYPE : PASSWORD_TEXT_TYPE}">${escapeXml(passwordValue)}</wsse:Password>` +
|
|
37
|
+
`<wsse:Nonce EncodingType="${BASE64_ENCODING}">${nonce.toString(crypto_js_1.default.enc.Base64)}</wsse:Nonce>` +
|
|
38
|
+
`<wsu:Created>${created}</wsu:Created>` +
|
|
39
|
+
`</wsse:UsernameToken>` +
|
|
40
|
+
`</wsse:Security>`;
|
|
41
|
+
return {
|
|
42
|
+
nonceBase64: nonce.toString(crypto_js_1.default.enc.Base64),
|
|
43
|
+
created,
|
|
44
|
+
passwordValue,
|
|
45
|
+
passwordTypeUri: isDigest ? PASSWORD_DIGEST_TYPE : PASSWORD_TEXT_TYPE,
|
|
46
|
+
headerXml,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
exports.buildWsSecurityHeader = buildWsSecurityHeader;
|
|
50
|
+
const HEADER_OPEN = /<((?:[A-Za-z_][\w.-]*:)?)Header(\s[^>]*)?>/;
|
|
51
|
+
const ENVELOPE_OPEN = /<((?:[A-Za-z_][\w.-]*:)?)Envelope(\s[^>]*)?>/;
|
|
52
|
+
// Insert the wsse:Security block into the envelope: right after an existing
|
|
53
|
+
// <*:Header> open tag, else a synthesized Header (matching the Envelope's
|
|
54
|
+
// prefix) right after the Envelope open tag. Returns the input unchanged
|
|
55
|
+
// (with `injected: false`) when no Envelope is present — callers surface
|
|
56
|
+
// that as a node failure.
|
|
57
|
+
const injectWsSecurityHeader = (xml, config, now) => {
|
|
58
|
+
const parts = (0, exports.buildWsSecurityHeader)(config, now);
|
|
59
|
+
const headerMatch = HEADER_OPEN.exec(xml);
|
|
60
|
+
if (headerMatch && headerMatch.index >= 0) {
|
|
61
|
+
const insertAt = headerMatch.index + headerMatch[0].length;
|
|
62
|
+
return { xml: xml.slice(0, insertAt) + parts.headerXml + xml.slice(insertAt), injected: true };
|
|
63
|
+
}
|
|
64
|
+
const envelopeMatch = ENVELOPE_OPEN.exec(xml);
|
|
65
|
+
if (!envelopeMatch) {
|
|
66
|
+
return { xml, injected: false };
|
|
67
|
+
}
|
|
68
|
+
const prefix = envelopeMatch[1] ?? "";
|
|
69
|
+
const insertAt = envelopeMatch.index + envelopeMatch[0].length;
|
|
70
|
+
const header = `<${prefix}Header>${parts.headerXml}</${prefix}Header>`;
|
|
71
|
+
return { xml: xml.slice(0, insertAt) + header + xml.slice(insertAt), injected: true };
|
|
72
|
+
};
|
|
73
|
+
exports.injectWsSecurityHeader = injectWsSecurityHeader;
|
|
74
|
+
//# sourceMappingURL=wsSecurity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsSecurity.js","sourceRoot":"","sources":["../../src/soap/wsSecurity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "callman-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"main": "dist-cjs/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -30,13 +30,15 @@
|
|
|
30
30
|
"test": "npm run build && node --test tests/*.test.mjs"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
+
"@xmldom/xmldom": "^0.9.12",
|
|
33
34
|
"ajv": "^8.20.0",
|
|
34
35
|
"ajv-formats": "^3.0.1",
|
|
35
36
|
"axios": "^1.6.0",
|
|
36
37
|
"crypto-js": "^4.2.0",
|
|
37
38
|
"fast-xml-parser": "^4.5.1",
|
|
38
39
|
"jsonpath-plus": "^10.4.0",
|
|
39
|
-
"lodash": "^4.18.1"
|
|
40
|
+
"lodash": "^4.18.1",
|
|
41
|
+
"xpath": "^0.0.34"
|
|
40
42
|
},
|
|
41
43
|
"optionalDependencies": {
|
|
42
44
|
"ioredis": "^5.4.1",
|