@contrast/assess 1.46.1 → 1.46.3

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.
Files changed (157) hide show
  1. package/package.json +14 -11
  2. package/lib/crypto-analysis/install/crypto.test.js +0 -146
  3. package/lib/crypto-analysis/install/math.test.js +0 -65
  4. package/lib/dataflow/index.test.js +0 -36
  5. package/lib/dataflow/propagation/index.test.js +0 -103
  6. package/lib/dataflow/propagation/install/JSON/index.test.js +0 -50
  7. package/lib/dataflow/propagation/install/JSON/parse-fn.test.js +0 -232
  8. package/lib/dataflow/propagation/install/JSON/parse.test.js +0 -968
  9. package/lib/dataflow/propagation/install/JSON/stringify.test.js +0 -265
  10. package/lib/dataflow/propagation/install/array-prototype-join.test.js +0 -106
  11. package/lib/dataflow/propagation/install/buffer.test.js +0 -112
  12. package/lib/dataflow/propagation/install/contrast-methods/add.test.js +0 -94
  13. package/lib/dataflow/propagation/install/contrast-methods/index.test.js +0 -49
  14. package/lib/dataflow/propagation/install/contrast-methods/number.test.js +0 -50
  15. package/lib/dataflow/propagation/install/contrast-methods/string.test.js +0 -148
  16. package/lib/dataflow/propagation/install/contrast-methods/tag.test.js +0 -145
  17. package/lib/dataflow/propagation/install/decode-uri-component.test.js +0 -78
  18. package/lib/dataflow/propagation/install/ejs/escape-xml.test.js +0 -69
  19. package/lib/dataflow/propagation/install/ejs/template.test.js +0 -62
  20. package/lib/dataflow/propagation/install/encode-uri.test.js +0 -83
  21. package/lib/dataflow/propagation/install/escape-html.test.js +0 -71
  22. package/lib/dataflow/propagation/install/escape.test.js +0 -73
  23. package/lib/dataflow/propagation/install/fastify-send.test.js +0 -42
  24. package/lib/dataflow/propagation/install/handlebars-utils-escape-expression.test.js +0 -71
  25. package/lib/dataflow/propagation/install/isnumeric-0.test.js +0 -58
  26. package/lib/dataflow/propagation/install/joi/any.test.js +0 -270
  27. package/lib/dataflow/propagation/install/joi/array.test.js +0 -912
  28. package/lib/dataflow/propagation/install/joi/boolean.test.js +0 -103
  29. package/lib/dataflow/propagation/install/joi/expression.test.js +0 -76
  30. package/lib/dataflow/propagation/install/joi/index.test.js +0 -39
  31. package/lib/dataflow/propagation/install/joi/number.test.js +0 -103
  32. package/lib/dataflow/propagation/install/joi/object.test.js +0 -119
  33. package/lib/dataflow/propagation/install/joi/ref.test.js +0 -607
  34. package/lib/dataflow/propagation/install/joi/string-schema.test.js +0 -513
  35. package/lib/dataflow/propagation/install/mongoose/index.test.js +0 -42
  36. package/lib/dataflow/propagation/install/mongoose/schema-map.test.js +0 -348
  37. package/lib/dataflow/propagation/install/mongoose/schema-mixed.test.js +0 -511
  38. package/lib/dataflow/propagation/install/mongoose/schema-string.test.js +0 -199
  39. package/lib/dataflow/propagation/install/mustache-escape.test.js +0 -62
  40. package/lib/dataflow/propagation/install/mysql-connection-escape.test.js +0 -74
  41. package/lib/dataflow/propagation/install/parse-int.test.js +0 -48
  42. package/lib/dataflow/propagation/install/path/basename.test.js +0 -143
  43. package/lib/dataflow/propagation/install/path/dirname.test.js +0 -167
  44. package/lib/dataflow/propagation/install/path/extname.test.js +0 -141
  45. package/lib/dataflow/propagation/install/path/format.test.js +0 -250
  46. package/lib/dataflow/propagation/install/path/index.test.js +0 -45
  47. package/lib/dataflow/propagation/install/path/join-and-resolve.test.js +0 -485
  48. package/lib/dataflow/propagation/install/path/normalize.test.js +0 -176
  49. package/lib/dataflow/propagation/install/path/parse.test.js +0 -238
  50. package/lib/dataflow/propagation/install/path/relative.test.js +0 -239
  51. package/lib/dataflow/propagation/install/path/toNamespacedPath.test.js +0 -158
  52. package/lib/dataflow/propagation/install/pug/index.test.js +0 -55
  53. package/lib/dataflow/propagation/install/pug-runtime-escape.test.js +0 -69
  54. package/lib/dataflow/propagation/install/querystring/escape.test.js +0 -63
  55. package/lib/dataflow/propagation/install/querystring/index.test.js +0 -40
  56. package/lib/dataflow/propagation/install/querystring/parse.test.js +0 -272
  57. package/lib/dataflow/propagation/install/querystring/stringify.test.js +0 -301
  58. package/lib/dataflow/propagation/install/reg-exp-prototype-exec.test.js +0 -283
  59. package/lib/dataflow/propagation/install/send.test.js +0 -63
  60. package/lib/dataflow/propagation/install/sequelize/query-generator.test.js +0 -74
  61. package/lib/dataflow/propagation/install/sequelize/sql-string.test.js +0 -119
  62. package/lib/dataflow/propagation/install/sql-template-strings.test.js +0 -100
  63. package/lib/dataflow/propagation/install/string/concat.test.js +0 -145
  64. package/lib/dataflow/propagation/install/string/format-methods.test.js +0 -74
  65. package/lib/dataflow/propagation/install/string/html-methods.test.js +0 -177
  66. package/lib/dataflow/propagation/install/string/index.test.js +0 -103
  67. package/lib/dataflow/propagation/install/string/match-all.test.js +0 -412
  68. package/lib/dataflow/propagation/install/string/match.test.js +0 -374
  69. package/lib/dataflow/propagation/install/string/replace.test.js +0 -601
  70. package/lib/dataflow/propagation/install/string/slice.test.js +0 -278
  71. package/lib/dataflow/propagation/install/string/split.test.js +0 -513
  72. package/lib/dataflow/propagation/install/string/substring.test.js +0 -251
  73. package/lib/dataflow/propagation/install/string/trim.test.js +0 -135
  74. package/lib/dataflow/propagation/install/unescape.test.js +0 -78
  75. package/lib/dataflow/propagation/install/url/domain-parsers.test.js +0 -63
  76. package/lib/dataflow/propagation/install/url/parse.test.js +0 -391
  77. package/lib/dataflow/propagation/install/url/searchParams.test.js +0 -538
  78. package/lib/dataflow/propagation/install/url/url.test.js +0 -466
  79. package/lib/dataflow/propagation/install/util-format.test.js +0 -336
  80. package/lib/dataflow/propagation/install/validator/hooks.test.js +0 -211
  81. package/lib/dataflow/sinks/index.test.js +0 -78
  82. package/lib/dataflow/sinks/install/child-process.test.js +0 -338
  83. package/lib/dataflow/sinks/install/eval.test.js +0 -95
  84. package/lib/dataflow/sinks/install/express/index.test.js +0 -33
  85. package/lib/dataflow/sinks/install/express/reflected-xss.test.js +0 -109
  86. package/lib/dataflow/sinks/install/express/unvalidated-redirect.test.js +0 -144
  87. package/lib/dataflow/sinks/install/fastify/index.test.js +0 -32
  88. package/lib/dataflow/sinks/install/fastify/unvalidated-redirect.test.js +0 -130
  89. package/lib/dataflow/sinks/install/fs.test.js +0 -138
  90. package/lib/dataflow/sinks/install/function.test.js +0 -103
  91. package/lib/dataflow/sinks/install/hapi/index.test.js +0 -32
  92. package/lib/dataflow/sinks/install/hapi/unvalidated-redirect.test.js +0 -130
  93. package/lib/dataflow/sinks/install/http/index.test.js +0 -33
  94. package/lib/dataflow/sinks/install/http/request.test.js +0 -184
  95. package/lib/dataflow/sinks/install/http/server-response.test.js +0 -160
  96. package/lib/dataflow/sinks/install/koa/index.test.js +0 -32
  97. package/lib/dataflow/sinks/install/koa/unvalidated-redirect.test.js +0 -200
  98. package/lib/dataflow/sinks/install/libxmljs.test.js +0 -158
  99. package/lib/dataflow/sinks/install/marsdb.test.js +0 -166
  100. package/lib/dataflow/sinks/install/mongodb.test.js +0 -617
  101. package/lib/dataflow/sinks/install/mssql.test.js +0 -134
  102. package/lib/dataflow/sinks/install/mysql.test.js +0 -224
  103. package/lib/dataflow/sinks/install/node-serialize.test.js +0 -83
  104. package/lib/dataflow/sinks/install/postgres.test.js +0 -152
  105. package/lib/dataflow/sinks/install/restify.test.js +0 -140
  106. package/lib/dataflow/sinks/install/sequelize.test.js +0 -100
  107. package/lib/dataflow/sinks/install/sqlite3.test.js +0 -118
  108. package/lib/dataflow/sinks/install/vm.test.js +0 -326
  109. package/lib/dataflow/sources/handler.test.js +0 -501
  110. package/lib/dataflow/sources/index.test.js +0 -60
  111. package/lib/dataflow/sources/install/body-parser1.test.js +0 -244
  112. package/lib/dataflow/sources/install/busboy.test.js +0 -152
  113. package/lib/dataflow/sources/install/cookie-parser1.test.js +0 -141
  114. package/lib/dataflow/sources/install/express/params.test.js +0 -110
  115. package/lib/dataflow/sources/install/express/parsedUrl.test.js +0 -107
  116. package/lib/dataflow/sources/install/fastify/fastify.test.js +0 -207
  117. package/lib/dataflow/sources/install/fastify/index.test.js +0 -33
  118. package/lib/dataflow/sources/install/formidable1.test.js +0 -119
  119. package/lib/dataflow/sources/install/graphql-http.test.js +0 -133
  120. package/lib/dataflow/sources/install/hapi/hapi.test.js +0 -171
  121. package/lib/dataflow/sources/install/hapi/index.test.js +0 -33
  122. package/lib/dataflow/sources/install/http.test.js +0 -149
  123. package/lib/dataflow/sources/install/koa/index.test.js +0 -40
  124. package/lib/dataflow/sources/install/koa/koa-bodyparsers.test.js +0 -160
  125. package/lib/dataflow/sources/install/koa/koa-multer.test.js +0 -197
  126. package/lib/dataflow/sources/install/koa/koa-routers.test.js +0 -146
  127. package/lib/dataflow/sources/install/koa/koa2.test.js +0 -145
  128. package/lib/dataflow/sources/install/multer1.test.js +0 -143
  129. package/lib/dataflow/sources/install/qs6.test.js +0 -131
  130. package/lib/dataflow/sources/install/querystring.test.js +0 -82
  131. package/lib/dataflow/sources/install/restify/fieldedTextBodyParser.test.js +0 -86
  132. package/lib/dataflow/sources/install/restify/index.test.js +0 -38
  133. package/lib/dataflow/sources/install/restify/jsonBodyParser.test.js +0 -140
  134. package/lib/dataflow/sources/install/restify/router.test.js +0 -81
  135. package/lib/dataflow/tag-utils-complete.test.js +0 -27
  136. package/lib/dataflow/tag-utils.test.js +0 -192
  137. package/lib/dataflow/tracker.test.js +0 -216
  138. package/lib/dataflow/utils/is-safe-content-type.test.js +0 -16
  139. package/lib/dataflow/utils/is-vulnerable.test.js +0 -115
  140. package/lib/event-factory.test.js +0 -326
  141. package/lib/get-policy.test.js +0 -194
  142. package/lib/get-source-context.test.js +0 -161
  143. package/lib/index.test.js +0 -45
  144. package/lib/make-source-context.test.js +0 -50
  145. package/lib/response-scanning/handlers/index.test.js +0 -419
  146. package/lib/response-scanning/handlers/utils.test.js +0 -380
  147. package/lib/response-scanning/index.test.js +0 -41
  148. package/lib/response-scanning/install/http.test.js +0 -175
  149. package/lib/rule-scopes.test.js +0 -27
  150. package/lib/sampler/common.test.js +0 -101
  151. package/lib/sampler/index.test.js +0 -313
  152. package/lib/session-configuration/handlers.test.js +0 -84
  153. package/lib/session-configuration/index.test.js +0 -36
  154. package/lib/session-configuration/install/express-session.test.js +0 -218
  155. package/lib/session-configuration/install/fastify-cookie.test.js +0 -63
  156. package/lib/session-configuration/install/hapi.test.js +0 -269
  157. package/lib/session-configuration/install/koa.test.js +0 -92
