diff --git a/src/data/utils/dataUtils.js b/src/data/utils/dataUtils.js index 7170990b..9a763cda 100644 --- a/src/data/utils/dataUtils.js +++ b/src/data/utils/dataUtils.js @@ -13,6 +13,7 @@ export default function processLink(link) { export const getTpaProvider = (tpaHintProvider, primaryProviders, secondaryProviders) => { let tpaProvider = null; + let isSecondaryProvider = false; primaryProviders.forEach((provider) => { if (provider.id === tpaHintProvider) { tpaProvider = provider; @@ -23,10 +24,11 @@ export const getTpaProvider = (tpaHintProvider, primaryProviders, secondaryProvi secondaryProviders.forEach((provider) => { if (provider.id === tpaHintProvider) { tpaProvider = provider; + isSecondaryProvider = true; } }); } - return tpaProvider; + return { provider: tpaProvider, isSecondaryProvider }; }; export const getTpaHint = () => { diff --git a/src/login/LoginPage.jsx b/src/login/LoginPage.jsx index d3fd96b5..c04df220 100644 --- a/src/login/LoginPage.jsx +++ b/src/login/LoginPage.jsx @@ -274,7 +274,11 @@ class LoginPage extends React.Component { if (thirdPartyAuthApiStatus === PENDING_STATE) { return ; } - const provider = getTpaProvider(this.tpaHint, providers, secondaryProviders); + const { provider, isSecondaryProvider } = getTpaProvider(this.tpaHint, providers, secondaryProviders); + if (isSecondaryProvider) { + window.location.href = getConfig().LMS_BASE_URL + provider.loginUrl; + return null; + } return provider ? () : this.renderForm( currentProvider, providers, diff --git a/src/login/tests/LoginPage.test.jsx b/src/login/tests/LoginPage.test.jsx index 844a9bdc..34d64d8a 100644 --- a/src/login/tests/LoginPage.test.jsx +++ b/src/login/tests/LoginPage.test.jsx @@ -459,7 +459,6 @@ describe('LoginPage', () => { }); it('should render tpa button for tpa_hint id in secondary provider', () => { - const expectedMessage = `Sign in using ${secondaryProviders.name}`; store = mockStore({ ...initialState, commonComponents: { @@ -476,7 +475,7 @@ describe('LoginPage', () => { window.location = { href: getConfig().BASE_URL.concat('/login'), search: `?next=/dashboard&tpa_hint=${secondaryProviders.id}` }; secondaryProviders.iconImage = null; - const loginPage = mount(reduxWrapper()); - expect(loginPage.find(`button#${secondaryProviders.id}`).find('span').text()).toEqual(expectedMessage); + mount(reduxWrapper()); + expect(window.location.href).toEqual(getConfig().LMS_BASE_URL + secondaryProviders.loginUrl); }); }); diff --git a/src/register/RegistrationPage.jsx b/src/register/RegistrationPage.jsx index ff08e1cf..7fc4447a 100644 --- a/src/register/RegistrationPage.jsx +++ b/src/register/RegistrationPage.jsx @@ -621,7 +621,11 @@ class RegistrationPage extends React.Component { if (thirdPartyAuthApiStatus === PENDING_STATE) { return ; } - const provider = getTpaProvider(this.tpaHint, providers, secondaryProviders); + const { provider, isSecondaryProvider } = getTpaProvider(this.tpaHint, providers, secondaryProviders); + if (isSecondaryProvider) { + window.location.href = getConfig().LMS_BASE_URL + provider.registerUrl; + return null; + } return provider ? () : this.renderForm( currentProvider, diff --git a/src/register/tests/RegistrationPage.test.jsx b/src/register/tests/RegistrationPage.test.jsx index 89f98099..3c6be5b7 100644 --- a/src/register/tests/RegistrationPage.test.jsx +++ b/src/register/tests/RegistrationPage.test.jsx @@ -697,7 +697,6 @@ describe('RegistrationPageTests', () => { }); it('should render tpa button for tpa_hint id in secondary provider', () => { - const expectedMessage = `Sign in using ${secondaryProviders.name}`; store = mockStore({ ...initialState, commonComponents: { @@ -714,7 +713,7 @@ describe('RegistrationPageTests', () => { window.location = { href: getConfig().BASE_URL.concat('/login'), search: `?next=/dashboard&tpa_hint=${secondaryProviders.id}` }; secondaryProviders.iconImage = null; - const registerPage = mount(reduxWrapper()); - expect(registerPage.find(`button#${secondaryProviders.id}`).find('span').text()).toEqual(expectedMessage); + mount(reduxWrapper()); + expect(window.location.href).toEqual(getConfig().LMS_BASE_URL + secondaryProviders.registerUrl); }); });