summaryrefslogtreecommitdiff
path: root/spec/integration/js/npm_spec.rb
blob: 9cc15655087d02802c99a4663eeb2573e63268b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
require 'spec_helper'

RSpec.describe "npm" do
  include_examples "each report version", "js", "npm"

  context 'when scanning a project with no dependencies' do
    subject { runner.scan }

    before do
      runner.add_file('package.json') do
        JSON.generate(name: "example", version: "1.0.0", license: "ISC")
      end
      runner.add_file('package-lock.json') do
        JSON.generate(name: "example", version: "1.0.0", lockfileVersion: 1)
      end
    end

    specify { expect(subject).to match_schema(version: '2.0') }
    specify { expect(subject.dependency_names).to match_array(['example']) }
  end

  context 'when scanning a project with a single dependency and a `package-lock.json` file' do
    subject { runner.scan }

    before do
      runner.mount(dir: fixture_file('js/single-declared-dependency'))
    end

    specify { expect(subject).to match_schema(version: '2.0') }

    specify do
      [
        ["2md", "0.0.4", ["Apache-2.0"]],
        ["abab", "2.0.3", ["BSD-3-Clause"]],
        ["acorn", "6.4.1", ["MIT"]],
        ["acorn", "7.1.1", ["MIT"]],
        ["acorn-globals", "4.3.4", ["MIT"]],
        ["acorn-walk", "6.2.0", ["MIT"]],
        ["ajv", "6.12.2", ["MIT"]],
        ["ansi-regex", "4.1.0", ["MIT"]],
        ["ansi-styles", "3.2.1", ["MIT"]],
        ["array-equal", "1.0.0", ["MIT"]],
        ["asn1", "0.2.4", ["MIT"]],
        ["assert-plus", "1.0.0", ["MIT"]],
        ["asynckit", "0.4.0", ["MIT"]],
        ["aws-sign2", "0.7.0", ["Apache-2.0"]],
        ["aws4", "1.9.1", ["MIT"]],
        ["bcrypt-pbkdf", "1.0.2", ["BSD-3-Clause"]],
        ["browser-process-hrtime", "1.0.0", ["BSD-2-Clause"]],
        ["camelcase", "5.3.1", ["MIT"]],
        ["caseless", "0.12.0", ["Apache-2.0"]],
        ["cliui", "5.0.0", ["ISC"]],
        ["color-convert", "1.9.3", ["MIT"]],
        ["color-name", "1.1.3", ["MIT"]],
        ["combined-stream", "1.0.8", ["MIT"]],
        ["core-util-is", "1.0.2", ["MIT"]],
        ["cssom", "0.3.8", ["MIT"]],
        ["cssom", "0.4.4", ["MIT"]],
        ["cssstyle", "2.2.0", ["MIT"]],
        ["dashdash", "1.14.1", ["MIT"]],
        ["data-urls", "1.1.0", ["MIT"]],
        ["decamelize", "1.2.0", ["MIT"]],
        ["deep-is", "0.1.3", ["MIT"]],
        ["delayed-stream", "1.0.0", ["MIT"]],
        ["domexception", "1.0.1", ["MIT"]],
        ["ecc-jsbn", "0.1.2", ["MIT"]],
        ["emoji-regex", "7.0.3", ["MIT"]],
        ["escodegen", "1.14.1", ["BSD-2-Clause"]],
        ["esprima", "4.0.1", ["BSD-2-Clause"]],
        ["estraverse", "4.3.0", ["BSD-2-Clause"]],
        ["esutils", "2.0.3", ["BSD-2-Clause"]],
        ["extend", "3.0.2", ["MIT"]],
        ["extsprintf", "1.3.0", ["MIT"]],
        ["fast-deep-equal", "3.1.1", ["MIT"]],
        ["fast-json-stable-stringify", "2.1.0", ["MIT"]],
        ["fast-levenshtein", "2.0.6", ["MIT"]],
        ["find-up", "3.0.0", ["MIT"]],
        ["forever-agent", "0.6.1", ["Apache-2.0"]],
        ["form-data", "2.3.3", ["MIT"]],
        ["fs-extra", "8.1.0", ["MIT"]],
        ["get-caller-file", "2.0.5", ["ISC"]],
        ["getpass", "0.1.7", ["MIT"]],
        ["graceful-fs", "4.2.3", ["ISC"]],
        ["grapheme-splitter", "1.0.4", ["MIT"]],
        ["har-schema", "2.0.0", ["ISC"]],
        ["har-validator", "5.1.3", ["MIT"]],
        ["html-encoding-sniffer", "1.0.2", ["MIT"]],
        ["http-signature", "1.2.0", ["MIT"]],
        ["iconv-lite", "0.4.24", ["MIT"]],
        ["ip-regex", "2.1.0", ["MIT"]],
        ["is-fullwidth-code-point", "2.0.0", ["MIT"]],
        ["is-typedarray", "1.0.0", ["MIT"]],
        ["isstream", "0.1.2", ["MIT"]],
        ["jsbn", "0.1.1", ["MIT"]],
        ["jsdom", "15.2.1", ["MIT"]],
        ["json-schema", "0.2.3", ["AFL-2.1", "BSD-4-Clause"]],
        ["json-schema-traverse", "0.4.1", ["MIT"]],
        ["json-stringify-safe", "5.0.1", ["ISC"]],
        ["jsonfile", "4.0.0", ["MIT"]],
        ["jsprim", "1.4.1", ["MIT"]],
        ["levn", "0.3.0", ["MIT"]],
        ["locate-path", "3.0.0", ["MIT"]],
        ["lodash", "4.17.15", ["MIT"]],
        ["lodash.sortby", "4.7.0", ["MIT"]],
        ["mime-db", "1.43.0", ["MIT"]],
        ["mime-types", "2.1.26", ["MIT"]],
        ["nwsapi", "2.2.0", ["MIT"]],
        ["oauth-sign", "0.9.0", ["Apache-2.0"]],
        ["optionator", "0.8.3", ["MIT"]],
        ["p-limit", "2.3.0", ["MIT"]],
        ["p-locate", "3.0.0", ["MIT"]],
        ["p-try", "2.2.0", ["MIT"]],
        ["parse5", "5.1.0", ["MIT"]],
        ["path-exists", "3.0.0", ["MIT"]],
        ["performance-now", "2.1.0", ["MIT"]],
        ["pn", "1.1.0", ["MIT"]],
        ["prelude-ls", "1.1.2", ["MIT"]],
        ["psl", "1.8.0", ["MIT"]],
        ["punycode", "2.1.1", ["MIT"]],
        ["qs", "6.5.2", ["BSD-3-Clause"]],
        ["regenerator-runtime", "0.13.5", ["MIT"]],
        ["request", "2.88.2", ["Apache-2.0"]],
        ["request-promise-core", "1.1.3", ["ISC"]],
        ["request-promise-native", "1.0.8", ["ISC"]],
        ["require-directory", "2.1.1", ["MIT"]],
        ["require-main-filename", "2.0.0", ["ISC"]],
        ["safe-buffer", "5.2.0", ["MIT"]],
        ["safer-buffer", "2.1.2", ["MIT"]],
        ["saxes", "3.1.11", ["ISC"]],
        ["set-blocking", "2.0.0", ["ISC"]],
        ["source-map", "0.6.1", ["BSD-3-Clause"]],
        ["sshpk", "1.16.1", ["MIT"]],
        ["stealthy-require", "1.1.1", ["ISC"]],
        ["string-width", "3.1.0", ["MIT"]],
        ["strip-ansi", "5.2.0", ["MIT"]],
        ["symbol-tree", "3.2.4", ["MIT"]],
        ["tough-cookie", "2.5.0", ["BSD-3-Clause"]],
        ["tough-cookie", "3.0.1", ["BSD-3-Clause"]],
        ["tr46", "1.0.1", ["MIT"]],
        ["tunnel-agent", "0.6.0", ["Apache-2.0"]],
        ["tweetnacl", "0.14.5", ["Unlicense"]],
        ["type-check", "0.3.2", ["MIT"]],
        ["universalify", "0.1.2", ["MIT"]],
        ["uri-js", "4.2.2", ["BSD-2-Clause"]],
        ["uuid", "3.4.0", ["MIT"]],
        ["verror", "1.10.0", ["MIT"]],
        ["w3c-hr-time", "1.0.2", ["MIT"]],
        ["w3c-xmlserializer", "1.1.2", ["MIT"]],
        ["webidl-conversions", "4.0.2", ["BSD-2-Clause"]],
        ["whatwg-encoding", "1.0.5", ["MIT"]],
        ["whatwg-mimetype", "2.3.0", ["MIT"]],
        ["whatwg-url", "7.1.0", ["MIT"]],
        ["which-module", "2.0.0", ["ISC"]],
        ["word-wrap", "1.2.3", ["MIT"]],
        ["wrap-ansi", "5.1.0", ["MIT"]],
        ["ws", "7.2.3", ["MIT"]],
        ["xml-name-validator", "3.0.0", ["Apache-2.0"]],
        ["xmlchars", "2.2.0", ["MIT"]],
        ["y18n", "4.0.0", ["ISC"]],
        ["yargs", "14.2.3", ["MIT"]],
        ["yargs-parser", "15.0.1", ["ISC"]]
      ].each do |item|
        expect(subject.dependency_names).to include(item[0])
        expect(subject.licenses_for(item[0])).to match_array(item[-1])
      end
    end
  end

  context 'when scanning a project without a `package-lock.json` file' do
    subject { runner.scan }

    before do
      runner.add_file('package.json', fixture_file_content('js/single-declared-dependency/package.json'))
    end

    specify { expect(subject).to match_schema(version: '2.0') }

    specify do
      [
        ["2md", "0.0.4", ["Apache-2.0"]],
        ["abab", "2.0.3", ["BSD-3-Clause"]],
        ["acorn", "6.4.1", ["MIT"]],
        ["acorn", "7.1.1", ["MIT"]],
        ["acorn-globals", "4.3.4", ["MIT"]],
        ["acorn-walk", "6.2.0", ["MIT"]],
        ["ajv", "6.12.2", ["MIT"]],
        ["ansi-regex", "4.1.0", ["MIT"]],
        ["ansi-styles", "3.2.1", ["MIT"]],
        ["array-equal", "1.0.0", ["MIT"]],
        ["asn1", "0.2.4", ["MIT"]],
        ["assert-plus", "1.0.0", ["MIT"]],
        ["asynckit", "0.4.0", ["MIT"]],
        ["aws-sign2", "0.7.0", ["Apache-2.0"]],
        ["aws4", "1.9.1", ["MIT"]],
        ["bcrypt-pbkdf", "1.0.2", ["BSD-3-Clause"]],
        ["browser-process-hrtime", "1.0.0", ["BSD-2-Clause"]],
        ["camelcase", "5.3.1", ["MIT"]],
        ["caseless", "0.12.0", ["Apache-2.0"]],
        ["cliui", "5.0.0", ["ISC"]],
        ["color-convert", "1.9.3", ["MIT"]],
        ["color-name", "1.1.3", ["MIT"]],
        ["combined-stream", "1.0.8", ["MIT"]],
        ["core-util-is", "1.0.2", ["MIT"]],
        ["cssom", "0.3.8", ["MIT"]],
        ["cssom", "0.4.4", ["MIT"]],
        ["cssstyle", "2.2.0", ["MIT"]],
        ["dashdash", "1.14.1", ["MIT"]],
        ["data-urls", "1.1.0", ["MIT"]],
        ["decamelize", "1.2.0", ["MIT"]],
        ["deep-is", "0.1.3", ["MIT"]],
        ["delayed-stream", "1.0.0", ["MIT"]],
        ["domexception", "1.0.1", ["MIT"]],
        ["ecc-jsbn", "0.1.2", ["MIT"]],
        ["emoji-regex", "7.0.3", ["MIT"]],
        ["escodegen", "1.14.1", ["BSD-2-Clause"]],
        ["esprima", "4.0.1", ["BSD-2-Clause"]],
        ["estraverse", "4.3.0", ["BSD-2-Clause"]],
        ["esutils", "2.0.3", ["BSD-2-Clause"]],
        ["extend", "3.0.2", ["MIT"]],
        ["extsprintf", "1.3.0", ["MIT"]],
        ["fast-deep-equal", "3.1.1", ["MIT"]],
        ["fast-json-stable-stringify", "2.1.0", ["MIT"]],
        ["fast-levenshtein", "2.0.6", ["MIT"]],
        ["find-up", "3.0.0", ["MIT"]],
        ["forever-agent", "0.6.1", ["Apache-2.0"]],
        ["form-data", "2.3.3", ["MIT"]],
        ["fs-extra", "8.1.0", ["MIT"]],
        ["get-caller-file", "2.0.5", ["ISC"]],
        ["getpass", "0.1.7", ["MIT"]],
        ["graceful-fs", "4.2.3", ["ISC"]],
        ["grapheme-splitter", "1.0.4", ["MIT"]],
        ["har-schema", "2.0.0", ["ISC"]],
        ["har-validator", "5.1.3", ["MIT"]],
        ["html-encoding-sniffer", "1.0.2", ["MIT"]],
        ["http-signature", "1.2.0", ["MIT"]],
        ["iconv-lite", "0.4.24", ["MIT"]],
        ["ip-regex", "2.1.0", ["MIT"]],
        ["is-fullwidth-code-point", "2.0.0", ["MIT"]],
        ["is-typedarray", "1.0.0", ["MIT"]],
        ["isstream", "0.1.2", ["MIT"]],
        ["jsbn", "0.1.1", ["MIT"]],
        ["jsdom", "15.2.1", ["MIT"]],
        ["json-schema", "0.2.3", ["AFL-2.1", "BSD-4-Clause"]],
        ["json-schema-traverse", "0.4.1", ["MIT"]],
        ["json-stringify-safe", "5.0.1", ["ISC"]],
        ["jsonfile", "4.0.0", ["MIT"]],
        ["jsprim", "1.4.1", ["MIT"]],
        ["levn", "0.3.0", ["MIT"]],
        ["locate-path", "3.0.0", ["MIT"]],
        ["lodash", "4.17.15", ["MIT"]],
        ["lodash.sortby", "4.7.0", ["MIT"]],
        ["mime-db", "1.43.0", ["MIT"]],
        ["mime-types", "2.1.26", ["MIT"]],
        ["nwsapi", "2.2.0", ["MIT"]],
        ["oauth-sign", "0.9.0", ["Apache-2.0"]],
        ["optionator", "0.8.3", ["MIT"]],
        ["p-limit", "2.3.0", ["MIT"]],
        ["p-locate", "3.0.0", ["MIT"]],
        ["p-try", "2.2.0", ["MIT"]],
        ["parse5", "5.1.0", ["MIT"]],
        ["path-exists", "3.0.0", ["MIT"]],
        ["performance-now", "2.1.0", ["MIT"]],
        ["pn", "1.1.0", ["MIT"]],
        ["prelude-ls", "1.1.2", ["MIT"]],
        ["psl", "1.8.0", ["MIT"]],
        ["punycode", "2.1.1", ["MIT"]],
        ["qs", "6.5.2", ["BSD-3-Clause"]],
        ["regenerator-runtime", "0.13.5", ["MIT"]],
        ["request", "2.88.2", ["Apache-2.0"]],
        ["request-promise-core", "1.1.3", ["ISC"]],
        ["request-promise-native", "1.0.8", ["ISC"]],
        ["require-directory", "2.1.1", ["MIT"]],
        ["require-main-filename", "2.0.0", ["ISC"]],
        ["safe-buffer", "5.2.0", ["MIT"]],
        ["safer-buffer", "2.1.2", ["MIT"]],
        ["saxes", "3.1.11", ["ISC"]],
        ["set-blocking", "2.0.0", ["ISC"]],
        ["source-map", "0.6.1", ["BSD-3-Clause"]],
        ["sshpk", "1.16.1", ["MIT"]],
        ["stealthy-require", "1.1.1", ["ISC"]],
        ["string-width", "3.1.0", ["MIT"]],
        ["strip-ansi", "5.2.0", ["MIT"]],
        ["symbol-tree", "3.2.4", ["MIT"]],
        ["tough-cookie", "2.5.0", ["BSD-3-Clause"]],
        ["tough-cookie", "3.0.1", ["BSD-3-Clause"]],
        ["tr46", "1.0.1", ["MIT"]],
        ["tunnel-agent", "0.6.0", ["Apache-2.0"]],
        ["tweetnacl", "0.14.5", ["Unlicense"]],
        ["type-check", "0.3.2", ["MIT"]],
        ["universalify", "0.1.2", ["MIT"]],
        ["uri-js", "4.2.2", ["BSD-2-Clause"]],
        ["uuid", "3.4.0", ["MIT"]],
        ["verror", "1.10.0", ["MIT"]],
        ["w3c-hr-time", "1.0.2", ["MIT"]],
        ["w3c-xmlserializer", "1.1.2", ["MIT"]],
        ["webidl-conversions", "4.0.2", ["BSD-2-Clause"]],
        ["whatwg-encoding", "1.0.5", ["MIT"]],
        ["whatwg-mimetype", "2.3.0", ["MIT"]],
        ["whatwg-url", "7.1.0", ["MIT"]],
        ["which-module", "2.0.0", ["ISC"]],
        ["word-wrap", "1.2.3", ["MIT"]],
        ["wrap-ansi", "5.1.0", ["MIT"]],
        ["ws", "7.2.3", ["MIT"]],
        ["xml-name-validator", "3.0.0", ["Apache-2.0"]],
        ["xmlchars", "2.2.0", ["MIT"]],
        ["y18n", "4.0.0", ["ISC"]],
        ["yargs", "14.2.3", ["MIT"]],
        ["yargs-parser", "15.0.1", ["ISC"]]
      ].each do |item|
        expect(subject.dependency_names).to include(item[0])
        expect(subject.licenses_for(item[0])).to match_array(item.last)
      end
    end
  end

  context "when scanning a project with an older engine" do
    subject { runner.scan }

    before do
      runner.add_file('package.json') do
        JSON.generate(
          name: "example",
          version: "1.0.0",
          license: "ISC",
          engines: { node: ">=10.0.0 <11.0.0" },
          dependencies: { '2md' => '0.0.4' }
        )
      end
    end

    specify { expect(subject).to match_schema(version: '2.0') }

    [
      ["2md", "0.0.4", ["Apache-2.0"]],
      ["abab", "2.0.3", ["BSD-3-Clause"]],
      ["acorn", "6.4.1", ["MIT"]],
      ["acorn", "7.1.1", ["MIT"]],
      ["acorn-globals", "4.3.4", ["MIT"]],
      ["acorn-walk", "6.2.0", ["MIT"]],
      ["ajv", "6.12.2", ["MIT"]],
      ["ansi-regex", "4.1.0", ["MIT"]],
      ["ansi-styles", "3.2.1", ["MIT"]],
      ["array-equal", "1.0.0", ["MIT"]],
      ["asn1", "0.2.4", ["MIT"]],
      ["assert-plus", "1.0.0", ["MIT"]],
      ["asynckit", "0.4.0", ["MIT"]],
      ["aws-sign2", "0.7.0", ["Apache-2.0"]],
      ["aws4", "1.9.1", ["MIT"]],
      ["bcrypt-pbkdf", "1.0.2", ["BSD-3-Clause"]],
      ["browser-process-hrtime", "1.0.0", ["BSD-2-Clause"]],
      ["camelcase", "5.3.1", ["MIT"]],
      ["caseless", "0.12.0", ["Apache-2.0"]],
      ["cliui", "5.0.0", ["ISC"]],
      ["color-convert", "1.9.3", ["MIT"]],
      ["color-name", "1.1.3", ["MIT"]],
      ["combined-stream", "1.0.8", ["MIT"]],
      ["core-util-is", "1.0.2", ["MIT"]],
      ["cssom", "0.3.8", ["MIT"]],
      ["cssom", "0.4.4", ["MIT"]],
      ["cssstyle", "2.2.0", ["MIT"]],
      ["dashdash", "1.14.1", ["MIT"]],
      ["data-urls", "1.1.0", ["MIT"]],
      ["decamelize", "1.2.0", ["MIT"]],
      ["deep-is", "0.1.3", ["MIT"]],
      ["delayed-stream", "1.0.0", ["MIT"]],
      ["domexception", "1.0.1", ["MIT"]],
      ["ecc-jsbn", "0.1.2", ["MIT"]],
      ["emoji-regex", "7.0.3", ["MIT"]],
      ["escodegen", "1.14.1", ["BSD-2-Clause"]],
      ["esprima", "4.0.1", ["BSD-2-Clause"]],
      ["estraverse", "4.3.0", ["BSD-2-Clause"]],
      ["esutils", "2.0.3", ["BSD-2-Clause"]],
      ["extend", "3.0.2", ["MIT"]],
      ["extsprintf", "1.3.0", ["MIT"]],
      ["fast-deep-equal", "3.1.1", ["MIT"]],
      ["fast-json-stable-stringify", "2.1.0", ["MIT"]],
      ["fast-levenshtein", "2.0.6", ["MIT"]],
      ["find-up", "3.0.0", ["MIT"]],
      ["forever-agent", "0.6.1", ["Apache-2.0"]],
      ["form-data", "2.3.3", ["MIT"]],
      ["fs-extra", "8.1.0", ["MIT"]],
      ["get-caller-file", "2.0.5", ["ISC"]],
      ["getpass", "0.1.7", ["MIT"]],
      ["graceful-fs", "4.2.3", ["ISC"]],
      ["grapheme-splitter", "1.0.4", ["MIT"]],
      ["har-schema", "2.0.0", ["ISC"]],
      ["har-validator", "5.1.3", ["MIT"]],
      ["html-encoding-sniffer", "1.0.2", ["MIT"]],
      ["http-signature", "1.2.0", ["MIT"]],
      ["iconv-lite", "0.4.24", ["MIT"]],
      ["ip-regex", "2.1.0", ["MIT"]],
      ["is-fullwidth-code-point", "2.0.0", ["MIT"]],
      ["is-typedarray", "1.0.0", ["MIT"]],
      ["isstream", "0.1.2", ["MIT"]],
      ["jsbn", "0.1.1", ["MIT"]],
      ["jsdom", "15.2.1", ["MIT"]],
      ["json-schema", "0.2.3", ["AFL-2.1", "BSD-4-Clause"]],
      ["json-schema-traverse", "0.4.1", ["MIT"]],
      ["json-stringify-safe", "5.0.1", ["ISC"]],
      ["jsonfile", "4.0.0", ["MIT"]],
      ["jsprim", "1.4.1", ["MIT"]],
      ["levn", "0.3.0", ["MIT"]],
      ["locate-path", "3.0.0", ["MIT"]],
      ["lodash", "4.17.15", ["MIT"]],
      ["lodash.sortby", "4.7.0", ["MIT"]],
      ["mime-db", "1.43.0", ["MIT"]],
      ["mime-types", "2.1.26", ["MIT"]],
      ["nwsapi", "2.2.0", ["MIT"]],
      ["oauth-sign", "0.9.0", ["Apache-2.0"]],
      ["optionator", "0.8.3", ["MIT"]],
      ["p-limit", "2.3.0", ["MIT"]],
      ["p-locate", "3.0.0", ["MIT"]],
      ["p-try", "2.2.0", ["MIT"]],
      ["parse5", "5.1.0", ["MIT"]],
      ["path-exists", "3.0.0", ["MIT"]],
      ["performance-now", "2.1.0", ["MIT"]],
      ["pn", "1.1.0", ["MIT"]],
      ["prelude-ls", "1.1.2", ["MIT"]],
      ["psl", "1.8.0", ["MIT"]],
      ["punycode", "2.1.1", ["MIT"]],
      ["qs", "6.5.2", ["BSD-3-Clause"]],
      ["regenerator-runtime", "0.13.5", ["MIT"]],
      ["request", "2.88.2", ["Apache-2.0"]],
      ["request-promise-core", "1.1.3", ["ISC"]],
      ["request-promise-native", "1.0.8", ["ISC"]],
      ["require-directory", "2.1.1", ["MIT"]],
      ["require-main-filename", "2.0.0", ["ISC"]],
      ["safe-buffer", "5.2.0", ["MIT"]],
      ["safer-buffer", "2.1.2", ["MIT"]],
      ["saxes", "3.1.11", ["ISC"]],
      ["set-blocking", "2.0.0", ["ISC"]],
      ["source-map", "0.6.1", ["BSD-3-Clause"]],
      ["sshpk", "1.16.1", ["MIT"]],
      ["stealthy-require", "1.1.1", ["ISC"]],
      ["string-width", "3.1.0", ["MIT"]],
      ["strip-ansi", "5.2.0", ["MIT"]],
      ["symbol-tree", "3.2.4", ["MIT"]],
      ["tough-cookie", "2.5.0", ["BSD-3-Clause"]],
      ["tough-cookie", "3.0.1", ["BSD-3-Clause"]],
      ["tr46", "1.0.1", ["MIT"]],
      ["tunnel-agent", "0.6.0", ["Apache-2.0"]],
      ["tweetnacl", "0.14.5", ["Unlicense"]],
      ["type-check", "0.3.2", ["MIT"]],
      ["universalify", "0.1.2", ["MIT"]],
      ["uri-js", "4.2.2", ["BSD-2-Clause"]],
      ["uuid", "3.4.0", ["MIT"]],
      ["verror", "1.10.0", ["MIT"]],
      ["w3c-hr-time", "1.0.2", ["MIT"]],
      ["w3c-xmlserializer", "1.1.2", ["MIT"]],
      ["webidl-conversions", "4.0.2", ["BSD-2-Clause"]],
      ["whatwg-encoding", "1.0.5", ["MIT"]],
      ["whatwg-mimetype", "2.3.0", ["MIT"]],
      ["whatwg-url", "7.1.0", ["MIT"]],
      ["which-module", "2.0.0", ["ISC"]],
      ["word-wrap", "1.2.3", ["MIT"]],
      ["wrap-ansi", "5.1.0", ["MIT"]],
      ["ws", "7.2.3", ["MIT"]],
      ["xml-name-validator", "3.0.0", ["Apache-2.0"]],
      ["xmlchars", "2.2.0", ["MIT"]],
      ["y18n", "4.0.0", ["ISC"]],
      ["yargs", "14.2.3", ["MIT"]],
      ["yargs-parser", "15.0.1", ["ISC"]]
    ].each do |item|
      specify { expect(subject.licenses_for(item[0])).to match_array(item[2]) }
    end
  end
end