mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
5.5 KiB
215 lines
5.5 KiB
var test = require('tap').test
|
|
|
|
var server = require('./lib/server.js')
|
|
var common = require('./lib/common.js')
|
|
var client = common.freshClient()
|
|
|
|
function nop () {}
|
|
|
|
var URI = 'http://localhost:1337'
|
|
var PARAMS = {
|
|
auth: {
|
|
token: 'foo'
|
|
},
|
|
scope: 'myorg',
|
|
team: 'myteam'
|
|
}
|
|
|
|
var commands = ['create', 'destroy', 'add', 'rm', 'ls']
|
|
|
|
test('team create basic', function (t) {
|
|
var teamData = {
|
|
name: PARAMS.team,
|
|
scope_id: 1234,
|
|
created: '2015-07-23T18:07:49.959Z',
|
|
updated: '2015-07-23T18:07:49.959Z',
|
|
deleted: null
|
|
}
|
|
server.expect('PUT', '/-/org/myorg/team', function (req, res) {
|
|
t.equal(req.method, 'PUT')
|
|
onJsonReq(req, function (json) {
|
|
t.same(json, { name: PARAMS.team })
|
|
res.statusCode = 200
|
|
res.json(teamData)
|
|
})
|
|
})
|
|
client.team('create', URI, PARAMS, function (err, data) {
|
|
t.ifError(err, 'no errors')
|
|
t.same(data, teamData)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test('team destroy', function (t) {
|
|
var teamData = {
|
|
name: 'myteam',
|
|
scope_id: 1234,
|
|
created: '2015-07-23T18:07:49.959Z',
|
|
updated: '2015-07-23T18:07:49.959Z',
|
|
deleted: '2015-07-23T18:27:27.178Z'
|
|
}
|
|
server.expect('DELETE', '/-/team/myorg/myteam', function (req, res) {
|
|
t.equal(req.method, 'DELETE')
|
|
onJsonReq(req, function (json) {
|
|
t.same(json, undefined)
|
|
res.statusCode = 200
|
|
res.json(teamData)
|
|
})
|
|
})
|
|
client.team('destroy', URI, PARAMS, function (err, data) {
|
|
t.ifError(err, 'no errors')
|
|
t.same(data, teamData)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test('team add basic', function (t) {
|
|
var params = Object.create(PARAMS)
|
|
params.user = 'zkat'
|
|
server.expect('PUT', '/-/team/myorg/myteam/user', function (req, res) {
|
|
t.equal(req.method, 'PUT')
|
|
onJsonReq(req, function (json) {
|
|
t.same(json, { user: params.user })
|
|
res.statusCode = 200
|
|
res.json(undefined)
|
|
})
|
|
})
|
|
client.team('add', URI, params, function (err, data) {
|
|
t.ifError(err, 'no errors')
|
|
t.same(data, undefined)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test('team add user not in org', function (t) {
|
|
var params = Object.create(PARAMS)
|
|
params.user = 'zkat'
|
|
var errMsg = 'user is already in team'
|
|
server.expect('PUT', '/-/team/myorg/myteam/user', function (req, res) {
|
|
t.equal(req.method, 'PUT')
|
|
res.statusCode = 400
|
|
res.json({
|
|
error: errMsg
|
|
})
|
|
})
|
|
client.team('add', URI, params, function (err, data) {
|
|
t.equal(err.message, errMsg + ' : ' + '-/team/myorg/myteam/user')
|
|
t.same(data, {error: errMsg})
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test('team rm basic', function (t) {
|
|
var params = Object.create(PARAMS)
|
|
params.user = 'bcoe'
|
|
server.expect('DELETE', '/-/team/myorg/myteam/user', function (req, res) {
|
|
t.equal(req.method, 'DELETE')
|
|
onJsonReq(req, function (json) {
|
|
t.same(json, params)
|
|
res.statusCode = 200
|
|
res.json(undefined)
|
|
})
|
|
})
|
|
client.team('rm', URI, params, function (err, data) {
|
|
t.ifError(err, 'no errors')
|
|
t.same(data, undefined)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test('team ls (on org)', function (t) {
|
|
var params = Object.create(PARAMS)
|
|
params.team = null
|
|
var teams = ['myorg:team1', 'myorg:team2', 'myorg:team3']
|
|
server.expect('GET', '/-/org/myorg/team?format=cli', function (req, res) {
|
|
t.equal(req.method, 'GET')
|
|
onJsonReq(req, function (json) {
|
|
t.same(json, undefined)
|
|
res.statusCode = 200
|
|
res.json(teams)
|
|
})
|
|
})
|
|
client.team('ls', URI, params, function (err, data) {
|
|
t.ifError(err, 'no errors')
|
|
t.same(data, teams)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test('team ls (on team)', function (t) {
|
|
var uri = '/-/team/myorg/myteam/user?format=cli'
|
|
var users = ['zkat', 'bcoe']
|
|
server.expect('GET', uri, function (req, res) {
|
|
t.equal(req.method, 'GET')
|
|
onJsonReq(req, function (json) {
|
|
t.same(json, undefined)
|
|
res.statusCode = 200
|
|
res.json(users)
|
|
})
|
|
})
|
|
client.team('ls', URI, PARAMS, function (err, data) {
|
|
t.ifError(err, 'no errors')
|
|
t.same(data, users)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
// test('team edit', function (t) {
|
|
// server.expect('PUT', '/-/org/myorg/team', function (req, res) {
|
|
// t.equal(req.method, 'PUT')
|
|
// res.statusCode = 201
|
|
// res.json({})
|
|
// })
|
|
// client.team('create', URI, PARAMS, function (err, data) {
|
|
// t.ifError(err, 'no errors')
|
|
// t.end()
|
|
// })
|
|
// })
|
|
|
|
test('team command base validation', function (t) {
|
|
t.throws(function () {
|
|
client.team(undefined, URI, PARAMS, nop)
|
|
}, 'command is required')
|
|
commands.forEach(function (cmd) {
|
|
t.throws(function () {
|
|
client.team(cmd, undefined, PARAMS, nop)
|
|
}, 'registry URI is required')
|
|
t.throws(function () {
|
|
client.team(cmd, URI, undefined, nop)
|
|
}, 'params is required')
|
|
t.throws(function () {
|
|
client.team(cmd, URI, {scope: 'o', team: 't'}, nop)
|
|
}, 'auth is required')
|
|
t.throws(function () {
|
|
client.team(cmd, URI, {auth: {token: 'f'}, team: 't'}, nop)
|
|
}, 'scope is required')
|
|
t.throws(function () {
|
|
client.team(cmd, URI, PARAMS, {})
|
|
}, 'callback must be a function')
|
|
if (cmd !== 'ls') {
|
|
t.throws(function () {
|
|
client.team(
|
|
cmd, URI, {auth: {token: 'f'}, scope: 'o'}, nop)
|
|
}, 'team name is required')
|
|
}
|
|
if (cmd === 'add' || cmd === 'rm') {
|
|
t.throws(function () {
|
|
client.team(
|
|
cmd, URI, PARAMS, nop)
|
|
}, 'user is required')
|
|
}
|
|
})
|
|
t.end()
|
|
})
|
|
|
|
test('cleanup', function (t) {
|
|
server.close()
|
|
t.end()
|
|
})
|
|
|
|
function onJsonReq (req, cb) {
|
|
var buffer = ''
|
|
req.setEncoding('utf8')
|
|
req.on('data', function (data) { buffer += data })
|
|
req.on('end', function () { cb(buffer ? JSON.parse(buffer) : undefined) })
|
|
}
|
|
|