@@ -1,391 +0,0 @@
1
- 'use strict';
2
-
3
- const url = require('url');
4
- const sinon = require('sinon');
5
- const { expect } = require('chai');
6
- const querystring = require('querystring');
7
- const { initAssessFixture } = require('@contrast/test/fixtures');
8
-
9
- const keys = [
10
- 'href',
11
- 'protocol',
12
- 'auth',
13
- 'host',
14
- 'hostname',
15
- 'port',
16
- 'path',
17
- 'pathname',
18
- 'search',
19
- 'query',
20
- 'hash'
21
- ];
22
-
23
- describe('assess dataflow propagation url.parse', function () {
24
- let core, trackString, simulateRequestScope, tracker, matchURL;
25
-
26
- beforeEach(function () {
27
- ({
28
- core,
29
- simulateRequestScope,
30
- trackString
31
- } = initAssessFixture());
32
-
33
- tracker = core.assess.dataflow.tracker;
34
- core.assess.dataflow.propagation.stringInstrumentation.install();
35
- core.assess.dataflow.propagation.querystringInstrumentation.parse.install();
36
- core.assess.dataflow.propagation.urlInstrumentation.parse.install();
37
-
38
- core.depHooks.resolve.withArgs(sinon.match({ name: 'url' })).yield(url);
39
- core.depHooks.resolve.withArgs(sinon.match({ name: 'querystring' })).yield(querystring);
40
-
41
- matchURL = {
42
- href: 'https://user:pass@foo.com:3000/path?query=input#hash',
43
- protocol: 'https:',
44
- auth: 'user:pass',
45
- host: 'foo.com:3000',
46
- hostname: 'foo.com',
47
- port: '3000',
48
- path: '/path?query=input',
49
- pathname: '/path',
50
- search: '?query=input',
51
- query: 'query=input',
52
- hash: '#hash'
53
- };
54
- });
55
-
56
- afterEach(function () {
57
- sinon.resetHistory();
58
- core.assess.dataflow.propagation.stringInstrumentation.uninstall();
59
- });
60
-
61
- it('will not propagate if nothing in url is tracked', function () {
62
- simulateRequestScope(function () {
63
- const result = new url.parse('http://foo:3000/path');
64
- keys.forEach((key) => {
65
- expect(tracker.getData(result[key])).to.be.null;
66
- });
67
- });
68
- });
69
-
70
- it('will not propagate if there is no assess policy in request context', function () {
71
- simulateRequestScope(function () {
72
- const value = trackString('foo');
73
- const result = new url.parse('http://'.concat(value, ':3000/path'));
74
- keys.forEach((key) => {
75
- expect(tracker.getData(result[key])).to.be.null;
76
- });
77
- }, { assess: { policy: null } });
78
- });
79
-
80
- it('will not propagate if there instrumentation is locked', function () {
81
- simulateRequestScope(function () {
82
- core.scopes.instrumentation.run({ lock: true }, function () {
83
- const value = trackString('foo');
84
- const result = new url.parse('http://'.concat(value, ':3000/path'));
85
- keys.forEach((key) => {
86
- expect(tracker.getData(result[key])).to.be.null;
87
- });
88
- });
89
- });
90
- });
91
-
92
- describe('URL properties', function () {
93
- it('propagates vulnerable protocol', function () {
94
- simulateRequestScope(function () {
95
- const value = trackString('https');
96
- const result = new url.parse(value.concat('://user:pass@foo.com:3000/path?query=input#hash'));
97
- keys.forEach((key) => {
98
- expect(result[key]).to.be.equal(matchURL[key]);
99
- });
100
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
101
- UNTRUSTED: [0, 4]
102
- });
103
-
104
- expect(tracker.getData(result.protocol).tags).to.be.deep.equal({
105
- UNTRUSTED: [0, 4]
106
- });
107
-
108
- ['auth', 'host', 'hostname', 'port', 'path', 'pathname', 'search', 'query', 'hash'].forEach((prop) => {
109
- expect(tracker.getData(result[prop])).to.be.null;
110
- });
111
- });
112
- });
113
-
114
- it('propagates vulnerable username', function () {
115
- simulateRequestScope(function () {
116
- const value = trackString('user');
117
- const result = new url.parse('https://'.concat(value, ':pass@foo.com:3000/path?query=input#hash'));
118
-
119
- keys.forEach((key) => {
120
- expect(result[key]).to.be.equal(matchURL[key]);
121
- });
122
-
123
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
124
- UNTRUSTED: [8, 11]
125
- });
126
-
127
- expect(tracker.getData(result.auth).tags).to.be.deep.equal({
128
- UNTRUSTED: [0, 3]
129
- });
130
-
131
- ['protocol', 'host', 'hostname', 'port', 'path', 'pathname', 'search', 'query', 'hash'].forEach((prop) => {
132
- expect(tracker.getData(result[prop])).to.be.null;
133
- });
134
- });
135
- });
136
-
137
- it('propagates vulnerable password', function () {
138
- simulateRequestScope(function () {
139
- const value = trackString('pass');
140
- const result = new url.parse('https://user:'.concat(value, '@foo.com:3000/path?query=input#hash'));
141
-
142
- keys.forEach((key) => {
143
- expect(result[key]).to.be.equal(matchURL[key]);
144
- });
145
-
146
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
147
- UNTRUSTED: [13, 16]
148
- });
149
-
150
- expect(tracker.getData(result.auth).tags).to.be.deep.equal({
151
- UNTRUSTED: [5, 8]
152
- });
153
-
154
- ['protocol', 'host', 'hostname', 'port', 'path', 'pathname', 'search', 'query', 'hash'].forEach((prop) => {
155
- expect(tracker.getData(result[prop])).to.be.null;
156
- });
157
- });
158
- });
159
-
160
- it('propagates vulnerable hostname', function () {
161
- simulateRequestScope(function () {
162
- const value = trackString('foo');
163
- const result = new url.parse('https://user:pass@'.concat(value, '.com:3000/path?query=input#hash'));
164
-
165
- keys.forEach((key) => {
166
- expect(result[key]).to.be.equal(matchURL[key]);
167
- });
168
-
169
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
170
- UNTRUSTED: [18, 20]
171
- });
172
-
173
- expect(tracker.getData(result.hostname).tags).to.be.deep.equal({
174
- UNTRUSTED: [0, 2]
175
- });
176
-
177
- expect(tracker.getData(result.host).tags).to.be.deep.equal({
178
- UNTRUSTED: [0, 2]
179
- });
180
-
181
- ['protocol', 'auth', 'port', 'path', 'pathname', 'search', 'query', 'hash'].forEach((prop) => {
182
- expect(tracker.getData(result[prop])).to.be.null;
183
- });
184
- });
185
- });
186
-
187
- it('propagates vulnerable port', function () {
188
- simulateRequestScope(function () {
189
- const value = trackString('3000');
190
- const result = new url.parse('https://user:pass@foo.com:'.concat(value, '/path?query=input#hash'));
191
-
192
- keys.forEach((key) => {
193
- expect(result[key]).to.be.equal(matchURL[key]);
194
- });
195
-
196
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
197
- UNTRUSTED: [26, 29]
198
- });
199
-
200
- expect(tracker.getData(result.host).tags).to.be.deep.equal({
201
- UNTRUSTED: [8, 11]
202
- });
203
-
204
- expect(tracker.getData(result.port).tags).to.be.deep.equal({
205
- UNTRUSTED: [0, 3]
206
- });
207
-
208
- ['protocol', 'hostname', 'auth', 'path', 'pathname', 'search', 'query', 'hash'].forEach((prop) => {
209
- expect(tracker.getData(result[prop])).to.be.null;
210
- });
211
- });
212
- });
213
-
214
- it('propagates vulnerable pathname', function () {
215
- simulateRequestScope(function () {
216
- const value = trackString('path');
217
- const result = new url.parse('https://user:pass@foo.com:3000/'.concat(value, '?query=input#hash'));
218
-
219
- keys.forEach((key) => {
220
- expect(result[key]).to.be.equal(matchURL[key]);
221
- });
222
-
223
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
224
- UNTRUSTED: [31, 34]
225
- });
226
-
227
- expect(tracker.getData(result.path).tags).to.be.deep.equal({
228
- UNTRUSTED: [1, 4]
229
- });
230
-
231
- expect(tracker.getData(result.pathname).tags).to.be.deep.equal({
232
- UNTRUSTED: [1, 4]
233
- });
234
-
235
- ['protocol', 'host', 'hostname', 'auth', 'search', 'query', 'hash'].forEach((prop) => {
236
- expect(tracker.getData(result[prop])).to.be.null;
237
- });
238
- });
239
- });
240
-
241
- it('propagates vulnerable search', function () {
242
- simulateRequestScope(function () {
243
- const value = trackString('input');
244
- const result = new url.parse('https://user:pass@foo.com:3000/path?query='.concat(value, '#hash'));
245
-
246
- keys.forEach((key) => {
247
- expect(result[key]).to.be.equal(matchURL[key]);
248
- });
249
-
250
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
251
- UNTRUSTED: [42, 46]
252
- });
253
-
254
- expect(tracker.getData(result.path).tags).to.be.deep.equal({
255
- UNTRUSTED: [12, 16]
256
- });
257
-
258
- expect(tracker.getData(result.query).tags).to.be.deep.equal({
259
- UNTRUSTED: [6, 10]
260
- });
261
-
262
- expect(tracker.getData(result.search).tags).to.be.deep.equal({
263
- UNTRUSTED: [7, 11]
264
- });
265
-
266
- ['protocol', 'auth', 'host', 'hostname', 'port', 'pathname', 'hash'].forEach((prop) => {
267
- expect(tracker.getData(result[prop])).to.be.null;
268
- });
269
- });
270
- });
271
-
272
- it('propagates vulnerable hash', function () {
273
- simulateRequestScope(function () {
274
- const value = trackString('hash');
275
- const result = new url.parse('https://user:pass@foo.com:3000/path?query=input#'.concat(value));
276
-
277
- keys.forEach((key) => {
278
- expect(result[key]).to.be.equal(matchURL[key]);
279
- });
280
-
281
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
282
- UNTRUSTED: [48, 51]
283
- });
284
-
285
- expect(tracker.getData(result.hash).tags).to.be.deep.equal({
286
- UNTRUSTED: [1, 4]
287
- });
288
-
289
- ['protocol', 'auth', 'host', 'hostname', 'port', 'path', 'pathname', 'search', 'query'].forEach((prop) => {
290
- expect(tracker.getData(result[prop])).to.be.null;
291
- });
292
- });
293
- });
294
-
295
- it('propagates multiple vulnerable properties', function () {
296
- simulateRequestScope(function () {
297
- const protocol = trackString('https');
298
- const user = trackString('user');
299
- const pass = trackString('pass');
300
- const hostname = trackString('foo');
301
- const port = trackString('3000');
302
- const path = trackString('path');
303
- const query = trackString('input');
304
- const hash = trackString('hash');
305
- const result = new url.parse(protocol.concat('://', user, ':', pass, '@', hostname, '.com:', port, '/', path, '?query=', query, '#', hash));
306
-
307
- keys.forEach((key) => {
308
- expect(result[key]).to.be.equal(matchURL[key]);
309
- });
310
-
311
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
312
- UNTRUSTED: [0, 4, 8, 11, 13, 16, 18, 20, 26, 29, 31, 34, 42, 46, 48, 51]
313
- });
314
-
315
- expect(tracker.getData(result.protocol).tags).to.be.deep.equal({
316
- UNTRUSTED: [0, 4]
317
- });
318
-
319
- expect(tracker.getData(result.auth).tags).to.be.deep.equal({
320
- UNTRUSTED: [0, 3, 5, 8]
321
- });
322
-
323
- expect(tracker.getData(result.host).tags).to.be.deep.equal({
324
- UNTRUSTED: [0, 2, 8, 11]
325
- });
326
-
327
- expect(tracker.getData(result.hostname).tags).to.be.deep.equal({
328
- UNTRUSTED: [0, 2]
329
- });
330
-
331
- expect(tracker.getData(result.port).tags).to.be.deep.equal({
332
- UNTRUSTED: [0, 3]
333
- });
334
-
335
- expect(tracker.getData(result.path).tags).to.be.deep.equal({
336
- UNTRUSTED: [1, 4, 12, 16]
337
- });
338
-
339
- expect(tracker.getData(result.pathname).tags).to.be.deep.equal({
340
- UNTRUSTED: [1, 4]
341
- });
342
-
343
- expect(tracker.getData(result.query).tags).to.be.deep.equal({
344
- UNTRUSTED: [6, 10]
345
- });
346
-
347
- expect(tracker.getData(result.search).tags).to.be.deep.equal({
348
- UNTRUSTED: [7, 11]
349
- });
350
-
351
- expect(tracker.getData(result.hash).tags).to.be.deep.equal({
352
- UNTRUSTED: [1, 4]
353
- });
354
- });
355
- });
356
-
357
- it('propagates query when parseQueryString is set to true', function () {
358
- simulateRequestScope(function () {
359
- const value = trackString('input');
360
- const result = new url.parse('https://user:pass@foo.com:3000/path?query='.concat(value, '#hash'), true);
361
-
362
- expect(result.query).to.be.deep.equal({ query: 'input' });
363
- expect(tracker.getData(result.query.query).tags).to.be.deep.equal({
364
- UNTRUSTED: [0, 4]
365
- });
366
-
367
- // Everything else propagates (or doesn't) normally
368
- keys.forEach((key) => {
369
- if (key !== 'query') expect(result[key]).to.be.equal(matchURL[key]);
370
- });
371
-
372
- expect(tracker.getData(result.href).tags).to.be.deep.equal({
373
- UNTRUSTED: [42, 46]
374
- });
375
-
376
- expect(tracker.getData(result.path).tags).to.be.deep.equal({
377
- UNTRUSTED: [12, 16]
378
- });
379
-
380
- expect(tracker.getData(result.search).tags).to.be.deep.equal({
381
- UNTRUSTED: [7, 11]
382
- });
383
-
384
- ['protocol', 'auth', 'host', 'hostname', 'port', 'pathname', 'hash'].forEach((prop) => {
385
- expect(tracker.getData(result[prop])).to.be.null;
386
- });
387
- });
388
- });
389
-
390
- });
391
- });