diff --git a/.eslintrc b/.eslintrc index eb872ab60..de924282d 100644 --- a/.eslintrc +++ b/.eslintrc @@ -27,7 +27,8 @@ "import/resolver": { "alias": { "map": [ - [ "@", "./static/src" ] + [ "@", "./static/src" ], + [ "sharedConstants", "./sharedConstants"] ], "extensions": [ ".js", diff --git a/jsconfig.json b/jsconfig.json index 50fe0488d..060856373 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -2,8 +2,9 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@/*": ["static/src/*"] + "@/*": ["static/src/*"], + "sharedConstants/*": ["sharedConstants/*"] } }, - "include": ["static/src/**/*"] + "include": ["static/src/**/*", "sharedConstants/*"] } diff --git a/serverless/src/samlCallback/__tests__/handler.test.js b/serverless/src/samlCallback/__tests__/handler.test.js index 4ce97cd51..d70f94156 100644 --- a/serverless/src/samlCallback/__tests__/handler.test.js +++ b/serverless/src/samlCallback/__tests__/handler.test.js @@ -61,7 +61,7 @@ describe('samlCallback', () => { expect(statusCode).toEqual(303) expect(Location).toEqual('https://mmt.localtest.earthdata.nasa.gov/auth-callback?target=%2Fhome') - expect(setCookie).toEqual('_mmt_jwt=mock-jwt; SameSite=Strict; Path=/; Domain=example.com; Max-Age=900; Secure;') + expect(setCookie).toEqual('_mmt_jwt_development=mock-jwt; SameSite=Strict; Path=/; Domain=example.com; Max-Age=900; Secure;') expect(createJwt).toHaveBeenCalledTimes(1) expect(createJwt).toHaveBeenCalledWith('launchpad_token', mockEdlProfile) @@ -95,7 +95,7 @@ describe('samlCallback', () => { expect(statusCode).toEqual(303) expect(Location).toEqual('https://mmt.localtest.earthdata.nasa.gov/auth-callback?target=%2Fhome') - expect(setCookie).toEqual('_mmt_jwt=mock-jwt; SameSite=Strict; Path=/; Domain=example.com; Max-Age=900; Secure;') + expect(setCookie).toEqual('_mmt_jwt_development=mock-jwt; SameSite=Strict; Path=/; Domain=example.com; Max-Age=900; Secure;') expect(createJwt).toHaveBeenCalledTimes(1) expect(createJwt).toHaveBeenCalledWith('launchpad_token', mockEdlProfile) @@ -130,7 +130,7 @@ describe('samlCallback', () => { expect(statusCode).toEqual(303) expect(Location).toEqual('https://mmt.localtest.earthdata.nasa.gov/auth-callback?target=%2Fhome') - expect(setCookie).toEqual('_mmt_jwt=mock-jwt; SameSite=Strict; Path=/; Domain=example.com; Max-Age=900;') + expect(setCookie).toEqual('_mmt_jwt_development=mock-jwt; SameSite=Strict; Path=/; Domain=example.com; Max-Age=900;') expect(createJwt).toHaveBeenCalledTimes(1) expect(createJwt).toHaveBeenCalledWith('ABC-1', mockEdlProfile) diff --git a/serverless/src/samlRefreshToken/__tests__/handler.test.js b/serverless/src/samlRefreshToken/__tests__/handler.test.js index f1c7d3545..b929a4686 100644 --- a/serverless/src/samlRefreshToken/__tests__/handler.test.js +++ b/serverless/src/samlRefreshToken/__tests__/handler.test.js @@ -60,7 +60,7 @@ describe('samlRefreshToken', () => { const { 'Set-Cookie': setCookie } = headers expect(statusCode).toBe(200) - expect(setCookie).toEqual('_mmt_jwt=new-mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900; Secure;') + expect(setCookie).toEqual('_mmt_jwt_development=new-mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900; Secure;') expect(createJwt).toHaveBeenCalledTimes(1) expect(createJwt).toHaveBeenCalledWith('refresh_token', { mock: 'profile' }) @@ -114,7 +114,7 @@ describe('samlRefreshToken', () => { const { 'Set-Cookie': setCookie } = headers expect(statusCode).toBe(200) - expect(setCookie).toEqual('_mmt_jwt=new-mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900;') + expect(setCookie).toEqual('_mmt_jwt_development=new-mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900;') expect(createJwt).toHaveBeenCalledTimes(1) expect(createJwt).toHaveBeenCalledWith('mock-token', { mock: 'profile' }) diff --git a/serverless/src/utils/__tests__/createCookie.test.js b/serverless/src/utils/__tests__/createCookie.test.js index 092a09189..c36801a80 100644 --- a/serverless/src/utils/__tests__/createCookie.test.js +++ b/serverless/src/utils/__tests__/createCookie.test.js @@ -17,7 +17,7 @@ describe('createCookie', () => { describe('when not running locally', () => { test('returns the cookie string', () => { - expect(createCookie('mock-jwt')).toEqual('_mmt_jwt=mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900; Secure;') + expect(createCookie('mock-jwt')).toEqual('_mmt_jwt_development=mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900; Secure;') }) }) @@ -25,7 +25,7 @@ describe('createCookie', () => { test('returns the cookie string', () => { process.env.IS_OFFLINE = true - expect(createCookie('mock-jwt')).toEqual('_mmt_jwt=mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900;') + expect(createCookie('mock-jwt')).toEqual('_mmt_jwt_development=mock-jwt; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=900;') }) }) }) diff --git a/serverless/src/utils/createCookie.js b/serverless/src/utils/createCookie.js index cf83af776..0c82945c2 100644 --- a/serverless/src/utils/createCookie.js +++ b/serverless/src/utils/createCookie.js @@ -1,3 +1,5 @@ +import MMT_COOKIE from 'sharedConstants/mmtCookie' + /** * Returns the cookie string with the provided JWT * @param {String} jwt JWT to use for the cookie value @@ -9,7 +11,7 @@ const createCookie = (jwt) => { JWT_VALID_TIME } = process.env - let cookie = `_mmt_jwt=${jwt}; SameSite=Strict; Path=/; Domain=${COOKIE_DOMAIN}; Max-Age=${JWT_VALID_TIME};` + let cookie = `${MMT_COOKIE}=${jwt}; SameSite=Strict; Path=/; Domain=${COOKIE_DOMAIN}; Max-Age=${JWT_VALID_TIME};` if (!IS_OFFLINE) { cookie += ' Secure;' } diff --git a/sharedConstants/mmtCookie.js b/sharedConstants/mmtCookie.js new file mode 100644 index 000000000..bc5a3c7ba --- /dev/null +++ b/sharedConstants/mmtCookie.js @@ -0,0 +1,10 @@ +import { getApplicationConfig } from '../sharedUtils/getConfig' + +/** + * This is the name of the cookie that MMT uses. + */ +const { env } = getApplicationConfig() + +const MMT_COOKIE = `_mmt_jwt_${env}` + +export default MMT_COOKIE diff --git a/static/src/js/components/TemplateForm/__tests__/TemplateForm.test.jsx b/static/src/js/components/TemplateForm/__tests__/TemplateForm.test.jsx index 64da047df..d8ac73099 100644 --- a/static/src/js/components/TemplateForm/__tests__/TemplateForm.test.jsx +++ b/static/src/js/components/TemplateForm/__tests__/TemplateForm.test.jsx @@ -563,7 +563,7 @@ describe('TemplateForm', () => { }, nativeId: 'MMT_mock-uuid', providerId: 'MMT_2', - ummVersion: '1.18.1' + ummVersion: `${ummCVersion}` } }, error: new Error('An error occurred') diff --git a/static/src/js/components/TemplateList/__tests__/TemplateList.test.jsx b/static/src/js/components/TemplateList/__tests__/TemplateList.test.jsx index 65ce63b63..ba215ffcb 100644 --- a/static/src/js/components/TemplateList/__tests__/TemplateList.test.jsx +++ b/static/src/js/components/TemplateList/__tests__/TemplateList.test.jsx @@ -9,7 +9,7 @@ import errorLogger from '@/js/utils/errorLogger' import getTemplates from '@/js/utils/getTemplates' import deleteTemplate from '@/js/utils/deleteTemplate' import NotificationsContext from '@/js/context/NotificationsContext' -import MMT_COOKIE from '@/js/constants/mmtCookie' +import MMT_COOKIE from 'sharedConstants/mmtCookie' import TemplateList from '../TemplateList' diff --git a/static/src/js/constants/mmtCookie.js b/static/src/js/constants/mmtCookie.js deleted file mode 100644 index 64ca71d20..000000000 --- a/static/src/js/constants/mmtCookie.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * This is the name of the cookie that MMT uses. - */ -const MMT_COOKIE = '_mmt_jwt' - -export default MMT_COOKIE diff --git a/static/src/js/hooks/useMMTCookie.js b/static/src/js/hooks/useMMTCookie.js index 4f70be7ea..96d9831b3 100644 --- a/static/src/js/hooks/useMMTCookie.js +++ b/static/src/js/hooks/useMMTCookie.js @@ -1,6 +1,6 @@ import { useCookies } from 'react-cookie' -import MMT_COOKIE from '../constants/mmtCookie' +import MMT_COOKIE from 'sharedConstants/mmtCookie' /** * Returns the cookie value for the MMT auth cookie diff --git a/static/src/js/providers/AuthContextProvider/AuthContextProvider.jsx b/static/src/js/providers/AuthContextProvider/AuthContextProvider.jsx index 212052fb8..c27f384d9 100644 --- a/static/src/js/providers/AuthContextProvider/AuthContextProvider.jsx +++ b/static/src/js/providers/AuthContextProvider/AuthContextProvider.jsx @@ -10,13 +10,13 @@ import { useIdle } from '@uidotdev/usehooks' import AuthContext from '@/js/context/AuthContext' -import MMT_COOKIE from '@/js/constants/mmtCookie' - import useMMTCookie from '@/js/hooks/useMMTCookie' import errorLogger from '@/js/utils/errorLogger' import refreshToken from '@/js/utils/refreshToken' +import MMT_COOKIE from 'sharedConstants/mmtCookie' + import { getApplicationConfig } from '../../../../../sharedUtils/getConfig' const { diff --git a/static/src/js/providers/AuthContextProvider/__tests__/AuthContextProvider.test.jsx b/static/src/js/providers/AuthContextProvider/__tests__/AuthContextProvider.test.jsx index 2835fa548..560c1b441 100644 --- a/static/src/js/providers/AuthContextProvider/__tests__/AuthContextProvider.test.jsx +++ b/static/src/js/providers/AuthContextProvider/__tests__/AuthContextProvider.test.jsx @@ -14,8 +14,7 @@ import refreshToken from '@/js/utils/refreshToken' import NotificationsContextProvider from '@/js/providers/NotificationsContextProvider/NotificationsContextProvider' -import MMT_COOKIE from '@/js/constants/mmtCookie' - +import MMT_COOKIE from 'sharedConstants/mmtCookie' import AuthContextProvider from '../AuthContextProvider' vi.mock('@/js/utils/errorLogger') diff --git a/vite.config.js b/vite.config.js index da2ca351c..e3fa93741 100644 --- a/vite.config.js +++ b/vite.config.js @@ -27,6 +27,10 @@ export default defineConfig({ { find: '@', replacement: path.resolve(__dirname, 'static/src') + }, + { + find: 'sharedConstants', + replacement: path.resolve(__dirname, 'sharedConstants') } ] },