1 var resolve = require("path").resolve
2 var writeFileSync = require("graceful-fs").writeFileSync
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
10 var common = require("../common-tap.js")
11 var toNerfDart = require("../../lib/config/nerf-dart.js")
13 var pkg = resolve(__dirname, "shrinkwrap-scoped-auth")
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 var tarballURL = common.registry + tarballPath
18 var tarball = resolve(__dirname, "../fixtures/scoped-underscore-1.3.1.tgz")
26 function mocks (server) {
27 var auth = "Bearer 0xabad1dea"
28 server.get(tarballPath, { authorization : auth }).replyWithFile(200, tarball)
29 server.get(tarballPath).reply(401, {
30 error : "unauthorized",
31 reason : "You are not authorized to access this db."
35 test("setup", function (t) {
36 mr({ port : common.port, plugin : mocks }, function (err, s) {
38 t.ok(s, "set up mock registry")
44 test("authed npm install with shrinkwrapped scoped package", function (t) {
48 "--loglevel", "silent",
50 "--userconfig", outfile
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")
59 "@scoped/underscore@1.3.1 node_modules/@scoped/underscore\n",
60 "module installed where expected"
68 test("cleanup", function (t) {
74 var contents = "@scoped:registry="+common.registry+"\n" +
75 toNerfDart(common.registry)+":_authToken=0xabad1dea\n"
78 name : "test-package-install",
83 name : "test-package-install",
86 "@scoped/underscore" : {
87 resolved : tarballURL,
97 writeFileSync(resolve(pkg, "package.json"), JSON.stringify(json, null, 2)+"\n")
98 writeFileSync(outfile, contents)
100 resolve(pkg, "npm-shrinkwrap.json"),
101 JSON.stringify(shrinkwrap, null, 2)+"\n"
106 process.chdir(osenv.tmpdir())