]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/bearer-token-check.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / test / tap / bearer-token-check.js
1 var resolve = require('path').resolve
2 var writeFileSync = require('graceful-fs').writeFileSync
3
4 var mkdirp = require('mkdirp')
5 var mr = require('npm-registry-mock')
6 var osenv = require('osenv')
7 var rimraf = require('rimraf')
8 var test = require('tap').test
9
10 var common = require('../common-tap.js')
11 var toNerfDart = require('../../lib/config/nerf-dart.js')
12
13 var pkg = resolve(__dirname, 'install-bearer-check')
14 var outfile = resolve(pkg, '_npmrc')
15 var modules = resolve(pkg, 'node_modules')
16 var tarballPath = '/scoped-underscore/-/scoped-underscore-1.3.1.tgz'
17 // needs to be a different hostname to verify tokens (not) being sent correctly
18 var tarballURL = 'http://lvh.me:' + common.port + tarballPath
19 var tarball = resolve(__dirname, '../fixtures/scoped-underscore-1.3.1.tgz')
20
21 var server
22
23 var EXEC_OPTS = { cwd: pkg }
24
25 function mocks (server) {
26   var auth = 'Bearer 0xabad1dea'
27   server.get(tarballPath, { authorization: auth }).reply(403, {
28     error: 'token leakage',
29     reason: 'This token should not be sent.'
30   })
31   server.get(tarballPath).replyWithFile(200, tarball)
32 }
33
34 test('setup', function (t) {
35   mr({ port: common.port, plugin: mocks }, function (er, s) {
36     server = s
37     t.ok(s, 'set up mock registry')
38     setup()
39     t.end()
40   })
41 })
42
43 test('authed npm install with tarball not on registry', function (t) {
44   common.npm(
45     [
46       'install',
47       '--loglevel', 'silent',
48       '--json',
49       '--fetch-retries', 0,
50       '--userconfig', outfile
51     ],
52     EXEC_OPTS,
53     function (err, code, stdout, stderr) {
54       t.ifError(err, 'test runner executed without error')
55       t.equal(code, 0, 'npm install exited OK')
56       t.notOk(stderr, 'no output on stderr')
57       try {
58         var results = JSON.parse(stdout)
59       } catch (ex) {
60         console.error('#', ex)
61         t.ifError(ex, 'stdout was valid JSON')
62       }
63
64       if (results) {
65         var installedversion = {
66           'name': '@scoped/underscore',
67           'version': '1.3.1',
68           'from': 'http://lvh.me:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz',
69           'dependencies': {}
70         }
71         t.isDeeply(results[0], installedversion, '@scoped/underscore installed')
72       }
73
74       t.end()
75     }
76   )
77 })
78
79 test('cleanup', function (t) {
80   server.close()
81   cleanup()
82   t.end()
83 })
84
85 var contents = '@scoped:registry=' + common.registry + '\n' +
86                toNerfDart(common.registry) + ':_authToken=0xabad1dea\n'
87
88 var json = {
89   name: 'test-package-install',
90   version: '1.0.0'
91 }
92
93 var shrinkwrap = {
94   name: 'test-package-install',
95   version: '1.0.0',
96   dependencies: {
97     '@scoped/underscore': {
98       resolved: tarballURL,
99       from: '>=1.3.1 <2',
100       version: '1.3.1'
101     }
102   }
103 }
104
105 function setup () {
106   cleanup()
107   mkdirp.sync(modules)
108   writeFileSync(resolve(pkg, 'package.json'), JSON.stringify(json, null, 2) + '\n')
109   writeFileSync(outfile, contents)
110   writeFileSync(
111     resolve(pkg, 'npm-shrinkwrap.json'),
112     JSON.stringify(shrinkwrap, null, 2) + '\n'
113   )
114 }
115
116 function cleanup () {
117   process.chdir(osenv.tmpdir())
118   rimraf.sync(pkg)
119 }