node-tdd 3.1.2 → 3.2.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/README.md +7 -0
- package/lib/modules/request-recorder.js +15 -4
- package/lib/util/desc.js +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -132,6 +132,13 @@ Default: `false`
|
|
|
132
132
|
|
|
133
133
|
When set to true, all headers are stripped when requests are recorded.
|
|
134
134
|
|
|
135
|
+
### nockReqHeaderOverwrite
|
|
136
|
+
|
|
137
|
+
Type: `object`<br>
|
|
138
|
+
Default: `{}`
|
|
139
|
+
|
|
140
|
+
Can be used to overwrite `reqheaders` in recordings. Cassette files are only updated when changed.
|
|
141
|
+
|
|
135
142
|
#### fixtureFolder
|
|
136
143
|
|
|
137
144
|
Type: `string`<br>
|
|
@@ -45,6 +45,7 @@ module.exports = opts => {
|
|
|
45
45
|
Joi.assert(opts, Joi.object().keys({
|
|
46
46
|
cassetteFolder: Joi.string(),
|
|
47
47
|
stripHeaders: Joi.boolean(),
|
|
48
|
+
reqHeaderOverwrite: Joi.object().pattern(Joi.string().case('lower'), Joi.string()),
|
|
48
49
|
strict: Joi.boolean(),
|
|
49
50
|
heal: Joi.alternatives(Joi.boolean(), Joi.string()),
|
|
50
51
|
modifiers: Joi.object().pattern(Joi.string(), Joi.alternatives(Joi.function(), Joi.link('#modifiers')))
|
|
@@ -68,6 +69,14 @@ module.exports = opts => {
|
|
|
68
69
|
return flags.some(flag => needleFlags.includes(flag));
|
|
69
70
|
};
|
|
70
71
|
|
|
72
|
+
const overwriteHeaders = (k, v) => {
|
|
73
|
+
if (k in opts.reqHeaderOverwrite) {
|
|
74
|
+
return opts.reqHeaderOverwrite[k];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return v;
|
|
78
|
+
};
|
|
79
|
+
|
|
71
80
|
return {
|
|
72
81
|
inject: async cassetteFile => {
|
|
73
82
|
assert(nockDone === null);
|
|
@@ -126,7 +135,8 @@ module.exports = opts => {
|
|
|
126
135
|
nockRecorder.clear();
|
|
127
136
|
return recorded.map(record => Object.assign(record, {
|
|
128
137
|
headers: opts.stripHeaders === true ? undefined : convertHeaders(record.rawHeaders),
|
|
129
|
-
rawHeaders: undefined
|
|
138
|
+
rawHeaders: undefined,
|
|
139
|
+
reqheaders: rewriteHeaders(record.reqheaders, overwriteHeaders)
|
|
130
140
|
}));
|
|
131
141
|
});
|
|
132
142
|
} else if (anyFlagPresent(['stub'])) {
|
|
@@ -136,7 +146,7 @@ module.exports = opts => {
|
|
|
136
146
|
path: options.path,
|
|
137
147
|
body: tryParseJson(body),
|
|
138
148
|
status: 200,
|
|
139
|
-
reqheaders: rewriteHeaders(options.headers),
|
|
149
|
+
reqheaders: rewriteHeaders(options.headers, overwriteHeaders),
|
|
140
150
|
response: {},
|
|
141
151
|
responseIsBinary: false
|
|
142
152
|
});
|
|
@@ -194,9 +204,10 @@ module.exports = opts => {
|
|
|
194
204
|
|
|
195
205
|
if (anyFlagPresent(['magic', 'headers'])) {
|
|
196
206
|
// add new headers
|
|
197
|
-
|
|
207
|
+
const reqheaders = { ...rewriteHeaders(req.headers),
|
|
198
208
|
...rewriteHeaders(pendingMocks[idx].record.reqheaders)
|
|
199
209
|
};
|
|
210
|
+
pendingMocks[idx].record.reqheaders = rewriteHeaders(reqheaders, overwriteHeaders);
|
|
200
211
|
}
|
|
201
212
|
|
|
202
213
|
if (anyFlagPresent(['magic', 'response'])) {
|
|
@@ -218,7 +229,7 @@ module.exports = opts => {
|
|
|
218
229
|
afterRecord: recordings => JSON.stringify(recordings.map(r => ({ ...r,
|
|
219
230
|
body: tryParseJson(r.body),
|
|
220
231
|
rawHeaders: opts.stripHeaders === true ? undefined : r.rawHeaders,
|
|
221
|
-
reqheaders: rewriteHeaders(r.reqheaders)
|
|
232
|
+
reqheaders: rewriteHeaders(r.reqheaders, overwriteHeaders)
|
|
222
233
|
})), null, 2)
|
|
223
234
|
}, resolve));
|
|
224
235
|
requestInjector.inject();
|
package/lib/util/desc.js
CHANGED
|
@@ -73,6 +73,7 @@ const desc = (suiteName, optsOrTests, testsOrNull = null) => {
|
|
|
73
73
|
const nockFolder = resolve(get(opts, 'nockFolder', '$FILENAME__cassettes'));
|
|
74
74
|
const nockModifiers = get(opts, 'nockModifiers', {});
|
|
75
75
|
const nockStripHeaders = get(opts, 'nockStripHeaders', false);
|
|
76
|
+
const nockReqHeaderOverwrite = get(opts, 'nockReqHeaderOverwrite', {});
|
|
76
77
|
const fixtureFolder = resolve(get(opts, 'fixtureFolder', '$FILENAME__fixtures'));
|
|
77
78
|
const envVarsFile = resolve(get(opts, 'envVarsFile', '$FILENAME.env.yml'));
|
|
78
79
|
const envVars = get(opts, 'envVars', null);
|
|
@@ -178,6 +179,7 @@ const desc = (suiteName, optsOrTests, testsOrNull = null) => {
|
|
|
178
179
|
requestRecorder = RequestRecorder({
|
|
179
180
|
cassetteFolder: `${nockFolder}/`,
|
|
180
181
|
stripHeaders: nockStripHeaders,
|
|
182
|
+
reqHeaderOverwrite: nockReqHeaderOverwrite,
|
|
181
183
|
strict: true,
|
|
182
184
|
heal: nockHeal,
|
|
183
185
|
modifiers: nockModifiers
|