diff --git a/src/routes/oauth2.js b/src/routes/oauth2.js index b17ad8e2a..fcf9b59e4 100644 --- a/src/routes/oauth2.js +++ b/src/routes/oauth2.js @@ -249,6 +249,8 @@ function loginForm(req, res) { function login(req, res) { var returnTo = req.session.returnTo || req.query.returnTo; + debug('handle login: returnTo %s', returnTo, req.body, req.query); + var failureQuery = querystring.stringify({ error: 'Invalid username or password', returnTo: returnTo }); passport.authenticate('local', { failureRedirect: '/api/v1/session/login?' + failureQuery diff --git a/src/routes/test/oauth2-test.js b/src/routes/test/oauth2-test.js index 38a577055..8ef694644 100644 --- a/src/routes/test/oauth2-test.js +++ b/src/routes/test/oauth2-test.js @@ -546,6 +546,28 @@ describe('OAuth2', function () { }); }); }); + + it('succeeds with email', function (done) { + startAuthorizationFlow(function (jar) { + var url = SERVER_URL + '/api/v1/session/login?returnTo=' + CLIENT_2.redirectURI; + var data = { + username: USER_0.email, + password: USER_0.password + }; + + request.post({ url: url, jar: jar, form: data }, function (error, response, body) { + expect(error).to.not.be.ok(); + expect(response.statusCode).to.eql(302); + + var tmp = urlParse(response.headers.location, true); + expect(tmp.query.redirect_uri).to.eql(CLIENT_2.redirectURI); + expect(tmp.query.client_id).to.eql(CLIENT_2.id); + expect(tmp.query.response_type).to.eql('code'); + + done(); + }); + }); + }); }); }); });