mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.6 KiB
108 lines
2.6 KiB
var resolve = require("path").resolve
|
|
var writeFileSync = require("graceful-fs").writeFileSync
|
|
|
|
var mkdirp = require("mkdirp")
|
|
var mr = require("npm-registry-mock")
|
|
var osenv = require("osenv")
|
|
var rimraf = require("rimraf")
|
|
var test = require("tap").test
|
|
|
|
var common = require("../common-tap.js")
|
|
var toNerfDart = require("../../lib/config/nerf-dart.js")
|
|
|
|
var pkg = resolve(__dirname, "shrinkwrap-scoped-auth")
|
|
var outfile = resolve(pkg, "_npmrc")
|
|
var modules = resolve(pkg, "node_modules")
|
|
var tarballPath = "/scoped-underscore/-/scoped-underscore-1.3.1.tgz"
|
|
var tarballURL = common.registry + tarballPath
|
|
var tarball = resolve(__dirname, "../fixtures/scoped-underscore-1.3.1.tgz")
|
|
|
|
var server
|
|
|
|
var EXEC_OPTS = {
|
|
cwd : pkg
|
|
}
|
|
|
|
function mocks (server) {
|
|
var auth = "Bearer 0xabad1dea"
|
|
server.get(tarballPath, { authorization : auth }).replyWithFile(200, tarball)
|
|
server.get(tarballPath).reply(401, {
|
|
error : "unauthorized",
|
|
reason : "You are not authorized to access this db."
|
|
})
|
|
}
|
|
|
|
test("setup", function (t) {
|
|
mr({ port : common.port, plugin : mocks }, function (err, s) {
|
|
server = s
|
|
t.ok(s, "set up mock registry")
|
|
setup()
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test("authed npm install with shrinkwrapped scoped package", function (t) {
|
|
common.npm(
|
|
[
|
|
"install",
|
|
"--loglevel", "silent",
|
|
"--fetch-retries", 0,
|
|
"--userconfig", outfile
|
|
],
|
|
EXEC_OPTS,
|
|
function (err, code, stdout, stderr) {
|
|
t.ifError(err, "test runner executed without error")
|
|
t.equal(code, 0, "npm install exited OK")
|
|
t.notOk(stderr, "no output on stderr")
|
|
t.equal(
|
|
stdout,
|
|
"@scoped/underscore@1.3.1 node_modules/@scoped/underscore\n",
|
|
"module installed where expected"
|
|
)
|
|
|
|
t.end()
|
|
}
|
|
)
|
|
})
|
|
|
|
test("cleanup", function (t) {
|
|
server.close()
|
|
cleanup()
|
|
t.end()
|
|
})
|
|
|
|
var contents = "@scoped:registry="+common.registry+"\n" +
|
|
toNerfDart(common.registry)+":_authToken=0xabad1dea\n"
|
|
|
|
var json = {
|
|
name : "test-package-install",
|
|
version : "1.0.0"
|
|
}
|
|
|
|
var shrinkwrap = {
|
|
name : "test-package-install",
|
|
version : "1.0.0",
|
|
dependencies : {
|
|
"@scoped/underscore" : {
|
|
resolved : tarballURL,
|
|
from : ">=1.3.1 <2",
|
|
version : "1.3.1"
|
|
}
|
|
}
|
|
}
|
|
|
|
function setup () {
|
|
cleanup()
|
|
mkdirp.sync(modules)
|
|
writeFileSync(resolve(pkg, "package.json"), JSON.stringify(json, null, 2)+"\n")
|
|
writeFileSync(outfile, contents)
|
|
writeFileSync(
|
|
resolve(pkg, "npm-shrinkwrap.json"),
|
|
JSON.stringify(shrinkwrap, null, 2)+"\n"
|
|
)
|
|
}
|
|
|
|
function cleanup() {
|
|
process.chdir(osenv.tmpdir())
|
|
rimraf.sync(pkg)
|
|
}
|
|
|