From 6ac87a17fd3341d024372cc5be41736f25effd3c Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 18 Oct 2017 14:38:12 +0200 Subject: [PATCH] SONAR-10002 add install error to response of api/editions/status --- .../sonar/server/edition/ws/StatusAction.java | 1 + .../server/edition/ws/StatusActionTest.java | 35 +++++++++++++++---- sonar-ws/src/main/protobuf/ws-editions.proto | 1 + 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/edition/ws/StatusAction.java b/server/sonar-server/src/main/java/org/sonar/server/edition/ws/StatusAction.java index 4c93a2e2cac..604d964c7dc 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/edition/ws/StatusAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/edition/ws/StatusAction.java @@ -56,6 +56,7 @@ public class StatusAction implements EditionsWsAction { .setCurrentEditionKey(editionManagementState.getCurrentEditionKey().orElse("")) .setNextEditionKey(editionManagementState.getPendingEditionKey().orElse("")) .setInstallationStatus(WsEditions.InstallationStatus.valueOf(editionManagementState.getPendingInstallationStatus().name())); + editionManagementState.getInstallErrorMessage().ifPresent(responseBuilder::setInstallError); WsUtils.writeProtobuf(responseBuilder.build(), request, response); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/edition/ws/StatusActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/edition/ws/StatusActionTest.java index e37a88ffa12..6b94b8a796a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/edition/ws/StatusActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/edition/ws/StatusActionTest.java @@ -19,7 +19,6 @@ */ package org.sonar.server.edition.ws; -import java.util.Optional; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -32,9 +31,12 @@ import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; import org.sonar.test.JsonAssert; +import static java.util.Optional.empty; +import static java.util.Optional.of; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.sonar.server.edition.EditionManagementState.PendingStatus.NONE; public class StatusActionTest { @Rule @@ -81,9 +83,10 @@ public class StatusActionTest { @Test public void verify_example() { userSessionRule.logIn().setSystemAdministrator(); - when(editionManagementState.getCurrentEditionKey()).thenReturn(Optional.empty()); - when(editionManagementState.getPendingEditionKey()).thenReturn(Optional.of("developer-edition")); + when(editionManagementState.getCurrentEditionKey()).thenReturn(empty()); + when(editionManagementState.getPendingEditionKey()).thenReturn(of("developer-edition")); when(editionManagementState.getPendingInstallationStatus()).thenReturn(EditionManagementState.PendingStatus.AUTOMATIC_READY); + when(editionManagementState.getInstallErrorMessage()).thenReturn(empty()); TestRequest request = actionTester.newRequest(); @@ -93,9 +96,10 @@ public class StatusActionTest { @Test public void response_contains_optional_fields_as_empty_string() { userSessionRule.logIn().setSystemAdministrator(); - when(editionManagementState.getCurrentEditionKey()).thenReturn(Optional.empty()); - when(editionManagementState.getPendingEditionKey()).thenReturn(Optional.empty()); - when(editionManagementState.getPendingInstallationStatus()).thenReturn(EditionManagementState.PendingStatus.NONE); + when(editionManagementState.getCurrentEditionKey()).thenReturn(empty()); + when(editionManagementState.getPendingEditionKey()).thenReturn(empty()); + when(editionManagementState.getPendingInstallationStatus()).thenReturn(NONE); + when(editionManagementState.getInstallErrorMessage()).thenReturn(empty()); TestRequest request = actionTester.newRequest(); @@ -106,4 +110,23 @@ public class StatusActionTest { " \"nextEditionKey\": \"\"" + "}"); } + + @Test + public void response_contains_automaticInstallError_when_present() { + userSessionRule.logIn().setSystemAdministrator(); + when(editionManagementState.getCurrentEditionKey()).thenReturn(empty()); + when(editionManagementState.getPendingEditionKey()).thenReturn(empty()); + when(editionManagementState.getPendingInstallationStatus()).thenReturn(NONE); + String errorMessage = "an error! oh god, an error!"; + when(editionManagementState.getInstallErrorMessage()).thenReturn(of(errorMessage)); + TestRequest request = actionTester.newRequest(); + + JsonAssert.assertJson(request.execute().getInput()) + .isSimilarTo("{" + + " \"currentEditionKey\": \"\"," + + " \"installationStatus\": \"NONE\"," + + " \"nextEditionKey\": \"\"," + + " \"installError\": \"" + errorMessage + "\"" + + "}"); + } } diff --git a/sonar-ws/src/main/protobuf/ws-editions.proto b/sonar-ws/src/main/protobuf/ws-editions.proto index 32503be4361..e916bf39357 100644 --- a/sonar-ws/src/main/protobuf/ws-editions.proto +++ b/sonar-ws/src/main/protobuf/ws-editions.proto @@ -30,6 +30,7 @@ message StatusResponse { optional string currentEditionKey = 1; optional InstallationStatus installationStatus = 2; optional string nextEditionKey = 3; + optional string installError = 4; } enum InstallationStatus { -- 2.39.5