Use getUser as middleware for code reuse

This commit is contained in:
Adrian Obelmejias
2016-03-18 23:14:57 -04:00
parent 16fa1ebd0a
commit 3539d66d50
3 changed files with 25 additions and 34 deletions
+14 -33
View File
@@ -24,10 +24,10 @@ export async function createUser(ctx) {
export async function getUsers(ctx) { export async function getUsers(ctx) {
const users = await User.find({}, '-password -salt') const users = await User.find({}, '-password -salt')
ctx.body = users ctx.body = { users }
} }
export async function getUser(ctx) { export async function getUser(ctx, next) {
try { try {
const user = await User.findById(ctx.params.id, '-password -salt') const user = await User.findById(ctx.params.id, '-password -salt')
if (!user) { if (!user) {
@@ -44,48 +44,29 @@ export async function getUser(ctx) {
ctx.throw(500) ctx.throw(500)
} }
next()
} }
export async function updateUser(ctx) { export async function updateUser(ctx) {
try { const user = ctx.body.user
const user = await User.findById(ctx.params.id, '-password -salt')
if (!user) {
ctx.throw(404)
}
Object.assign(user, ctx.request.body.user) Object.assign(user, ctx.request.body.user)
await user.save() await user.save()
ctx.body = {
user
}
} catch (err) {
if (err === 404 || err.name === 'CastError') {
ctx.throw(404)
}
ctx.throw(500) ctx.body = {
user
} }
} }
export async function deleteUser(ctx) { export async function deleteUser(ctx) {
try { const user = ctx.body.user
const user = await User.findById(ctx.params.id)
if (!user) {
ctx.throw(404)
}
await user.remove() await user.remove()
ctx.status = 200 ctx.status = 200
ctx.body = { ctx.body = {
success: true sucess: true
}
} catch (err) {
if (err === 404 || err.name === 'CastError') {
ctx.throw(404)
}
ctx.throw(500)
} }
} }
+2
View File
@@ -32,6 +32,7 @@ export default [
route: '/:id', route: '/:id',
handlers: [ handlers: [
ensureUser, ensureUser,
user.getUser,
user.updateUser user.updateUser
] ]
}, },
@@ -40,6 +41,7 @@ export default [
route: '/:id', route: '/:id',
handlers: [ handlers: [
ensureUser, ensureUser,
user.getUser,
user.deleteUser user.deleteUser
] ]
} }
+9 -1
View File
@@ -56,7 +56,15 @@ describe('Users', () => {
request request
.get(`/users?token=${token}`) .get(`/users?token=${token}`)
.set('Accept', 'application/json') .set('Accept', 'application/json')
.expect(200, done) .expect(200, (err, res) => {
if (err) { return done(err) }
res.body.should.have.property('users')
res.body.users.should.have.length(1)
done()
})
}) })
}) })