123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- process.env.NODE_ENV = 'test'
- let chai = require('chai')
- let chaiHttp = require('chai-http')
- let server = require('../server')
- let should = chai.should()
- let User = require('../models').User
- const Errors = require('../lib/errors.js')
- chai.use(chaiHttp)
- describe('User', () => {
- //Delete all rows in table after
- //tests completed
- after((done) => {
- User.sync({ force: true })
- .then(() => {
- done(null);
- })
- .catch((err) => {
- done(err)
- })
- })
- describe('/POST user', () => {
- it('should create an account', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 'username',
- password: 'password'
- })
- .end((err, res) => {
- res.should.have.status(200)
- res.should.be.json
- res.body.should.have.property('username', 'test')
- res.body.should.have.property('hash')
-
- done()
- })
- })
- it('should throw an error if account already created', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 'username',
- password: 'password'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.accountAlreadyCreated)
-
- done()
- })
- })
- it('should throw an error if no username', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- password: 'password'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.missingParameter('username'))
-
- done()
- })
- })
- it('should throw an error if username is not a string', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 123,
- password: 'password'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.invalidParameterType('username', 'string'))
-
- done()
- })
- })
- it('should throw an error if username less than 6 characters', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 'test',
- password: 'password'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.parameterLengthTooSmall('username', '6'))
-
- done()
- })
- })
- it('should throw an error if username greater than 50 characters', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: '123456789012345678901234567890123456789012345678901',
- password: 'password'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.parameterLengthTooGreat('username', '50'))
-
- done()
- })
- })
- it('should throw an error if no password', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 'username1'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.missingParameter('password'))
-
- done()
- })
- })
- it('should throw an error if password is not a string', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 'username1',
- password: 123
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.invalidParameterType('password', 'string'))
-
- done()
- })
- })
- it('should throw an error if password less than 6 characters', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 'username1',
- password: 'pass'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.parameterLengthTooSmall('password', '6'))
-
- done()
- })
- })
- it('should throw an error if password greater than 100 characters', (done) => {
- chai.request(server)
- .post('/api/v1/user')
- .set('content-type', 'application/x-www-form-urlencoded')
- .send({
- username: 'username1',
- password: '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901'
- })
- .end((err, res) => {
- res.should.have.status(500)
- res.should.be.json
- res.body.should.have.property('error')
- res.body.error.should.deep.equal(Errors.parameterLengthTooGreat('password', '100'))
-
- done()
- })
- })
- })
- })
|