From 826bf9a9129439b5ac49dfabf145e49703be5052 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 16 Feb 2017 22:20:24 +0100 Subject: [PATCH] SONAR-8724 refactor static method WebhookPayload#from() replace by WebhookPayloadFactory that is injected in IoC container --- .../webhook/WebhookCallerImpl.java | 2 +- .../webhook/WebhookDeliveryStorage.java | 2 +- .../webhook/WebhookModule.java | 1 + .../webhook/WebhookPayload.java | 79 +------------ .../webhook/WebhookPayloadFactory.java | 28 +++++ .../webhook/WebhookPayloadFactoryImpl.java | 108 ++++++++++++++++++ .../webhook/WebhookPostTask.java | 8 +- .../component/ws/ComponentsWsModuleTest.java | 3 +- .../webhook/WebhookCallerImplTest.java | 2 +- .../webhook/WebhookDeliveryStorageTest.java | 2 +- .../webhook/WebhookModuleTest.java | 45 ++++++++ ...st.java => WebhookPayloadFactoryTest.java} | 22 ++-- .../webhook/WebhookPostTaskTest.java | 3 +- 13 files changed, 208 insertions(+), 97 deletions(-) create mode 100644 server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactory.java create mode 100644 server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactoryImpl.java create mode 100644 server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModuleTest.java rename server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/{WebhookPayloadTest.java => WebhookPayloadFactoryTest.java} (87%) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImpl.java index 1460740121d..097b67608f5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImpl.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImpl.java @@ -66,7 +66,7 @@ public class WebhookCallerImpl implements WebhookCaller { Request.Builder request = new Request.Builder(); request.url(webhook.getUrl()); request.header(PROJECT_KEY_HEADER, payload.getProjectKey()); - RequestBody body = RequestBody.create(JSON, payload.toJson()); + RequestBody body = RequestBody.create(JSON, payload.getJson()); request.post(body); return request.build(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorage.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorage.java index 1e24179535f..7a36e32970e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorage.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorage.java @@ -73,7 +73,7 @@ public class WebhookDeliveryStorage { dto.setHttpStatus(delivery.getHttpStatus().orElse(null)); dto.setDurationMs(delivery.getDurationInMs().orElse(null)); dto.setErrorStacktrace(delivery.getError().map(Throwables::getStackTraceAsString).orElse(null)); - dto.setPayload(delivery.getPayload().toJson()); + dto.setPayload(delivery.getPayload().getJson()); dto.setCreatedAt(delivery.getAt()); return dto; } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModule.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModule.java index 22683cd259b..2d377d803ba 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModule.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModule.java @@ -27,6 +27,7 @@ public class WebhookModule extends Module { add( WebhookCallerImpl.class, WebhookDeliveryStorage.class, + WebhookPayloadFactoryImpl.class, WebhookPostTask.class); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayload.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayload.java index 8b868ebe347..c08e99f68fa 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayload.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayload.java @@ -19,21 +19,9 @@ */ package org.sonar.server.computation.task.projectanalysis.webhook; -import java.io.StringWriter; -import java.io.Writer; -import java.util.Date; -import java.util.Optional; -import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; -import org.sonar.api.ce.posttask.CeTask; -import org.sonar.api.ce.posttask.PostProjectAnalysisTask; -import org.sonar.api.ce.posttask.Project; -import org.sonar.api.ce.posttask.QualityGate; -import org.sonar.api.ce.posttask.ScannerContext; -import org.sonar.api.utils.text.JsonWriter; import static java.util.Objects.requireNonNull; -import static org.sonar.core.config.WebhookProperties.ANALYSIS_PROPERTY_PREFIX; @Immutable public class WebhookPayload { @@ -50,72 +38,7 @@ public class WebhookPayload { return projectKey; } - public String toJson() { + public String getJson() { return json; } - - public static WebhookPayload from(PostProjectAnalysisTask.ProjectAnalysis analysis) { - Writer string = new StringWriter(); - try (JsonWriter writer = JsonWriter.of(string)) { - writer.beginObject(); - writeTask(writer, analysis.getCeTask()); - Optional analysisDate = analysis.getAnalysisDate(); - if (analysisDate.isPresent()) { - writer.propDateTime("analysedAt", analysisDate.get()); - } - writeProject(analysis, writer, analysis.getProject()); - writeQualityGate(writer, analysis.getQualityGate()); - writeAnalysisProperties(writer, analysis.getScannerContext()); - writer.endObject().close(); - return new WebhookPayload(analysis.getProject().getKey(), string.toString()); - } - } - - private static void writeAnalysisProperties(JsonWriter writer, ScannerContext scannerContext) { - writer.name("properties"); - writer.beginObject(); - scannerContext.getProperties().entrySet() - .stream() - .filter(prop -> prop.getKey().startsWith(ANALYSIS_PROPERTY_PREFIX)) - .forEach(prop -> writer.prop(prop.getKey(), prop.getValue())); - writer.endObject(); - } - - private static void writeTask(JsonWriter writer, CeTask ceTask) { - writer.prop("taskId", ceTask.getId()); - writer.prop("status", ceTask.getStatus().toString()); - } - - private static void writeProject(PostProjectAnalysisTask.ProjectAnalysis analysis, JsonWriter writer, Project project) { - writer.name("project"); - writer.beginObject(); - writer.prop("key", project.getKey()); - writer.prop("name", analysis.getProject().getName()); - writer.endObject(); - } - - private static void writeQualityGate(JsonWriter writer, @Nullable QualityGate gate) { - if (gate != null) { - writer.name("qualityGate"); - writer.beginObject(); - writer.prop("name", gate.getName()); - writer.prop("status", gate.getStatus().toString()); - writer.name("conditions").beginArray(); - for (QualityGate.Condition condition : gate.getConditions()) { - writer.beginObject(); - writer.prop("metric", condition.getMetricKey()); - writer.prop("operator", condition.getOperator().name()); - if (condition.getStatus() != QualityGate.EvaluationStatus.NO_VALUE) { - writer.prop("value", condition.getValue()); - } - writer.prop("status", condition.getStatus().name()); - writer.prop("onLeakPeriod", condition.isOnLeakPeriod()); - writer.prop("errorThreshold", condition.getErrorThreshold()); - writer.prop("warningThreshold", condition.getWarningThreshold()); - writer.endObject(); - } - writer.endArray(); - writer.endObject(); - } - } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactory.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactory.java new file mode 100644 index 00000000000..0f3bebb8dc0 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactory.java @@ -0,0 +1,28 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 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. + */ +package org.sonar.server.computation.task.projectanalysis.webhook; + +import org.sonar.api.ce.posttask.PostProjectAnalysisTask; + +public interface WebhookPayloadFactory { + + WebhookPayload create(PostProjectAnalysisTask.ProjectAnalysis analysis); + +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactoryImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactoryImpl.java new file mode 100644 index 00000000000..5305262424d --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactoryImpl.java @@ -0,0 +1,108 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 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. + */ +package org.sonar.server.computation.task.projectanalysis.webhook; + +import java.io.StringWriter; +import java.io.Writer; +import javax.annotation.Nullable; +import org.sonar.api.ce.ComputeEngineSide; +import org.sonar.api.ce.posttask.CeTask; +import org.sonar.api.ce.posttask.PostProjectAnalysisTask; +import org.sonar.api.ce.posttask.Project; +import org.sonar.api.ce.posttask.QualityGate; +import org.sonar.api.ce.posttask.ScannerContext; +import org.sonar.api.utils.text.JsonWriter; + +import static org.sonar.core.config.WebhookProperties.ANALYSIS_PROPERTY_PREFIX; + +@ComputeEngineSide +public class WebhookPayloadFactoryImpl implements WebhookPayloadFactory { + + @Override + public WebhookPayload create(PostProjectAnalysisTask.ProjectAnalysis analysis) { + Writer string = new StringWriter(); + try (JsonWriter writer = JsonWriter.of(string)) { + writer.beginObject(); + writeTask(writer, analysis.getCeTask()); + analysis.getAnalysisDate().ifPresent(date -> writer.propDateTime("analysedAt", date)); + writeProject(analysis, writer, analysis.getProject()); + writeQualityGate(writer, analysis.getQualityGate()); + writeAnalysisProperties(writer, analysis.getScannerContext()); + writer.endObject().close(); + return new WebhookPayload(analysis.getProject().getKey(), string.toString()); + } + } + + private static void writeAnalysisProperties(JsonWriter writer, ScannerContext scannerContext) { + writer + .name("properties") + .beginObject(); + scannerContext.getProperties().entrySet() + .stream() + .filter(prop -> prop.getKey().startsWith(ANALYSIS_PROPERTY_PREFIX)) + .forEach(prop -> writer.prop(prop.getKey(), prop.getValue())); + writer.endObject(); + } + + private static void writeTask(JsonWriter writer, CeTask ceTask) { + writer + .prop("taskId", ceTask.getId()) + .prop("status", ceTask.getStatus().toString()); + } + + private static void writeProject(PostProjectAnalysisTask.ProjectAnalysis analysis, JsonWriter writer, Project project) { + writer + .name("project") + .beginObject() + .prop("key", project.getKey()) + .prop("name", analysis.getProject().getName()) + .endObject(); + } + + private static void writeQualityGate(JsonWriter writer, @Nullable QualityGate gate) { + if (gate != null) { + writer + .name("qualityGate") + .beginObject() + .prop("name", gate.getName()) + .prop("status", gate.getStatus().toString()) + .name("conditions") + .beginArray(); + for (QualityGate.Condition condition : gate.getConditions()) { + writer + .beginObject() + .prop("metric", condition.getMetricKey()) + .prop("operator", condition.getOperator().name()); + if (condition.getStatus() != QualityGate.EvaluationStatus.NO_VALUE) { + writer.prop("value", condition.getValue()); + } + writer + .prop("status", condition.getStatus().name()) + .prop("onLeakPeriod", condition.isOnLeakPeriod()) + .prop("errorThreshold", condition.getErrorThreshold()) + .prop("warningThreshold", condition.getWarningThreshold()) + .endObject(); + } + writer + .endArray() + .endObject(); + } + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTask.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTask.java index c5928eab641..5dbae13a8c9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTask.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTask.java @@ -41,13 +41,15 @@ public class WebhookPostTask implements PostProjectAnalysisTask { private final TreeRootHolder rootHolder; private final SettingsRepository settingsRepository; + private final WebhookPayloadFactory payloadFactory; private final WebhookCaller caller; private final WebhookDeliveryStorage deliveryStorage; - public WebhookPostTask(TreeRootHolder rootHolder, SettingsRepository settingsRepository, WebhookCaller caller, - WebhookDeliveryStorage deliveryStorage) { + public WebhookPostTask(TreeRootHolder rootHolder, SettingsRepository settingsRepository, WebhookPayloadFactory payloadFactory, + WebhookCaller caller, WebhookDeliveryStorage deliveryStorage) { this.rootHolder = rootHolder; this.settingsRepository = settingsRepository; + this.payloadFactory = payloadFactory; this.caller = caller; this.deliveryStorage = deliveryStorage; } @@ -74,7 +76,7 @@ public class WebhookPostTask implements PostProjectAnalysisTask { } private void process(Settings settings, ProjectAnalysis analysis, Iterable webhookProperties) { - WebhookPayload payload = WebhookPayload.from(analysis); + WebhookPayload payload = payloadFactory.create(analysis); for (String webhookProp : webhookProperties) { String name = settings.getString(format("%s.%s", webhookProp, WebhookProperties.NAME_FIELD)); String url = settings.getString(format("%s.%s", webhookProp, WebhookProperties.URL_FIELD)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsModuleTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsModuleTest.java index a16b7c23797..d59687fd3f0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsModuleTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsModuleTest.java @@ -23,12 +23,13 @@ import org.junit.Test; import org.sonar.core.platform.ComponentContainer; import static org.assertj.core.api.Assertions.assertThat; +import static org.sonar.core.platform.ComponentContainer.COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER; public class ComponentsWsModuleTest { @Test public void verify_count_of_added_components() { ComponentContainer container = new ComponentContainer(); new ComponentsWsModule().configure(container); - assertThat(container.size()).isEqualTo(11 + 2); + assertThat(container.size()).isEqualTo(11 + COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImplTest.java index c62481dd495..77da8ca4f30 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImplTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookCallerImplTest.java @@ -68,7 +68,7 @@ public class WebhookCallerImplTest { RecordedRequest recordedRequest = server.takeRequest(); assertThat(recordedRequest.getMethod()).isEqualTo("POST"); assertThat(recordedRequest.getPath()).isEqualTo("/ping"); - assertThat(recordedRequest.getBody().readUtf8()).isEqualTo(payload.toJson()); + assertThat(recordedRequest.getBody().readUtf8()).isEqualTo(payload.getJson()); assertThat(recordedRequest.getHeader("User-Agent")).isEqualTo("SonarQube/6.2"); assertThat(recordedRequest.getHeader("Content-Type")).isEqualTo("application/json; charset=utf-8"); assertThat(recordedRequest.getHeader("X-SonarQube-Project")).isEqualTo(payload.getProjectKey()); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorageTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorageTest.java index 9c7d66eb3f4..49faead0747 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorageTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookDeliveryStorageTest.java @@ -68,7 +68,7 @@ public class WebhookDeliveryStorageTest { assertThat(dto.getCreatedAt()).isEqualTo(delivery.getAt()); assertThat(dto.getHttpStatus()).isEqualTo(delivery.getHttpStatus().get()); assertThat(dto.getDurationMs()).isEqualTo(delivery.getDurationInMs().get()); - assertThat(dto.getPayload()).isEqualTo(delivery.getPayload().toJson()); + assertThat(dto.getPayload()).isEqualTo(delivery.getPayload().getJson()); assertThat(dto.getErrorStacktrace()).isNull(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModuleTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModuleTest.java new file mode 100644 index 00000000000..c706e9793a3 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookModuleTest.java @@ -0,0 +1,45 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 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. + */ +package org.sonar.server.computation.task.projectanalysis.webhook; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.sonar.core.platform.ComponentContainer; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.sonar.core.platform.ComponentContainer.COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER; + +public class WebhookModuleTest { + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private WebhookModule underTest = new WebhookModule(); + + @Test + public void verify_count_of_added_components() { + ComponentContainer container = new ComponentContainer(); + + underTest.configure(container); + + assertThat(container.size()).isEqualTo(4 + COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER); + } +} diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactoryTest.java similarity index 87% rename from server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadTest.java rename to server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactoryTest.java index 911100f30b2..05aadcd6c87 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPayloadFactoryTest.java @@ -40,10 +40,12 @@ import static org.sonar.api.ce.posttask.PostProjectAnalysisTaskTester.newQuality import static org.sonar.api.ce.posttask.PostProjectAnalysisTaskTester.newScannerContextBuilder; import static org.sonar.test.JsonAssert.assertJson; -public class WebhookPayloadTest { +public class WebhookPayloadFactoryTest { private static final String PROJECT_KEY = "P1"; + private WebhookPayloadFactory underTest = new WebhookPayloadFactoryImpl(); + @Test public void create_payload_for_successful_analysis() { CeTask task = newCeTaskBuilder() @@ -64,9 +66,9 @@ public class WebhookPayloadTest { .build(); PostProjectAnalysisTask.ProjectAnalysis analysis = newAnalysis(task, gate, emptyMap()); - WebhookPayload payload = WebhookPayload.from(analysis); + WebhookPayload payload = underTest.create(analysis); assertThat(payload.getProjectKey()).isEqualTo(PROJECT_KEY); - assertJson(payload.toJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/success.json")); + assertJson(payload.getJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/success.json")); } @Test @@ -88,9 +90,9 @@ public class WebhookPayloadTest { .build(); PostProjectAnalysisTask.ProjectAnalysis analysis = newAnalysis(task, gate, emptyMap()); - WebhookPayload payload = WebhookPayload.from(analysis); + WebhookPayload payload = underTest.create(analysis); assertThat(payload.getProjectKey()).isEqualTo(PROJECT_KEY); - assertJson(payload.toJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/gate_condition_without_value.json")); + assertJson(payload.getJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/gate_condition_without_value.json")); } @Test @@ -112,9 +114,9 @@ public class WebhookPayloadTest { ); PostProjectAnalysisTask.ProjectAnalysis analysis = newAnalysis(task, gate, scannerProperties); - WebhookPayload payload = WebhookPayload.from(analysis); - assertJson(payload.toJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/with_analysis_properties.json")); - assertThat(payload.toJson()) + WebhookPayload payload = underTest.create(analysis); + assertJson(payload.getJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/with_analysis_properties.json")); + assertThat(payload.getJson()) .doesNotContain("not.prefixed.with.sonar.analysis") .doesNotContain("foo") .doesNotContain("should be ignored"); @@ -125,10 +127,10 @@ public class WebhookPayloadTest { CeTask ceTask = newCeTaskBuilder().setStatus(CeTask.Status.FAILED).setId("#1").build(); PostProjectAnalysisTask.ProjectAnalysis analysis = newAnalysis(ceTask, null, emptyMap()); - WebhookPayload payload = WebhookPayload.from(analysis); + WebhookPayload payload = underTest.create(analysis); assertThat(payload.getProjectKey()).isEqualTo(PROJECT_KEY); - assertJson(payload.toJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/failed.json")); + assertJson(payload.getJson()).isSimilarTo(getClass().getResource("WebhookPayloadTest/failed.json")); } private static PostProjectAnalysisTask.ProjectAnalysis newAnalysis(CeTask task, @Nullable QualityGate gate, diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTaskTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTaskTest.java index 22d358f1041..043d56c80e7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTaskTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTaskTest.java @@ -58,6 +58,7 @@ public class WebhookPostTaskTest { private final MapSettings settings = new MapSettings(); private final TestWebhookCaller caller = new TestWebhookCaller(); + private final WebhookPayloadFactory payloadFactory = new WebhookPayloadFactoryImpl(); private final WebhookDeliveryStorage deliveryStorage = mock(WebhookDeliveryStorage.class); @Test @@ -130,7 +131,7 @@ public class WebhookPostTaskTest { private void execute() { SettingsRepository settingsRepository = new TestSettingsRepository(settings); - WebhookPostTask task = new WebhookPostTask(rootHolder, settingsRepository, caller, deliveryStorage); + WebhookPostTask task = new WebhookPostTask(rootHolder, settingsRepository, payloadFactory, caller, deliveryStorage); PostProjectAnalysisTaskTester.of(task) .at(new Date()) -- 2.39.5