mirror of
https://github.com/Permissionless-Software-Foundation/ipfs-bch-wallet-consumer.git
synced 2026-09-21 16:52:03 -07:00
Fleshing out user JSON RPC unit tests
This commit is contained in:
+61
-6
@@ -37,7 +37,8 @@ class UserRPC {
|
||||
return await this.getAll(rpcData)
|
||||
|
||||
case 'getUser':
|
||||
return await this.getUser(rpcData)
|
||||
user = await this.validators.ensureUser(rpcData)
|
||||
return await this.getUser(rpcData, user)
|
||||
|
||||
case 'deleteUser':
|
||||
user = await this.validators.ensureTargetUserOrAdmin(rpcData)
|
||||
@@ -56,12 +57,24 @@ class UserRPC {
|
||||
|
||||
const retObj = await this.userLib.createUser(rpcData.payload.params)
|
||||
|
||||
// Add generic JSON RPC properties that every entry gets.
|
||||
retObj.endpoint = 'createUser'
|
||||
retObj.success = true
|
||||
retObj.status = 200
|
||||
retObj.message = ''
|
||||
|
||||
return retObj
|
||||
} catch (err) {
|
||||
console.error('Error in createUser()')
|
||||
throw err
|
||||
// console.error('Error in createUser()')
|
||||
// throw err
|
||||
|
||||
// Return an error response
|
||||
return {
|
||||
success: false,
|
||||
status: 422,
|
||||
message: err.message,
|
||||
endpoint: 'createUser'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,12 +84,54 @@ class UserRPC {
|
||||
const users = await this.userLib.getAllUsers()
|
||||
|
||||
return {
|
||||
users,
|
||||
endpoint: 'getAllUsers',
|
||||
users
|
||||
success: true,
|
||||
status: 200,
|
||||
message: ''
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error in getAll()')
|
||||
throw err
|
||||
// console.error('Error in getAll()')
|
||||
// throw err
|
||||
|
||||
// Return an error response
|
||||
return {
|
||||
success: false,
|
||||
status: 422,
|
||||
message: err.message,
|
||||
endpoint: 'getAllUsers'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get a specific user.
|
||||
async getUser (rpcData, userModel) {
|
||||
try {
|
||||
// console.log('getUser rpcData: ', rpcData)
|
||||
|
||||
// Throw error if rpcData does not include 'userId' property for target user.
|
||||
const userId = rpcData.payload.params.userId
|
||||
|
||||
const user = await this.userLib.getUser({ id: userId })
|
||||
|
||||
return {
|
||||
user,
|
||||
endpoint: 'getUser',
|
||||
success: true,
|
||||
status: 200,
|
||||
message: ''
|
||||
}
|
||||
} catch (err) {
|
||||
// console.error('Error in getUser()')
|
||||
// throw err
|
||||
|
||||
// Return an error response
|
||||
return {
|
||||
success: false,
|
||||
status: 422,
|
||||
message: err.message,
|
||||
endpoint: 'getUser'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,16 +65,48 @@ describe('#UserRPC', () => {
|
||||
const result = await uut.createUser(rpcData)
|
||||
// console.log('result: ', result)
|
||||
|
||||
assert.equal(result.endpoint, 'createUser')
|
||||
// CreateUser() specific return values.
|
||||
assert.equal(result.userData.type, 'user')
|
||||
assert.equal(result.userData.email, 'test973@test.com')
|
||||
assert.equal(result.userData.name, 'test973')
|
||||
assert.property(result.userData, '_id')
|
||||
assert.property(result, 'token')
|
||||
|
||||
// Generic JSON RPC return values
|
||||
assert.equal(result.endpoint, 'createUser')
|
||||
assert.equal(result.success, true)
|
||||
assert.equal(result.status, 200)
|
||||
assert.equal(result.message, '')
|
||||
|
||||
// Save the user ID for future tests.
|
||||
testUser = result
|
||||
})
|
||||
|
||||
it('should return error data if biz logic throws an error', async () => {
|
||||
// Force an error
|
||||
sandbox.stub(uut.userLib, 'createUser').rejects(new Error('test error'))
|
||||
|
||||
// Generate the parsed data that the main router would pass to this
|
||||
// endpoint.
|
||||
const id = uid()
|
||||
const userCall = jsonrpc.request(id, 'users', {
|
||||
endpoint: 'createUser',
|
||||
email: 'test973@test.com',
|
||||
name: 'test973',
|
||||
password: 'password'
|
||||
})
|
||||
const jsonStr = JSON.stringify(userCall, null, 2)
|
||||
const rpcData = jsonrpc.parse(jsonStr)
|
||||
|
||||
const result = await uut.createUser(rpcData)
|
||||
// console.log('result: ', result)
|
||||
|
||||
// Generic JSON RPC return values
|
||||
assert.equal(result.endpoint, 'createUser')
|
||||
assert.equal(result.success, false)
|
||||
assert.equal(result.status, 422)
|
||||
assert.equal(result.message, 'test error')
|
||||
})
|
||||
})
|
||||
|
||||
describe('#userRouter', () => {
|
||||
@@ -140,8 +172,71 @@ describe('#UserRPC', () => {
|
||||
const result = await uut.getAll()
|
||||
// console.log('result: ', result)
|
||||
|
||||
assert.equal(result.endpoint, 'getAllUsers')
|
||||
// Endpoint specific properties
|
||||
assert.property(result, 'users')
|
||||
assert.isArray(result.users)
|
||||
|
||||
// Generic JSON RPC return values
|
||||
assert.equal(result.endpoint, 'getAllUsers')
|
||||
assert.equal(result.success, true)
|
||||
assert.equal(result.status, 200)
|
||||
assert.equal(result.message, '')
|
||||
})
|
||||
|
||||
it('should return error data if biz logic throws an error', async () => {
|
||||
// Force an error
|
||||
sandbox.stub(uut.userLib, 'getAllUsers').rejects(new Error('test error'))
|
||||
|
||||
const result = await uut.getAll()
|
||||
// console.log('result: ', result)
|
||||
|
||||
// Generic JSON RPC return values
|
||||
assert.equal(result.endpoint, 'getAllUsers')
|
||||
assert.equal(result.success, false)
|
||||
assert.equal(result.status, 422)
|
||||
assert.equal(result.message, 'test error')
|
||||
})
|
||||
})
|
||||
|
||||
describe('#getUser', () => {
|
||||
it('should return a specific user', async () => {
|
||||
// Generate the parsed data that the main router would pass to this
|
||||
// endpoint.
|
||||
const id = uid()
|
||||
const userCall = jsonrpc.request(id, 'users', {
|
||||
endpoint: 'getUser',
|
||||
userId: testUser.userData._id.toString()
|
||||
})
|
||||
const jsonStr = JSON.stringify(userCall, null, 2)
|
||||
const rpcData = jsonrpc.parse(jsonStr)
|
||||
|
||||
const result = await uut.getUser(rpcData)
|
||||
// console.log('result: ', result)
|
||||
|
||||
// Endpoint specific properties
|
||||
assert.property(result, 'user')
|
||||
assert.property(result.user, 'type')
|
||||
assert.property(result.user, '_id')
|
||||
assert.property(result.user, 'email')
|
||||
assert.property(result.user, 'name')
|
||||
|
||||
// Generic JSON RPC return values
|
||||
assert.equal(result.endpoint, 'getUser')
|
||||
assert.equal(result.success, true)
|
||||
assert.equal(result.status, 200)
|
||||
assert.equal(result.message, '')
|
||||
})
|
||||
|
||||
it('should return error data if biz logic throws an error', async () => {
|
||||
// Force an error by not specifying an user ID.
|
||||
const result = await uut.getUser()
|
||||
// console.log('result: ', result)
|
||||
|
||||
// Generic JSON RPC return values
|
||||
assert.equal(result.endpoint, 'getUser')
|
||||
assert.equal(result.success, false)
|
||||
assert.equal(result.status, 422)
|
||||
assert.include(result.message, 'Cannot read property')
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user