diff options
Diffstat (limited to 'deps/npm/test/tap/org.js')
-rw-r--r-- | deps/npm/test/tap/org.js | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/deps/npm/test/tap/org.js b/deps/npm/test/tap/org.js new file mode 100644 index 0000000000..7315cf0b6f --- /dev/null +++ b/deps/npm/test/tap/org.js @@ -0,0 +1,136 @@ +'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() +}) |