mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex.git
synced 2026-09-22 17:12:03 -07:00
242 lines
5.9 KiB
JavaScript
242 lines
5.9 KiB
JavaScript
const app = require('../bin/server')
|
|
const supertest = require('supertest')
|
|
// const { expect, should } = require('chai')
|
|
const expect = require('chai').expect
|
|
const should = require('chai').should
|
|
// const { cleanDb, authUser } = require('./utils')
|
|
const cleanDb = require('./utils').cleanDb
|
|
//const authUser = require('./utils').authUser
|
|
|
|
should()
|
|
const request = supertest.agent(app.listen())
|
|
const context = {}
|
|
|
|
describe('Users', () => {
|
|
before((done) => {
|
|
cleanDb()
|
|
done()
|
|
})
|
|
|
|
describe('POST /users', () => {
|
|
it('should reject signup when data is incomplete', (done) => {
|
|
request
|
|
.post('/users')
|
|
.set('Accept', 'application/json')
|
|
.send({ username: 'supercoolname' })
|
|
.expect(422, done)
|
|
})
|
|
|
|
it('should sign up', (done) => {
|
|
request
|
|
.post('/users')
|
|
.set('Accept', 'application/json')
|
|
.send({ user: { username: 'supercoolname', password: 'supersecretpassword' } })
|
|
.expect(200, (err, res) => {
|
|
if (err) { return done(err) }
|
|
|
|
res.body.user.should.have.property('username')
|
|
res.body.user.username.should.equal('supercoolname')
|
|
expect(res.body.user.password).to.not.exist
|
|
|
|
context.user = res.body.user
|
|
context.token = res.body.token
|
|
// console.log(`token: ${res.body.token}`)
|
|
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('GET /users', () => {
|
|
it('should not fetch users if the authorization header is missing', (done) => {
|
|
request
|
|
.get('/users')
|
|
.set('Accept', 'application/json')
|
|
.expect(401, done)
|
|
})
|
|
|
|
it('should not fetch users if the authorization header is missing the scheme', (done) => {
|
|
request
|
|
.get('/users')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: '1'
|
|
})
|
|
.expect(401, done)
|
|
})
|
|
|
|
it('should not fetch users if the authorization header has invalid scheme', (done) => {
|
|
const { token } = context
|
|
request
|
|
.get('/users')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Unknown ${token}`
|
|
})
|
|
.expect(401, done)
|
|
})
|
|
|
|
it('should not fetch users if token is invalid', (done) => {
|
|
request
|
|
.get('/users')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: 'Bearer 1'
|
|
})
|
|
.expect(401, done)
|
|
})
|
|
|
|
it('should fetch all users', (done) => {
|
|
const { token } = context
|
|
request
|
|
.get('/users')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Bearer ${token}`
|
|
})
|
|
.expect(200, (err, res) => {
|
|
if (err) { return done(err) }
|
|
|
|
res.body.should.have.property('users')
|
|
|
|
res.body.users.should.have.length(1)
|
|
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('GET /users/:id', () => {
|
|
it('should not fetch user if token is invalid', (done) => {
|
|
request
|
|
.get('/users/1')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: 'Bearer 1'
|
|
})
|
|
.expect(401, done)
|
|
})
|
|
|
|
it('should throw 404 if user doesn\'t exist', (done) => {
|
|
const { token } = context
|
|
request
|
|
.get('/users/1')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Bearer ${token}`
|
|
})
|
|
.expect(404, done)
|
|
})
|
|
|
|
it('should fetch user', (done) => {
|
|
const {
|
|
user: { _id },
|
|
token
|
|
} = context
|
|
|
|
request
|
|
.get(`/users/${_id}`)
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Bearer ${token}`
|
|
})
|
|
.expect(200, (err, res) => {
|
|
if (err) { return done(err) }
|
|
|
|
// console.log(`res: ${JSON.stringify(res, null, 2)}`)
|
|
|
|
res.body.should.have.property('user')
|
|
|
|
expect(res.body.user.password).to.not.exist
|
|
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('PUT /users/:id', () => {
|
|
it('should not update user if token is invalid', (done) => {
|
|
request
|
|
.put('/users/1')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: 'Bearer 1'
|
|
})
|
|
.expect(401, done)
|
|
})
|
|
|
|
it('should throw 404 if user doesn\'t exist', (done) => {
|
|
const { token } = context
|
|
request
|
|
.put('/users/1')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Bearer ${token}`
|
|
})
|
|
.expect(404, done)
|
|
})
|
|
|
|
it('should update user', (done) => {
|
|
const {
|
|
user: { _id },
|
|
token
|
|
} = context
|
|
|
|
request
|
|
.put(`/users/${_id}`)
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Bearer ${token}`
|
|
})
|
|
.send({ user: { username: 'updatedcoolname' } })
|
|
.expect(200, (err, res) => {
|
|
if (err) { return done(err) }
|
|
|
|
res.body.user.should.have.property('username')
|
|
res.body.user.username.should.equal('updatedcoolname')
|
|
expect(res.body.user.password).to.not.exist
|
|
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('DELETE /users/:id', () => {
|
|
it('should not delete user if token is invalid', (done) => {
|
|
request
|
|
.delete('/users/1')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: 'Bearer 1'
|
|
})
|
|
.expect(401, done)
|
|
})
|
|
|
|
it('should throw 404 if user doesn\'t exist', (done) => {
|
|
const { token } = context
|
|
request
|
|
.delete('/users/1')
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Bearer ${token}`
|
|
})
|
|
.expect(404, done)
|
|
})
|
|
|
|
it('should delete user', (done) => {
|
|
const {
|
|
user: { _id },
|
|
token
|
|
} = context
|
|
|
|
request
|
|
.delete(`/users/${_id}`)
|
|
.set({
|
|
Accept: 'application/json',
|
|
Authorization: `Bearer ${token}`
|
|
})
|
|
.expect(200, done)
|
|
})
|
|
})
|
|
})
|