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 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
- pendingMocks[idx].record.reqheaders = { ...rewriteHeaders(req.headers),
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-tdd",
3
- "version": "3.1.2",
3
+ "version": "3.2.0",
4
4
  "description": "Drop in extension for mocha to abstract commonly used test setups",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {