npm
Version:
a package manager for JavaScript
188 lines (168 loc) • 3.95 kB
JavaScript
var fs = require('fs')
var path = require('path')
var mkdirp = require('mkdirp')
var rimraf = require('rimraf')
var mr = require('npm-registry-mock')
var test = require('tap').test
var common = require('../common-tap.js')
var pkg = path.resolve(__dirname, 'access')
var server
var scoped = {
name: '@scoped/pkg',
version: '1.1.1'
}
var body = {
access: 'public'
}
function mocks (server) {
server.post('/-/package/@scoped%2fpkg/access', JSON.stringify(body))
.reply(200, { 'access': 'public' })
server.post('/-/package/@scoped%2fanother/access', JSON.stringify(body))
.reply(200, { 'access': 'public' })
}
test('setup', function (t) {
mkdirp(pkg, function (er) {
t.ifError(er, pkg + ' made successfully')
mr({port: common.port, plugin: mocks}, function (er, s) {
server = s
fs.writeFile(
path.join(pkg, 'package.json'),
JSON.stringify(scoped),
function (er) {
t.ifError(er, 'wrote package.json')
t.end()
}
)
})
})
})
test('npm access on current package', function (t) {
common.npm(
[
'access',
'public',
'--registry', common.registry,
'--loglevel', 'silent'
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ifError(er, 'npm access')
t.notOk(code, 'exited OK')
t.notOk(stderr, 'no error output')
t.end()
}
)
})
test('npm access on named package', function (t) {
common.npm(
[
'access',
'public', '@scoped/another',
'--registry', common.registry,
'--loglevel', 'silent'
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ifError(er, 'npm access')
t.notOk(code, 'exited OK')
t.notOk(stderr, 'no error output')
t.end()
}
)
})
test('npm change access on unscoped package', function (t) {
common.npm(
[
'access',
'restricted', 'yargs',
'--registry', common.registry
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.ok(stderr.match(/you can't change the access level of unscoped packages/))
t.end()
}
)
})
test('npm access add', function (t) {
common.npm(
[
'access',
'add', '@scoped/another',
'--registry', common.registry
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.ok(stderr.match(/npm access add isn't implemented yet!/))
t.end()
}
)
})
test('npm access rm', function (t) {
common.npm(
[
'access',
'rm', '@scoped/another',
'--registry', common.registry
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.ok(stderr.match(/npm access rm isn't implemented yet!/))
t.end()
}
)
})
test('npm access ls', function (t) {
common.npm(
[
'access',
'ls', '@scoped/another',
'--registry', common.registry
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.ok(stderr.match(/npm access ls isn't implemented yet!/))
t.end()
}
)
})
test('npm access edit', function (t) {
common.npm(
[
'access',
'edit', '@scoped/another',
'--registry', common.registry
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.ok(stderr.match(/npm access edit isn't implemented yet!/))
t.end()
}
)
})
test('npm access blerg', function (t) {
common.npm(
[
'access',
'blerg', '@scoped/another',
'--registry', common.registry
],
{ cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.ok(stderr.match(/Usage:/))
t.end()
}
)
})
test('cleanup', function (t) {
t.pass('cleaned up')
rimraf.sync(pkg)
server.close()
t.end()
})