From e014fda18abceae8ff94b8c1b80975e1eb85156a Mon Sep 17 00:00:00 2001 From: Robert Title Date: Wed, 10 Jan 2024 13:07:52 -0500 Subject: [PATCH] TOAZ-339: Remove Azure Preview splash page (#4581) --- src/auth/AuthContainer.test.tsx | 23 --------- src/auth/AuthContainer.ts | 6 +-- src/auth/auth.ts | 2 - src/libs/routes.js | 2 - src/libs/state.ts | 3 -- src/pages/AzurePreview.js | 83 --------------------------------- src/pages/AzurePreview.test.js | 45 ------------------ 7 files changed, 1 insertion(+), 163 deletions(-) delete mode 100644 src/pages/AzurePreview.js delete mode 100644 src/pages/AzurePreview.test.js diff --git a/src/auth/AuthContainer.test.tsx b/src/auth/AuthContainer.test.tsx index e462a30c7e..c68f45e607 100644 --- a/src/auth/AuthContainer.test.tsx +++ b/src/auth/AuthContainer.test.tsx @@ -1,6 +1,5 @@ import { act, getByTestId, screen } from '@testing-library/react'; import React from 'react'; -import { isAzureUser } from 'src/auth/auth'; import AuthContainer from 'src/auth/AuthContainer'; import { Ajax } from 'src/libs/ajax'; import { Groups } from 'src/libs/ajax/Groups'; @@ -9,7 +8,6 @@ import { TermsOfService } from 'src/libs/ajax/TermsOfService'; import { User } from 'src/libs/ajax/User'; import { useRoute } from 'src/libs/nav'; import { AuthState, authStore } from 'src/libs/state'; -import AzurePreview from 'src/pages/AzurePreview'; import { Disabled } from 'src/pages/Disabled'; import SignIn from 'src/pages/SignIn'; import { Register } from 'src/registration/Register'; @@ -35,7 +33,6 @@ jest.mock( isAzureUser: jest.fn(), }) ); -jest.mock('src/pages/AzurePreview'); jest.mock('src/pages/Disabled'); jest.mock('src/pages/SignIn'); jest.mock('src/registration/Register'); @@ -227,24 +224,4 @@ describe('AuthContainer', () => { screen.getByText('Child Page Content'); }); }); - describe('when the user is an Azure User and has not seen the Azure Preview', () => { - it('shows the AzurePreview page', async () => { - // Arrange - await act(async () => { - authStore.update((state: AuthState) => ({ ...state, signInStatus: 'userLoaded' })); - }); - asMockedFn(AzurePreview).mockImplementation(renderedPageFn); - asMockedFn(isAzureUser).mockImplementation(() => true); - - // Act - render( - -
- - ); - - // Assert - expect(renderedPageFn).toHaveBeenCalled(); - }); - }); }); diff --git a/src/auth/AuthContainer.ts b/src/auth/AuthContainer.ts index b09314a10e..15e6be185a 100644 --- a/src/auth/AuthContainer.ts +++ b/src/auth/AuthContainer.ts @@ -1,12 +1,10 @@ import { ReactNode } from 'react'; import { h } from 'react-hyperscript-helpers'; -import { isAzureUser } from 'src/auth/auth'; import { fixedSpinnerOverlay } from 'src/components/common'; import { useRoute } from 'src/libs/nav'; import { useStore } from 'src/libs/react-utils'; -import { authStore, azurePreviewStore } from 'src/libs/state'; +import { authStore } from 'src/libs/state'; import * as Utils from 'src/libs/utils'; -import AzurePreview from 'src/pages/AzurePreview'; import { Disabled } from 'src/pages/Disabled'; import SignIn from 'src/pages/SignIn'; import { Register } from 'src/registration/Register'; @@ -21,13 +19,11 @@ const AuthContainer = ({ children }) => { signInStatus === 'userLoaded' && terraUserAllowances.details.enabled === true && terraUserAllowances.details.termsOfService === false; - const seenAzurePreview = useStore(azurePreviewStore) || false; const authspinner = () => fixedSpinnerOverlay; return Utils.cond( [signInStatus === 'uninitialized' && !isPublic, authspinner], [signInStatus === 'signedOut' && !isPublic, () => h(SignIn)], - [seenAzurePreview === false && isAzureUser(), () => h(AzurePreview)], [userMustRegister, () => h(Register)], [displayTosPage && name !== 'privacy', () => h(TermsOfServicePage)], [userIsDisabled, () => h(Disabled)], diff --git a/src/auth/auth.ts b/src/auth/auth.ts index 5508c3c9fd..74630f4f0f 100644 --- a/src/auth/auth.ts +++ b/src/auth/auth.ts @@ -28,7 +28,6 @@ import { AuthState, authStore, azureCookieReadyStore, - azurePreviewStore, cookieReadyStore, getTerraUser, MetricState, @@ -110,7 +109,6 @@ export const signOut = (cause: SignOutCause = 'unspecified'): void => { cookieReadyStore.reset(); azureCookieReadyStore.reset(); getSessionStorage().clear(); - azurePreviewStore.set(false); revokeTokens(); diff --git a/src/libs/routes.js b/src/libs/routes.js index e8bc4f8aaf..2ee2cadaa2 100644 --- a/src/libs/routes.js +++ b/src/libs/routes.js @@ -7,7 +7,6 @@ import * as DataBrowserDetails from 'src/data-catalog/DataBrowserDetails'; import * as DataBrowserPreview from 'src/data-catalog/DataBrowserPreview'; import * as ImportDataPage from 'src/import-data/ImportDataPage'; import { routeHandlersStore } from 'src/libs/state'; -import * as AzurePreview from 'src/pages/AzurePreview'; import * as Projects from 'src/pages/billing/List/List'; import * as Environments from 'src/pages/EnvironmentsPage'; import * as FeaturePreviews from 'src/pages/FeaturePreviews'; @@ -84,7 +83,6 @@ const routes = _.flatten([ UploadData.navPaths, FeaturePreviews.navPaths, WorkspaceFiles.navPaths, - AzurePreview.navPaths, WorkflowsApp.navPaths, WorkspaceMigration.navPaths, NotFound.navPaths, // must be last diff --git a/src/libs/state.ts b/src/libs/state.ts index 26a18c4ae0..835f0b9c1e 100644 --- a/src/libs/state.ts +++ b/src/libs/state.ts @@ -249,9 +249,6 @@ lastActiveTimeStore.update((v) => v || {}); export const toggleStateAtom = staticStorageSlot(getSessionStorage(), 'toggleState'); toggleStateAtom.update((v) => v || { notebooksTab: true }); -export const azurePreviewStore: Atom = staticStorageSlot(getLocalStorage(), 'azurePreview'); -azurePreviewStore.update((v) => v || false); - export const notificationStore = atom([]); export const contactUsActive = atom(false); diff --git a/src/pages/AzurePreview.js b/src/pages/AzurePreview.js deleted file mode 100644 index 67c2b208e3..0000000000 --- a/src/pages/AzurePreview.js +++ /dev/null @@ -1,83 +0,0 @@ -import { Fragment } from 'react'; -import { div, h, h1, p } from 'react-hyperscript-helpers'; -import { signOut } from 'src/auth/auth'; -import { ButtonOutline, ButtonPrimary } from 'src/components/common'; -import planet from 'src/images/register-planet.svg'; -import { ReactComponent as TerraOnAzureLogo } from 'src/images/terra-ms-logo.svg'; -import colors from 'src/libs/colors'; -import { azurePreviewStore } from 'src/libs/state'; - -const styles = { - centered: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }, - paragraph: { - fontSize: 16, - lineHeight: 1.5, - maxWidth: 760, - }, - header: { - display: 'flex', - marginTop: '3rem', - marginBotton: '2rem', - color: colors.dark(0.8), - fontSize: '1.8rem', - fontWeight: 500, - }, - button: { - textTransform: 'none', - }, -}; - -const AzurePreviewForPreviewUser = () => { - const dismiss = () => { - azurePreviewStore.set(true); - }; - - return h(Fragment, [ - p({ style: styles.paragraph }, ['This is a preview version of the Terra platform on Microsoft Azure.']), - - div({ style: { marginTop: '1.5rem' } }, [ - h(ButtonPrimary, { onClick: dismiss, style: styles.button }, ['Proceed to Terra on Microsoft Azure Preview']), - ]), - div({ style: { marginTop: '1rem' } }, [h(ButtonOutline, { onClick: () => signOut('requested'), style: styles.button }, ['Sign Out'])]), - ]); -}; - -const AzurePreview = () => { - return div( - { - role: 'main', - style: { - ...styles.centered, - flexGrow: 1, - padding: '5rem', - backgroundImage: `url(${planet})`, - backgroundRepeat: 'no-repeat', - backgroundSize: '750px', - backgroundPosition: 'right 0px bottom -600px', - }, - }, - [ - div([ - h(TerraOnAzureLogo, { title: 'Terra on Microsoft Azure - Preview', role: 'img' }), - h1({ style: styles.header }, ['Terra on Microsoft Azure - Preview']), - h(AzurePreviewForPreviewUser), - ]), - ] - ); -}; - -export default AzurePreview; - -export const navPaths = [ - { - name: 'azure-preview', - path: '/azure-preview', - component: AzurePreview, - public: true, - title: 'Terra on Microsoft Azure Preview', - }, -]; diff --git a/src/pages/AzurePreview.test.js b/src/pages/AzurePreview.test.js deleted file mode 100644 index 0864ddbe32..0000000000 --- a/src/pages/AzurePreview.test.js +++ /dev/null @@ -1,45 +0,0 @@ -import { screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import { h } from 'react-hyperscript-helpers'; -import { signOut } from 'src/auth/auth'; -import { azurePreviewStore } from 'src/libs/state'; -import { renderWithAppContexts as render } from 'src/testing/test-utils'; - -import AzurePreview from './AzurePreview'; - -jest.mock('src/auth/auth', () => ({ - ...jest.requireActual('src/auth/auth'), - signOut: jest.fn(), -})); - -describe('for preview users', () => { - it('renders a button to proceed to Terra', async () => { - // Arrange - const user = userEvent.setup(); - - jest.spyOn(azurePreviewStore, 'set'); - - // Act - render(h(AzurePreview)); - - const proceedToTerraButton = screen.getByText('Proceed to Terra on Microsoft Azure Preview'); - await user.click(proceedToTerraButton); - - // Assert - expect(azurePreviewStore.set).toHaveBeenCalledWith(true); - }); - - it('renders a sign out button', async () => { - // Arrange - const user = userEvent.setup(); - - // Act - render(h(AzurePreview)); - - const signOutButton = screen.getByText('Sign Out'); - await user.click(signOutButton); - - // Assert - expect(signOut).toHaveBeenCalled(); - }); -});