#21: support /oauth2/v1 on frontend

This commit is contained in:
SleepWalker 2016-07-27 22:45:50 +03:00
parent 1b8333b006
commit d6df492073
7 changed files with 15 additions and 13 deletions

View File

@ -70,7 +70,7 @@ function stopLoading() {
/* global process: false */
if (process.env.NODE_ENV !== 'production') {
// some shortcuts for testing on localhost
window.testOAuth = () => location.href = '/oauth?client_id=ely&redirect_uri=http%3A%2F%2Fely.by&response_type=code&scope=minecraft_server_session';
window.testOAuthStatic = () => location.href = '/oauth?client_id=ely&redirect_uri=static_page_with_code&response_type=code&scope=minecraft_server_session';
window.testOAuthStaticCode = () => location.href = '/oauth?client_id=ely&redirect_uri=static_page&response_type=code&scope=minecraft_server_session';
window.testOAuth = () => location.href = '/oauth2/v1?client_id=ely&redirect_uri=http%3A%2F%2Fely.by&response_type=code&scope=minecraft_server_session';
window.testOAuthStatic = () => location.href = '/oauth2/v1?client_id=ely&redirect_uri=static_page_with_code&response_type=code&scope=minecraft_server_session';
window.testOAuthStaticCode = () => location.href = '/oauth2/v1?client_id=ely&redirect_uri=static_page&response_type=code&scope=minecraft_server_session';
}

View File

@ -50,7 +50,7 @@ export default function routesFactory(store) {
<Route path="rules" component={RulesPage} />
<Route path="oauth" component={OAuthInit} {...startAuthFlow} />
<Route path="oauth2(/:version)" component={OAuthInit} {...startAuthFlow} />
<Route path="auth" component={AuthPage}>
<Route path="/login" components={new Login()} {...startAuthFlow} />

View File

@ -3,7 +3,7 @@ import request from 'services/request';
export default {
validate(oauthData) {
return request.get(
'/api/oauth/validate',
'/api/oauth2/v1/validate',
getOAuthRequest(oauthData)
).catch(handleOauthParamsValidation);
},
@ -12,7 +12,7 @@ export default {
const query = request.buildQuery(getOAuthRequest(oauthData));
return request.post(
`/api/oauth/complete?${query}`,
`/api/oauth2/v1/complete?${query}`,
typeof params.accept === 'undefined' ? {} : {accept: params.accept}
).catch((resp = {}) => {
if (resp.statusCode === 401 && resp.error === 'access_denied') {

View File

@ -122,8 +122,9 @@ export default class AuthFlow {
this.run('setOAuthRequest', {});
}
switch (path) { // use only first part of an url
case '/oauth':
switch (path) {
case '/oauth2/v1':
case '/oauth2':
this.setState(new OAuthState());
break;

View File

@ -56,7 +56,7 @@ describe('components/auth/actions', () => {
request.get.returns(Promise.resolve(resp));
return callThunk(oAuthValidate, oauthData).then(() => {
sinon.assert.calledWith(request.get, '/api/oauth/validate');
sinon.assert.calledWith(request.get, '/api/oauth2/v1/validate');
sinon.assert.calledWith(dispatch, setClient(resp.client));
sinon.assert.calledWith(dispatch, setOAuthRequest(resp.oAuth));
sinon.assert.calledWith(dispatch, setScopes(resp.session.scopes));
@ -83,7 +83,7 @@ describe('components/auth/actions', () => {
request.post.returns(Promise.resolve(resp));
return callThunk(oAuthComplete).then(() => {
sinon.assert.calledWithMatch(request.post, /\/api\/oauth\/complete/);
sinon.assert.calledWithMatch(request.post, /\/api\/oauth2\/v1\/complete/);
sinon.assert.calledWith(dispatch, setOAuthCode({
success: true,
code: '123',

View File

@ -96,7 +96,7 @@ describe('AuthFlow.functional', () => {
redirectUri: expectedRedirect
})});
navigate('/oauth');
navigate('/oauth2');
sinon.assert.calledThrice(flow.run);
sinon.assert.calledWith(flow.run.getCall(0), 'oAuthValidate');

View File

@ -176,7 +176,8 @@ describe('AuthFlow', () => {
'/change-password': LoginState,
'/oauth/permissions': LoginState,
'/oauth/finish': LoginState,
'/oauth': OAuthState,
'/oauth2/v1': OAuthState,
'/oauth2': OAuthState,
'/register': RegisterState,
'/recover-password': RecoverPasswordState,
'/recover-password/key123': RecoverPasswordState,
@ -226,7 +227,7 @@ describe('AuthFlow', () => {
});
it('should not handle the same request twice', () => {
const path = '/oauth';
const path = '/oauth2';
const callback = sinon.stub();
flow.handleRequest(path, () => {}, callback);