diff --git a/src/test/user.js b/src/test/user.js
index 67b9d186230e80828f88c85a6fbc53489f5e4acf..04ab8e9e58a521ff2b555c891fa53a919066c2d9 100644
--- a/src/test/user.js
+++ b/src/test/user.js
@@ -27,6 +27,367 @@ const mongoose = require('../libs/db/mongoose');
 const User = require('../libs/models/user');
 
 chai.use(chaiHttp);
+
+describe('Saves a user', () => {
+    beforeEach(() => {
+        User.remove({}, (err) => {
+            console.log('Test collection purged')
+        });
+    });
+
+    it('should save a user', (done) => {
+        let newUser = {};
+        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';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .end((err, res) => {
+            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('msg');
+            res.body.msg.should.be.equal('Usuário cadastrado com sucesso!');
+            done();
+        });
+    });
+
+    it('should not save a user without email', (done) => {
+        let newUser = {};
+        newUser.email = null;
+        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';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Email é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without password', (done) => {
+        let newUser = {};
+        newUser.email = 'lorem@ipsum.com';
+        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';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Senha é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user with invalid email', (done) => {
+        let newUser = {};
+        newUser.email = 'invalid email';
+        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';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O email informado é inválido.');
+            done();
+        });
+    });
+
+    it('should not save a user without a name', (done) => {
+        let newUser = {};
+        newUser.email = 'lorem@ipsum.com';
+        newUser.password = '123mudar';
+        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';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Nome é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without CPF', (done) => {
+        let newUser = {};
+        newUser.email = 'lorem@ipsum.com';
+        newUser.password = '123mudar';
+        newUser.name = 'Gute';
+        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';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo CPF é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without schooling', (done) => {
+        let newUser = {};
+        newUser.email = 'lorem@ipsum.com';
+        newUser.password = '123mudar';
+        newUser.name = 'Gute';
+        newUser.cpf = '08236017907';
+        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';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Escolaridade é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without segment', (done) => {
+        let newUser = {};
+        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.role = 'Pesquisador';
+        newUser.institution_name = 'UFPR';
+        newUser.state = 'PR';
+        newUser.city = 'Curitiba';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Segmento é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without role', (done) => {
+        let newUser = {};
+        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.institution_name = 'UFPR';
+        newUser.state = 'PR';
+        newUser.city = 'Curitiba';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Função é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without institution_name', (done) => {
+        let newUser = {};
+        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.state = 'PR';
+        newUser.city = 'Curitiba';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Instituição em que trabalha é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without state', (done) => {
+        let newUser = {};
+        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.city = 'Curitiba';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Estado é obrigatório.');
+            done();
+        });
+    });
+
+    it('should not save a user without city', (done) => {
+        let newUser = {};
+        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 = 'Paraná';
+
+        chai.request(server)
+        .post('/api/v1/user/')
+        .set('content-type', 'application/x-www-form-urlencoded')
+        .set('x-apicache-bypass', 'true')
+        .send(newUser)
+        .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.be.equal('O campo Cidade é obrigatório.');
+            done();
+        });
+    });
+
+})
+
 describe('Authenticates a user', () => {
 
     beforeEach(() => {
@@ -56,24 +417,24 @@ describe('Authenticates a user', () => {
             }
         }).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();
-                });
+            .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) => {
@@ -97,21 +458,21 @@ describe('Authenticates a user', () => {
             }
         }).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();
-                });
+            .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) => {
@@ -135,21 +496,21 @@ describe('Authenticates a user', () => {
             }
         }).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();
-                });
+            .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) => {
@@ -173,20 +534,20 @@ describe('Authenticates a user', () => {
             }
         }).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();
-                });
+            .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) => {
@@ -210,19 +571,56 @@ describe('Authenticates a user', () => {
             }
         }).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();
-                });
+            .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();
             });
+        });
+    });
+
+    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: '123'})
+            .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();
+            });
+        });
     });
 });