Set the correct status code for User.login
See https://github.com/strongloop/loopback/issues/118
This commit is contained in:
parent
9c13c07da2
commit
89aa3595f5
|
@ -149,11 +149,14 @@ User.login = function (credentials, include, fn) {
|
||||||
} else if(credentials.username) {
|
} else if(credentials.username) {
|
||||||
query.username = credentials.username;
|
query.username = credentials.username;
|
||||||
} else {
|
} else {
|
||||||
return fn(new Error('must provide username or email'));
|
var err = new Error('username or email is required');
|
||||||
|
err.statusCode = 400;
|
||||||
|
return fn(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.findOne({where: query}, function(err, user) {
|
this.findOne({where: query}, function(err, user) {
|
||||||
var defaultError = new Error('login failed');
|
var defaultError = new Error('login failed');
|
||||||
|
defaultError.statusCode = 401;
|
||||||
|
|
||||||
if(err) {
|
if(err) {
|
||||||
debug('An error is reported from User.findOne: %j', err);
|
debug('An error is reported from User.findOne: %j', err);
|
||||||
|
|
|
@ -9,6 +9,9 @@ var userMemory = loopback.createDataSource({
|
||||||
|
|
||||||
describe('User', function(){
|
describe('User', function(){
|
||||||
var validCredentials = {email: 'foo@bar.com', password: 'bar'};
|
var validCredentials = {email: 'foo@bar.com', password: 'bar'};
|
||||||
|
var invalidCredentials = {email: 'foo1@bar.com', password: 'bar1'};
|
||||||
|
var incompleteCredentials = {password: 'bar1'};
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
User = loopback.User.extend('user');
|
User = loopback.User.extend('user');
|
||||||
User.email = loopback.Email.extend('email');
|
User.email = loopback.Email.extend('email');
|
||||||
|
@ -135,6 +138,40 @@ describe('User', function(){
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Login a user over REST by providing invalid credentials', function(done) {
|
||||||
|
request(app)
|
||||||
|
.post('/users/login')
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(401)
|
||||||
|
.send(invalidCredentials)
|
||||||
|
.end(function(err, res){
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Login a user over REST by providing incomplete credentials', function(done) {
|
||||||
|
request(app)
|
||||||
|
.post('/users/login')
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(400)
|
||||||
|
.send(incompleteCredentials)
|
||||||
|
.end(function(err, res){
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Login a user over REST with the wrong Content-Type', function(done) {
|
||||||
|
request(app)
|
||||||
|
.post('/users/login')
|
||||||
|
.set('Content-Type', null)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(400)
|
||||||
|
.send(validCredentials)
|
||||||
|
.end(function(err, res){
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('Returns current user when `include` is `USER`', function(done) {
|
it('Returns current user when `include` is `USER`', function(done) {
|
||||||
request(app)
|
request(app)
|
||||||
.post('/users/login?include=USER')
|
.post('/users/login?include=USER')
|
||||||
|
|
Loading…
Reference in New Issue