aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/test/tap/scope-header.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/test/tap/scope-header.js')
-rw-r--r--deps/node/deps/npm/test/tap/scope-header.js160
1 files changed, 160 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/scope-header.js b/deps/node/deps/npm/test/tap/scope-header.js
new file mode 100644
index 00000000..3eb70f13
--- /dev/null
+++ b/deps/node/deps/npm/test/tap/scope-header.js
@@ -0,0 +1,160 @@
+'use strict'
+var path = require('path')
+var test = require('tap').test
+var mr = require('npm-registry-mock')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+var common = require('../common-tap.js')
+
+var basedir = path.join(__dirname, path.basename(__filename, '.js'))
+var testdir = path.join(basedir, 'testdir')
+var withScope = path.join(testdir, 'with-scope')
+var withoutScope = path.join(testdir, 'without-scope')
+var onlyProjectScope = path.join(testdir, 'only-project-scope')
+var cachedir = path.join(basedir, 'cache')
+var globaldir = path.join(basedir, 'global')
+var tmpdir = path.join(basedir, 'tmp')
+
+var env = common.newEnv().extend({
+ npm_config_cache: cachedir,
+ npm_config_tmp: tmpdir,
+ npm_config_prefix: globaldir,
+ npm_config_registry: common.registry,
+ npm_config_loglevel: 'warn'
+})
+
+var conf = function (cwd) {
+ return {
+ cwd: cwd || testdir,
+ env: env
+ }
+}
+var server
+var fixture = new Tacks(Dir({
+ cache: Dir(),
+ global: Dir(),
+ tmp: Dir(),
+ testdir: Dir({
+ 'with-scope': Dir({
+ 'package.json': File({
+ name: '@example/with-scope',
+ version: '1.0.0'
+ })
+ }),
+ 'without-scope': Dir({
+ 'package.json': File({
+ name: 'without-scope',
+ version: '1.0.0'
+ })
+ }),
+ 'only-project-scope': Dir({
+ '.npmrc': File('@example:registry=thisisinvalid\n'),
+ 'package.json': File({
+ name: '@example/only-project-scope',
+ version: '1.0.0'
+ })
+ })
+ })
+}))
+
+function setup () {
+ cleanup()
+ fixture.create(basedir)
+}
+
+function cleanup () {
+ fixture.remove(basedir)
+}
+
+var scopeHeaderTestGotScope = {
+ 'time': {'1.0.0': ''},
+ 'dist-tags': {'latest': '1.0.0'},
+ 'versions': {
+ '1.0.0': {
+ name: 'scope-header-test',
+ version: '1.0.0',
+ gotScope: true
+ }
+ }
+}
+var scopeHeaderTestNoScope = {
+ 'time': {'1.0.0': ''},
+ 'dist-tags': {'latest': '1.0.0'},
+ 'versions': {
+ '1.0.0': {
+ name: 'scope-header-test',
+ version: '1.0.0',
+ gotScope: false
+ }
+ }
+}
+
+test('setup', function (t) {
+ setup()
+ mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
+ if (err) throw err
+ server = s
+ server.get('/scope-header-test', {
+ 'NPM-Scope': '@example'
+ }).many().reply('200', scopeHeaderTestGotScope)
+ server.get('/scope-header-test', {}).many().reply('200', scopeHeaderTestNoScope)
+ t.done()
+ })
+})
+
+test('with-scope', function (t) {
+ common.npm(['view', '--cache-min=0', 'scope-header-test', 'gotScope'], conf(withScope), function (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'command ran ok')
+ t.comment(stderr.trim())
+ t.is(stdout.trim(), 'true', 'got version matched to scope header')
+ t.done()
+ })
+})
+
+test('without-scope', function (t) {
+ common.npm(['view', '--cache-min=0', 'scope-header-test', 'gotScope'], conf(withoutScope), function (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'command ran ok')
+ t.comment(stderr.trim())
+ t.is(stdout.trim(), 'false', 'got version matched to NO scope header')
+ t.done()
+ })
+})
+
+test('scope can be forced by having an explicit one', function (t) {
+ common.npm([
+ 'view',
+ '--cache-min=0',
+ '--scope=example',
+ 'scope-header-test',
+ 'gotScope'
+ ], conf(withoutScope), function (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'command ran ok')
+ t.comment(stderr.trim())
+ t.is(stdout.trim(), 'true', 'got version matched to scope header')
+ t.done()
+ })
+})
+
+test('only the project scope is used', function (t) {
+ common.npm([
+ 'view',
+ '--cache-min=0',
+ 'scope-header-test', 'gotScope'
+ ], conf(onlyProjectScope), function (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'command ran ok')
+ t.comment(stderr.trim())
+ t.is(stdout.trim(), 'true', 'got version scope')
+ t.done()
+ })
+})
+
+test('cleanup', function (t) {
+ server.close()
+ cleanup()
+ t.done()
+})