Skip to content
This repository has been archived by the owner on Aug 19, 2022. It is now read-only.

Commit

Permalink
Merge branch 'master' into volume-fixtures-and-autocannon
Browse files Browse the repository at this point in the history
  • Loading branch information
cianfoley-nearform committed Feb 16, 2018
2 parents 252f70e + 0a500ec commit 6208356
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 40 deletions.
16 changes: 4 additions & 12 deletions lib/core/lib/ops/userOps.js
Expand Up @@ -562,28 +562,20 @@ function buildUserOps (db, config) {
Joi.validate({ id, organizationId, page, limit }, validationRules.listUserTeams, function (err) {
if (err) return cb(Boom.badRequest(err))

const pageLimit = limit || config.get('authorization.defaultPageSize')
const offset = (page - 1) * pageLimit

const offset = (page - 1) * limit
const job = {
id,
organizationId,
offset,
limit: pageLimit,
limit,
user: {},
client: db
}

readUserTeams(job, (err) => {
if (err) return cb(err)
const pageSize = Math.min(pageLimit, job.user.teams ? job.user.teams.length : 0)
const result = {
page,
limit: pageSize,
total: job.totalTeamsCount,
data: job.user.teams
}
return cb(null, result)

return cb(null, job.user.teams, job.totalTeamsCount)
})
})
},
Expand Down
7 changes: 4 additions & 3 deletions lib/plugin/routes/public/users.js
Expand Up @@ -312,10 +312,11 @@ exports.register = function (server, options, next) {
handler: function (request, reply) {
const { id } = request.params
const { organizationId } = request.udaru
const { limit, page } = request.query
const limit = request.query.limit || server.udaruConfig.get('authorization.defaultPageSize')
const page = request.query.page || 1

request.udaruCore.users.listUserTeams({ id, organizationId, limit, page }, (err, result) => {
reply(err, result)
request.udaruCore.users.listUserTeams({ id, organizationId, limit, page }, (err, data, total) => {
reply(err, { page, limit, total, data })
})
},
config: {
Expand Down
67 changes: 66 additions & 1 deletion test/integration/endToEnd/users.test.js
Expand Up @@ -7,7 +7,9 @@ const lab = exports.lab = Lab.script()
const utils = require('../../utils')
const server = require('../../../lib/server')
const { udaru } = utils
const config = require('../../../lib/config/build-all')()

const defaultPageSize = config.get('authorization.defaultPageSize')
const statements = { Statement: [{ Effect: 'Allow', Action: ['documents:Read'], Resource: ['wonka:documents:/public/*'] }] }

const policyCreateData = {
Expand Down Expand Up @@ -61,6 +63,29 @@ lab.experiment('Users: read - delete - update', () => {
})
})

lab.test('no users list', (done) => {
const options = {
headers: {
authorization: 'ROOTid',
org: 'OILCOEMEA'
},
method: 'GET',
url: '/authorization/users'
}

server.inject(options, (response) => {
const result = response.result

expect(response.statusCode).to.equal(200)
expect(result.page).to.equal(1)
expect(result.limit).to.equal(defaultPageSize)
expect(result.total).to.equal(0)
expect(result.data.length).to.equal(0)

done()
})
})

lab.test('get single user', (done) => {
const options = utils.requestOptions({
method: 'GET',
Expand Down Expand Up @@ -623,7 +648,7 @@ lab.experiment('Users - manage teams', () => {
expect(response.statusCode).to.equal(200)
expect(result.total).to.equal(2)
expect(result.page).to.equal(1)
expect(result.limit).to.equal(2)
expect(result.limit).to.equal(defaultPageSize)
expect(result.data.length).to.equal(2)
let expectedTeams = [
'Authors',
Expand All @@ -635,6 +660,46 @@ lab.experiment('Users - manage teams', () => {
})
})

lab.test('get user teams, invalid userId', (done) => {
const userId = 'InvalidId'
const options = utils.requestOptions({
method: 'GET',
url: `/authorization/users/${userId}/teams`
})

server.inject(options, (response) => {
const result = response.result

expect(response.statusCode).to.equal(200)
expect(result.total).to.equal(0)
expect(result.page).to.equal(1)
expect(result.limit).to.equal(defaultPageSize)
expect(result.data.length).to.equal(0)

done()
})
})

lab.test('get user teams, user in no teams', (done) => {
const userId = 'ModifyId'
const options = utils.requestOptions({
method: 'GET',
url: `/authorization/users/${userId}/teams`
})

server.inject(options, (response) => {
const result = response.result

expect(response.statusCode).to.equal(200)
expect(result.total).to.equal(0)
expect(result.page).to.equal(1)
expect(result.limit).to.equal(defaultPageSize)
expect(result.data.length).to.equal(0)

done()
})
})

lab.test('get user teams, paginated', (done) => {
const userId = 'VerucaId'
const options = utils.requestOptions({
Expand Down
54 changes: 30 additions & 24 deletions test/integration/userOps.test.js
Expand Up @@ -706,71 +706,77 @@ lab.experiment('UserOps structure', () => {
})

lab.test('Test user exists in two teams, no pagination', (done) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA' }, (err, result) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA' }, (err, data, total) => {
expect(err).to.not.exist()
expect(result).to.exist()
expect(data).to.exist()
let expectedTeams = [
'Readers',
'Authors'
]
expect(_.map(result.data, 'name')).contains(expectedTeams)
expect(result.page).to.equal(1)
expect(result.limit).to.equal(2)
expect(result.total).to.equal(2)
expect(result.data.length).to.equal(2)
expect(_.map(data, 'name')).contains(expectedTeams)
expect(total).to.equal(2)
expect(data.length).to.equal(2)

done()
})
})

lab.test('Test incorrect pagination', (done) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 0 }, (err, result) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 0 }, (err, data, total) => {
expect(err).to.exist()
expect(err.message.indexOf('page')).to.be.at.least(0)
expect(err.message.indexOf('limit')).to.be.below(0)
expect(result).to.not.exist()
expect(data).to.not.exist()
expect(total).to.not.exist()

done()
})
})

lab.test('Test incorrect limit', (done) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 1, limit: 0 }, (err, result) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 1, limit: 0 }, (err, data, total) => {
expect(err).to.exist()
expect(err.message.indexOf('page')).to.be.below(0)
expect(err.message.indexOf('limit')).to.be.at.least(0)
expect(result).to.not.exist()
expect(data).to.not.exist()
expect(total).to.not.exist()

done()
})
})

lab.test('Test user exists in two teams, pagination', (done) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 2, limit: 1 }, (err, result) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 2, limit: 1 }, (err, data, total) => {
expect(err).to.not.exist()
expect(result).to.exist()
expect(data).to.exist()
let expectedTeams = [
'Readers'
]
expect(_.map(result.data, 'name')).contains(expectedTeams)
expect(result.page).to.equal(2)
expect(result.limit).to.equal(1)
expect(result.total).to.equal(2)
expect(result.data.length).to.equal(1)
expect(_.map(data, 'name')).contains(expectedTeams)
expect(total).to.equal(2)
expect(data.length).to.equal(1)

done()
})
})

lab.test('Test user exists in two teams, pagination', (done) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 2, limit: 10 }, (err, result) => {
udaru.users.listUserTeams({ id: 'VerucaId', organizationId: 'WONKA', page: 2, limit: 10 }, (err, data, total) => {
expect(err).to.not.exist()
expect(result).to.exist()
expect(data).to.exist()
expect(total).to.equal(2)
expect(data.length).to.equal(0)

expect(result.page).to.equal(2)
expect(result.limit).to.equal(0)
expect(result.total).to.equal(2)
expect(result.data.length).to.equal(0)
done()
})
})

lab.test('Test no teams', (done) => {
udaru.users.listUserTeams({ id: 'InvalidId', organizationId: 'WONKA' }, (err, data, total) => {
expect(err).to.not.exist()
expect(total).to.exist()
expect(total).to.equal(0)
expect(data.length).to.equal(0)

done()
})
Expand Down

0 comments on commit 6208356

Please sign in to comment.