diff --git a/src/test/test.js b/src/test/test.js index 854e26ff1a9517e2df541e7a0e0c02a0ce6a3619..71f9227c3da50525dd056eb3f4be989c79d90e22 100644 --- a/src/test/test.js +++ b/src/test/test.js @@ -1241,3 +1241,203 @@ describe('Saves a user', () => { }); }); + +describe('Authenticates a user', () => { + + beforeEach(() => { + User.remove({}, (err) => { + console.log('Test collection purged'); + }); + }); + + it('should authenticate a user', (done) => { + let newUser = new User(); + + newUser.email = 'lorem@ipsum.com'; + newUser.password = '123mudar'; + newUser.name = 'Gute'; + newUser.cpf = '08236017907'; + newUser.schooling = 'Doutorado'; + newUser.course = 'Ciência da Computação'; + newUser.segment = 'Comunidade acadêmica'; + newUser.role = 'Pesquisador'; + newUser.institution_name = 'UFPR'; + newUser.state = 'PR'; + newUser.city = 'Curitiba'; + + newUser.save((err) => { + if (err) { + console.log('MongoDB error:' + err); + } + }).then(function(newuser){ + chai.request(server) + .post('/api/v1/user/authenticate') + .set('content-type', 'application/x-www-form-urlencoded') + .set('x-apicache-bypass', 'true') + .send({email: 'lorem@ipsum.com', + password: '123mudar'}) + .end((err, res) => { + let token; + + res.should.have.status(200); + res.should.be.json; + res.body.should.have.property('success'); + res.body.success.should.equal(true); + res.body.should.have.property('token'); + token = res.body.token; + token.substr(0, 3).should.equal('JWT'); + done(); + }); + }); + }); + + it('should not authenticate a user with wrong password', (done) => { + let newUser = new User(); + + newUser.email = 'lorem@ipsum.com'; + newUser.password = '123mudar'; + newUser.name = 'Gute'; + newUser.cpf = '08236017907'; + newUser.schooling = 'Doutorado'; + newUser.course = 'Ciência da Computação'; + newUser.segment = 'Comunidade acadêmica'; + newUser.role = 'Pesquisador'; + newUser.institution_name = 'UFPR'; + newUser.state = 'PR'; + newUser.city = 'Curitiba'; + + newUser.save((err) => { + if (err) { + console.log('MongoDB error:' + err); + } + }).then(function(newuser){ + chai.request(server) + .post('/api/v1/user/authenticate') + .set('content-type', 'application/x-www-form-urlencoded') + .set('x-apicache-bypass', 'true') + .send({email: 'lorem@ipsum.com', + password: 'umasenhaerrada'}) + .end((err, res) => { + res.should.have.status(200); + res.should.be.json; + res.body.should.have.property('success'); + res.body.success.should.equal(false); + res.body.should.have.property('msg'); + res.body.msg.should.equal('A Senha informada é inválida.') + done(); + }); + }); + }); + + it('should not authenticate a user with wrong email', (done) => { + let newUser = new User(); + + newUser.email = 'lorem@ipsum.com'; + newUser.password = '123mudar'; + newUser.name = 'Gute'; + newUser.cpf = '08236017907'; + newUser.schooling = 'Doutorado'; + newUser.course = 'Ciência da Computação'; + newUser.segment = 'Comunidade acadêmica'; + newUser.role = 'Pesquisador'; + newUser.institution_name = 'UFPR'; + newUser.state = 'PR'; + newUser.city = 'Curitiba'; + + newUser.save((err) => { + if (err) { + console.log('MongoDB error:' + err); + } + }).then(function(newuser){ + chai.request(server) + .post('/api/v1/user/authenticate') + .set('content-type', 'application/x-www-form-urlencoded') + .set('x-apicache-bypass', 'true') + .send({email: 'dolor@ipsum.com', + password: '123mudar'}) + .end((err, res) => { + res.should.have.status(200); + res.should.be.json; + res.body.should.have.property('success'); + res.body.success.should.equal(false); + res.body.should.have.property('msg'); + res.body.msg.should.equal('O Email informado não está cadastrado.') + done(); + }); + }); + }); + + it('should not authenticate a user with missing email', (done) => { + let newUser = new User(); + + newUser.email = 'lorem@ipsum.com'; + newUser.password = '123mudar'; + newUser.name = 'Gute'; + newUser.cpf = '08236017907'; + newUser.schooling = 'Doutorado'; + newUser.course = 'Ciência da Computação'; + newUser.segment = 'Comunidade acadêmica'; + newUser.role = 'Pesquisador'; + newUser.institution_name = 'UFPR'; + newUser.state = 'PR'; + newUser.city = 'Curitiba'; + + newUser.save((err) => { + if (err) { + console.log('MongoDB error:' + err); + } + }).then(function(newuser){ + chai.request(server) + .post('/api/v1/user/authenticate') + .set('content-type', 'application/x-www-form-urlencoded') + .set('x-apicache-bypass', 'true') + .send({password: '123mudar'}) + .end((err, res) => { + res.should.have.status(200); + res.should.be.json; + res.body.should.have.property('success'); + res.body.success.should.equal(false); + res.body.should.have.property('msg'); + res.body.msg.should.equal('O campo Email é obrigatório.') + done(); + }); + }); + }); + + it('should not authenticate a user with missing password', (done) => { + let newUser = new User(); + + newUser.email = 'lorem@ipsum.com'; + newUser.password = '123mudar'; + newUser.name = 'Gute'; + newUser.cpf = '08236017907'; + newUser.schooling = 'Doutorado'; + newUser.course = 'Ciência da Computação'; + newUser.segment = 'Comunidade acadêmica'; + newUser.role = 'Pesquisador'; + newUser.institution_name = 'UFPR'; + newUser.state = 'PR'; + newUser.city = 'Curitiba'; + + newUser.save((err) => { + if (err) { + console.log('MongoDB error:' + err); + } + }).then(function(newuser){ + chai.request(server) + .post('/api/v1/user/authenticate') + .set('content-type', 'application/x-www-form-urlencoded') + .set('x-apicache-bypass', 'true') + .send({email:'lorem@ipsum.com'}) + .end((err, res) => { + res.should.have.status(200); + res.should.be.json; + res.body.should.have.property('success'); + res.body.success.should.equal(false); + res.body.should.have.property('msg'); + res.body.msg.should.equal('O campo Senha é obrigatório.') + done(); + }); + }); + }); +});