node/deps/npm/test/tap/org.js

137 lines
3.2 KiB
JavaScript

'use strict'
var test = require('tap').test
var common = require('../common-tap.js')
var mr = common.fakeRegistry.compat
var server
test('setup', function (t) {
mr({port: common.port}, function (err, s) {
t.ifError(err, 'registry mocked successfully')
server = s
t.end()
})
})
const names = ['add', 'set']
const roles = ['developer', 'admin', 'owner']
names.forEach(function (name) {
test('org ' + name + ' [orgname] [username]: defaults to developer', function (t) {
const membershipData = {
org: {
name: 'myorg',
size: 1
},
user: 'myuser',
role: 'developer'
}
server.put('/-/org/myorg/user', JSON.stringify({
user: 'myuser'
})).reply(200, membershipData)
common.npm([
'org', 'add', 'myorg', 'myuser',
'--json',
'--registry', common.registry,
'--loglevel', 'silent'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm org')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
t.same(JSON.parse(stdout), membershipData)
t.end()
})
})
roles.forEach(function (role) {
test('org ' + name + ' [orgname] [username]: accepts role ' + role, function (t) {
const membershipData = {
org: {
name: 'myorg',
size: 1
},
user: 'myuser',
role: role
}
server.put('/-/org/myorg/user', JSON.stringify({
user: 'myuser'
})).reply(200, membershipData)
common.npm([
'org', name, 'myorg', 'myuser',
'--json',
'--registry', common.registry,
'--loglevel', 'silent'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm org')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
t.same(JSON.parse(stdout), membershipData)
t.end()
})
})
})
})
test('org rm [orgname] [username]', function (t) {
const membershipData = {
otheruser: 'admin'
}
server.delete('/-/org/myorg/user', JSON.stringify({
user: 'myuser'
})).reply(204, {})
server.get('/-/org/myorg/user')
.reply(200, membershipData)
common.npm([
'org', 'rm', 'myorg', 'myuser',
'--json',
'--registry', common.registry,
'--loglevel', 'silent'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm org')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
t.deepEqual(JSON.parse(stdout), {
user: 'myuser',
org: 'myorg',
deleted: true,
userCount: 1
}, 'got useful info')
t.end()
})
})
test('org ls [orgname]', function (t) {
const membershipData = {
username: 'admin',
username2: 'foo'
}
server.get('/-/org/myorg/user')
.reply(200, membershipData)
common.npm([
'org', 'ls', 'myorg',
'--json',
'--registry', common.registry,
'--loglevel', 'silent'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm org')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
t.same(JSON.parse(stdout), membershipData, 'outputs members')
t.end()
})
})
test('cleanup', function (t) {
t.pass('cleaned up')
server.done()
server.close()
t.end()
})