private void mockPayloadSupplierConsumedByWebhooks() { Mockito.doAnswer(invocationOnMock -> { Supplier<WebhookPayload> supplier = (Supplier<WebhookPayload>) invocationOnMock.getArguments()[1]; supplier.get(); return null; }).when(webHooks) .sendProjectAnalysisUpdate(ArgumentMatchers.any(), ArgumentMatchers.any()); }
private void verifyWebhookCalled(ComponentAndBranch componentAndBranch, SnapshotDto analysis, ComponentDto project) { verify(webHooks).isEnabled(project); verify(webHooks).sendProjectAnalysisUpdate( eq(new WebHooks.Analysis(componentAndBranch.uuid(), analysis.getUuid(), null)), any()); }
private void mockWebhookEnabled(ComponentDto... projects) { for (ComponentDto dto : projects) { when(webHooks.isEnabled(dto)).thenReturn(true); } }
private void mockWebhookDisabled(ComponentDto... projects) { for (ComponentDto dto : projects) { when(webHooks.isEnabled(dto)).thenReturn(false); } }
@Override public void finished(ProjectAnalysis analysis) { webHooks.sendProjectAnalysisUpdate( new WebHooks.Analysis( analysis.getProject().getUuid(), analysis.getAnalysis().map(org.sonar.api.ce.posttask.Analysis::getAnalysisUuid).orElse(null), analysis.getCeTask().getId()), () -> payloadFactory.create(convert(analysis))); }
@Override public void onIssueChanges(QGChangeEvent qualityGateEvent, Set<ChangedIssue> changedIssues) { if (!webhooks.isEnabled(qualityGateEvent.getProject())) { return; } Optional<EvaluatedQualityGate> evaluatedQualityGate = qualityGateEvent.getQualityGateSupplier().get(); if (isQGStatusUnchanged(qualityGateEvent, evaluatedQualityGate)) { return; } try (DbSession dbSession = dbClient.openSession(false)) { callWebhook(dbSession, qualityGateEvent, evaluatedQualityGate.orElse(null)); } }
private void callWebhook(DbSession dbSession, QGChangeEvent event, @Nullable EvaluatedQualityGate evaluatedQualityGate) { webhooks.sendProjectAnalysisUpdate( new WebHooks.Analysis(event.getBranch().getUuid(), event.getAnalysis().getUuid(), null), () -> buildWebHookPayload(dbSession, event, evaluatedQualityGate)); }
@Test @UseDataProvider("allCombinationsOfStatuses") public void onIssueChanges_has_no_effect_if_no_webhook_is_configured(Metric.Level previousStatus, Metric.Level newStatus) { Configuration configuration1 = mock(Configuration.class); when(newQualityGate.getStatus()).thenReturn(newStatus); QGChangeEvent qualityGateEvent = newQGChangeEvent(configuration1, previousStatus, newQualityGate); mockWebhookDisabled(qualityGateEvent.getProject()); mockedUnderTest.onIssueChanges(qualityGateEvent, CHANGED_ISSUES_ARE_IGNORED); verify(webHooks).isEnabled(qualityGateEvent.getProject()); verifyZeroInteractions(webhookPayloadFactory, mockedDbClient); }
.sendProjectAnalysisUpdate( eq(new WebHooks.Analysis(project.getUuid(), analysisUUid,
@Override public void onIssueChanges(QGChangeEvent qualityGateEvent, Set<ChangedIssue> changedIssues) { if (!webhooks.isEnabled(qualityGateEvent.getProject())) { return; } Optional<EvaluatedQualityGate> evaluatedQualityGate = qualityGateEvent.getQualityGateSupplier().get(); if (isQGStatusUnchanged(qualityGateEvent, evaluatedQualityGate)) { return; } try (DbSession dbSession = dbClient.openSession(false)) { callWebhook(dbSession, qualityGateEvent, evaluatedQualityGate.orElse(null)); } }
private void callWebhook(DbSession dbSession, QGChangeEvent event, @Nullable EvaluatedQualityGate evaluatedQualityGate) { webhooks.sendProjectAnalysisUpdate( new WebHooks.Analysis(event.getBranch().getUuid(), event.getAnalysis().getUuid(), null), () -> buildWebHookPayload(dbSession, event, evaluatedQualityGate)); }
@Override public void finished(ProjectAnalysis analysis) { webHooks.sendProjectAnalysisUpdate( new WebHooks.Analysis( analysis.getProject().getUuid(), analysis.getAnalysis().map(org.sonar.api.ce.posttask.Analysis::getAnalysisUuid).orElse(null), analysis.getCeTask().getId()), () -> payloadFactory.create(convert(analysis))); }