aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWouter Admiraal <wouter.admiraal@sonarsource.com>2022-07-15 12:17:01 +0200
committersonartech <sonartech@sonarsource.com>2022-07-18 20:03:26 +0000
commit0f8885a95eb4e0174ad9212a9773700047f23666 (patch)
tree66fbf0b3fdd81199f7adb1ee59f91e94ed3df38a
parentab9a9dfcb3de6ca3359f2f00265c49aa4b74b7f1 (diff)
downloadsonarqube-0f8885a95eb4e0174ad9212a9773700047f23666.tar.gz
sonarqube-0f8885a95eb4e0174ad9212a9773700047f23666.zip
SONAR-17037 Redirect after maintenance page doesn't work when running with a context
-rw-r--r--server/sonar-web/src/main/js/app/components/MigrationContainer.tsx7
-rw-r--r--server/sonar-web/src/main/js/app/components/__tests__/MigrationContainer-test.tsx63
-rw-r--r--server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/MigrationContainer-test.tsx.snap14
3 files changed, 80 insertions, 4 deletions
diff --git a/server/sonar-web/src/main/js/app/components/MigrationContainer.tsx b/server/sonar-web/src/main/js/app/components/MigrationContainer.tsx
index c11a011ad70..d846dd577bc 100644
--- a/server/sonar-web/src/main/js/app/components/MigrationContainer.tsx
+++ b/server/sonar-web/src/main/js/app/components/MigrationContainer.tsx
@@ -18,17 +18,16 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
-import { Navigate, Outlet, useLocation } from 'react-router-dom';
+import { Navigate, Outlet } from 'react-router-dom';
import { getSystemStatus } from '../../helpers/system';
export function MigrationContainer() {
- const location = useLocation();
-
if (getSystemStatus() !== 'UP') {
+ const returnTo = window.location.pathname + window.location.search + window.location.hash;
const to = {
pathname: '/maintenance',
search: new URLSearchParams({
- return_to: location.pathname + location.search + location.hash
+ return_to: returnTo
}).toString()
};
diff --git a/server/sonar-web/src/main/js/app/components/__tests__/MigrationContainer-test.tsx b/server/sonar-web/src/main/js/app/components/__tests__/MigrationContainer-test.tsx
new file mode 100644
index 00000000000..b32306cc8c6
--- /dev/null
+++ b/server/sonar-web/src/main/js/app/components/__tests__/MigrationContainer-test.tsx
@@ -0,0 +1,63 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2022 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+import { shallow } from 'enzyme';
+import * as React from 'react';
+import { getSystemStatus } from '../../../helpers/system';
+import MigrationContainer from '../MigrationContainer';
+
+jest.mock('../../../helpers/system', () => ({
+ getSystemStatus: jest.fn()
+}));
+
+const originalLocation = window.location;
+
+beforeAll(() => {
+ const location = {
+ pathname: '/projects',
+ search: '?query=toto',
+ hash: '#hash'
+ };
+ Object.defineProperty(window, 'location', {
+ writable: true,
+ value: location
+ });
+});
+
+afterAll(() => {
+ Object.defineProperty(window, 'location', {
+ writable: true,
+ value: originalLocation
+ });
+});
+
+it('should render correctly if system is up', () => {
+ (getSystemStatus as jest.Mock).mockReturnValueOnce('UP');
+ expect(shallowRender()).toMatchSnapshot();
+});
+
+it('should render correctly if system is starting', () => {
+ (getSystemStatus as jest.Mock).mockReturnValueOnce('STARTING');
+ expect(shallowRender()).toMatchSnapshot();
+});
+
+function shallowRender() {
+ return shallow(<MigrationContainer />);
+}
diff --git a/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/MigrationContainer-test.tsx.snap b/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/MigrationContainer-test.tsx.snap
new file mode 100644
index 00000000000..4a4b89052ae
--- /dev/null
+++ b/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/MigrationContainer-test.tsx.snap
@@ -0,0 +1,14 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render correctly if system is starting 1`] = `
+<Navigate
+ to={
+ Object {
+ "pathname": "/maintenance",
+ "search": "return_to=%2Fprojects%3Fquery%3Dtoto%23hash",
+ }
+ }
+/>
+`;
+
+exports[`should render correctly if system is up 1`] = `<Outlet />`;