diff --git a/package-lock.json b/package-lock.json index 77d830f..f150e4d 100755 --- a/package-lock.json +++ b/package-lock.json @@ -3015,38 +3015,38 @@ } }, "@edx/frontend-auth": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-auth/-/frontend-auth-1.3.0.tgz", - "integrity": "sha512-llAoGBvxwZCnGzUMFSHHMxGIrrYLuWlEmrSQs6rqdqT5RXHUkuwNde5iemohqGe/dLGcGjiNzUjr83iGUlN66Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-auth/-/frontend-auth-4.0.0.tgz", + "integrity": "sha512-nWbdq9c3WDzNyIA16MI9jRMaSbUn4lMUA1gLi1xmxxviR9Kppm6Ne6vZpCpo0p18X2kcWsfEnEprTfRg1i+5Ew==", "requires": { "axios": "^0.18.0", + "camelcase-keys": "^5.0.0", "jwt-decode": "^2.2.0", - "prop-types": "^15.5.10", "pubsub-js": "^1.7.0", - "react": "^16.4.2", - "react-redux": "^5.0.7", - "react-router-dom": "^4.3.1", - "redux": "^4.0.0", + "snakecase-keys": "^2.1.0", "universal-cookie": "^3.0.4", "url-parse": "^1.4.3" }, "dependencies": { - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "camelcase-keys": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-5.1.0.tgz", + "integrity": "sha512-eZJ8mFhctds8vW/Lo/a2CXFrCEzJurUU05Tx2ReiXaW4aVBJBNxOvtGHf/GQdjHMQTZE11FCRhrdRlM4Se5umA==", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "camelcase": "^5.3.1", + "map-obj": "^3.0.0", + "quick-lru": "^1.0.0" } }, - "redux": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz", - "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==", - "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" - } + "map-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-3.0.0.tgz", + "integrity": "sha512-Ot+2wruG8WqTbJngDxz0Ifm03y2pO4iL+brq/l+yEkGjUza03BnMQqX2XT//Jls8MOOl2VTHviAoLX+/nq/HXw==" } } }, @@ -4277,7 +4277,7 @@ }, "axios": { "version": "0.18.0", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { "follow-redirects": "^1.3.0", @@ -10448,7 +10448,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -10469,12 +10470,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10489,17 +10492,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -10616,7 +10622,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -10628,6 +10635,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -10642,6 +10650,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -10649,12 +10658,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -10673,6 +10684,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -10753,7 +10765,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -10765,6 +10778,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -10850,7 +10864,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -10886,6 +10901,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -10905,6 +10921,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -10948,12 +10965,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -21510,8 +21529,7 @@ "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" }, "raf": { "version": "3.4.1", @@ -23864,6 +23882,22 @@ } } }, + "snakecase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-2.1.0.tgz", + "integrity": "sha512-oQSiCIgNCwixBf8Kxgv0SPo67zQSutIEymAk/dkgcdZEOMPvGMGPua/WwYGPG4LLHArGGews3CB3zEEfqlMk2g==", + "requires": { + "map-obj": "~3.0.0", + "to-snake-case": "~1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-3.0.0.tgz", + "integrity": "sha512-Ot+2wruG8WqTbJngDxz0Ifm03y2pO4iL+brq/l+yEkGjUza03BnMQqX2XT//Jls8MOOl2VTHviAoLX+/nq/HXw==" + } + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -25067,6 +25101,11 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "to-no-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", + "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=" + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -25115,6 +25154,22 @@ } } }, + "to-snake-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-snake-case/-/to-snake-case-1.0.0.tgz", + "integrity": "sha1-znRpE4l5RgGah+Yu366upMYIq4w=", + "requires": { + "to-space-case": "^1.0.0" + } + }, + "to-space-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", + "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=", + "requires": { + "to-no-case": "^1.0.0" + } + }, "toposort": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", @@ -25639,9 +25694,9 @@ } }, "universal-cookie": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-3.0.7.tgz", - "integrity": "sha512-wfZRbaEzFTDbP64fzTfGDfokB3pWkDNjtsuRAZQWaiuj/Up+3/0AEvN4IhFHPK24iGNtGJ6PNIxv1GQzMSiyMw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-3.1.0.tgz", + "integrity": "sha512-sP6WuFgqIUro7ikgI2ndrsw9Ro+YvVBe5O9cQfWnjTicpLaSMUEUUDjQF8m8utzWF2ONl7tRkcZd7v4n6NnzjQ==", "requires": { "@types/cookie": "^0.3.1", "@types/object-assign": "^4.0.30", diff --git a/package.json b/package.json index 7ec787a..16f7bb7 100755 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "@edx/edx-bootstrap": "^0.4.3", - "@edx/frontend-auth": "^1.3.0", + "@edx/frontend-auth": "^4.0.0", "@edx/frontend-component-footer": "^1.0.0", "@edx/paragon": "^3.8.3", "@redux-beacon/segment": "^1.0.0", diff --git a/src/data/actions/assignmentTypes.test.js b/src/data/actions/assignmentTypes.test.js index e4df35b..ca172d1 100644 --- a/src/data/actions/assignmentTypes.test.js +++ b/src/data/actions/assignmentTypes.test.js @@ -14,6 +14,8 @@ import { const mockStore = configureMockStore([thunk]); const axiosMock = new MockAdapter(apiClient); +apiClient.isAccessTokenExpired = jest.fn(); +apiClient.isAccessTokenExpired.mockReturnValue(false); describe('actions', () => { afterEach(() => { diff --git a/src/data/actions/cohorts.test.js b/src/data/actions/cohorts.test.js index ed32d38..59cf6a9 100644 --- a/src/data/actions/cohorts.test.js +++ b/src/data/actions/cohorts.test.js @@ -13,6 +13,8 @@ import { const mockStore = configureMockStore([thunk]); const axiosMock = new MockAdapter(apiClient); +apiClient.isAccessTokenExpired = jest.fn(); +apiClient.isAccessTokenExpired.mockReturnValue(false); describe('actions', () => { afterEach(() => { diff --git a/src/data/actions/grades.test.js b/src/data/actions/grades.test.js index 19e85ed..8726f6a 100644 --- a/src/data/actions/grades.test.js +++ b/src/data/actions/grades.test.js @@ -17,6 +17,8 @@ import { sortAlphaAsc } from './utils'; const mockStore = configureMockStore([thunk]); const axiosMock = new MockAdapter(apiClient); +apiClient.isAccessTokenExpired = jest.fn(); +apiClient.isAccessTokenExpired.mockReturnValue(false); describe('actions', () => { afterEach(() => { diff --git a/src/data/actions/roles.test.js b/src/data/actions/roles.test.js index f6d1b16..3d97595 100644 --- a/src/data/actions/roles.test.js +++ b/src/data/actions/roles.test.js @@ -17,6 +17,8 @@ import { STARTED_FETCHING_ASSIGNMENT_TYPES } from '../constants/actionTypes/assi const mockStore = configureMockStore([thunk]); const axiosMock = new MockAdapter(apiClient); +apiClient.isAccessTokenExpired = jest.fn(); +apiClient.isAccessTokenExpired.mockReturnValue(false); const course1Id = 'course-v1:edX+DemoX+Demo_Course'; const course2Id = 'course-v1:edX+DemoX+Demo_Course_2'; diff --git a/src/data/actions/tracks.test.js b/src/data/actions/tracks.test.js index ee1e17c..3ccbcfc 100644 --- a/src/data/actions/tracks.test.js +++ b/src/data/actions/tracks.test.js @@ -13,6 +13,8 @@ import { const mockStore = configureMockStore([thunk]); const axiosMock = new MockAdapter(apiClient); +apiClient.isAccessTokenExpired = jest.fn(); +apiClient.isAccessTokenExpired.mockReturnValue(false); describe('actions', () => { afterEach(() => { diff --git a/src/index.jsx b/src/index.jsx index fe3e85a..6b9694b 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -45,6 +45,9 @@ const App = () => ( ); -if (apiClient.ensurePublicOrAuthencationAndCookies(window.location.pathname)) { - ReactDOM.render(, document.getElementById('root')); -} +apiClient.ensurePublicOrAuthenticationAndCookies( + window.location.pathname, + () => { + ReactDOM.render(, document.getElementById('root')); + }, +);