1
+
var path = require('path')
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
+
12
+
var pkg = path.resolve(__dirname, path.basename(__filename, '.js'))
13
+
var outfile = path.resolve(pkg, '_npmrc')
14
+
15
+
var modules = path.resolve(pkg, 'node_modules')
16
+
var tarballPath = '/scoped-underscore/-/scoped-underscore-1.3.1.tgz'
17
+
var tarballURL = common.registry + tarballPath
18
+
var tarball = path.resolve(__dirname, '../fixtures/scoped-underscore-1.3.1.tgz')
19
+
20
+
var _auth = '0xabad1dea'
21
+
22
+
var server
23
+
24
+
function mocks (server) {
25
+
var auth = 'Basic ' + _auth
26
+
server.get(tarballPath, { authorization: auth }).replyWithFile(200, tarball)
27
+
server.get(tarballPath).reply(401, {
28
+
error: 'unauthorized',
29
+
reason: 'You are not authorized to access this db.'
30
+
})
31
+
}
32
+
33
+
test('setup', function (t) {
34
+
mr({ port: common.port, plugin: mocks }, function (er, s) {
35
+
server = s
36
+
t.ok(s, 'set up mock registry')
37
+
setup()
38
+
t.end()
39
+
})
40
+
})
41
+
42
+
test('authed npm install with shrinkwrapped global package using _auth', function (t) {
43
+
common.npm(
44
+
[
45
+
'install',
46
+
'--loglevel', 'warn',
47
+
'--json',
48
+
'--fetch-retries', 0,
49
+
'--userconfig', outfile
50
+
],
51
+
{cwd: pkg, stdio: [0, 'pipe', 2]},
52
+
function (err, code, stdout) {
53
+
if (err) throw err
54
+
t.equal(code, 0, 'npm install exited OK')
55
+
try {
56
+
var results = JSON.parse(stdout)
57
+
t.match(results, {added: [{name: '@scoped/underscore', version: '1.3.1'}]}, '@scoped/underscore installed')
58
+
} catch (ex) {
59
+
console.error('#', ex)
60
+
t.ifError(ex, 'stdout was valid JSON')
61
+
}
62
+
63
+
t.end()
64
+
}
65
+
)
66
+
})
67
+
68
+
test('cleanup', function (t) {
69
+
server.close()
70
+
cleanup()
71
+
t.end()
72
+
})
73
+
74
+
var contents = 'registry=' + common.registry + '\n' +
75
+
'_auth=' + _auth + '\n' +
76
+
'\'always-auth\'=true\n'
77
+
78
+
var json = {
79
+
name: 'test-package-install',
80
+
version: '1.0.0',
81
+
dependencies: {
82
+
'@scoped/underscore': '1.0.0'
83
+
}
84
+
}
85
+
86
+
var shrinkwrap = {
87
+
name: 'test-package-install',
88
+
version: '1.0.0',
89
+
dependencies: {
90
+
'@scoped/underscore': {
91
+
resolved: tarballURL,
92
+
version: '1.3.1'
93
+
}
94
+
}
95
+
}
96
+
97
+
function setup () {
98
+
cleanup()
99
+
mkdirp.sync(modules)
100
+
writeFileSync(path.resolve(pkg, 'package.json'), JSON.stringify(json, null, 2) + '\n')
101
+
writeFileSync(outfile, contents)
102
+
writeFileSync(
103
+
path.resolve(pkg, 'npm-shrinkwrap.json'),
104
+
JSON.stringify(shrinkwrap, null, 2) + '\n'
105
+
)
106
+
}
107
+
108
+
function cleanup () {
109
+
process.chdir(osenv.tmpdir())
110
+
rimraf.sync(pkg)
111
+
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4