Welcome to mirror list, hosted at ThFree Co, Russian Federation.

shrinkwrap-scoped-auth.js « tap « test - github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 81b205d2e7b927bd9acd63f1d7ae19f032e9316b (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
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",
      "--json",
      "--fetch-retries", 0,
      "--userconfig", outfile
    ],
    EXEC_OPTS,
    function (err, code, stdout, stderr) {
      console.error(stderr)
      t.ifError(err, "test runner executed without error")
      t.equal(code, 0, "npm install exited OK")
      t.notOk(stderr, "no output on stderr")
      try {
        var results = JSON.parse(stdout)
      }
      catch (ex) {
        console.error('#', ex)
        t.ifError(ex, "stdout was valid JSON")
      }
      if (results) {
        var installedversion = {
          'version': '1.3.1',
          'from': '>=1.3.1 <2',
          'resolved': 'http://localhost:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz'
        }
        t.isDeeply(results.dependencies['@scoped/underscore'], installedversion, '@scoped/underscore installed')
      }

      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)
}