From 640c9331567e0943c453f5d4284e5151b5070159 Mon Sep 17 00:00:00 2001 From: Zipeng WU Date: Thu, 28 Nov 2024 17:43:32 +0100 Subject: SONAR-23619 isAiCodeAssured field in Quality Gate should be always false when downgrade to Community --- .../src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java | 4 ++++ .../src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java | 3 +++ .../src/main/java/org/sonar/server/qualitygate/ws/ListAction.java | 2 +- .../org/sonar/server/qualitygate/ws/QualityGateActionsSupport.java | 4 ++++ .../src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java | 2 +- 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java index 3d902c3b0b6..d8d5b9d9489 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ListActionIT.java @@ -117,6 +117,7 @@ class ListActionIT { @Test void test_ai_code_supported_flag() { + when(aiCodeAssuranceEntitlement.isEnabled()).thenReturn(true); QualityGateDto qualityGateWithAiCodeSupported = db.qualityGates().insertQualityGate(qg -> qg.setAiCodeSupported(true)); QualityGateDto qualityGateWithoutAiCodeSupported = db.qualityGates().insertQualityGate(qg -> qg.setAiCodeSupported(false)); db.qualityGates().setDefaultQualityGate(qualityGateWithAiCodeSupported); @@ -237,6 +238,9 @@ class ListActionIT { assertThat(response.getQualitygatesList()).hasSize(1); assertThat(response.getQualitygatesList().get(0).getActions().getManageAiCodeAssurance()).isFalse(); + assertThat(response.getQualitygatesList()) + .extracting(QualityGate::getName, QualityGate::getIsAiCodeSupported) + .containsExactly(tuple(defaultQualityGate.getName(), false)); } @Test diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java index b9102b1f7c1..022e2d24836 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/ws/ShowActionIT.java @@ -120,6 +120,7 @@ class ShowActionIT { @Test void show_ai_code_supported() { + when(aiCodeAssuranceEntitlement.isEnabled()).thenReturn(true); QualityGateDto qualityGate = db.qualityGates().insertQualityGate(); db.qualityGates().setDefaultQualityGate(qualityGate); @@ -225,6 +226,8 @@ class ShowActionIT { .setParam("name", qualityGate.getName()) .executeProtobuf(ShowWsResponse.class); + assertThat(response.getIsAiCodeSupported()).isFalse(); + Actions actions = response.getActions(); assertThat(actions.getManageAiCodeAssurance()).isFalse(); } diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java index 4964640c6ac..b90d26112fc 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java @@ -104,7 +104,7 @@ public class ListAction implements QualityGatesWsAction { .setName(qualityGate.getName()) .setIsDefault(qualityGate.getUuid().equals(defaultUuid)) .setIsBuiltIn(qualityGate.isBuiltIn()) - .setIsAiCodeSupported(qualityGate.isAiCodeSupported()) + .setIsAiCodeSupported(actionsSupport.isAiCodeAssuranceEnabled() && qualityGate.isAiCodeSupported()) .setCaycStatus(qualityGateCaycChecker.checkCaycCompliant(conditions, metrics).toString()) .setHasMQRConditions(qualityModeResult.hasMQRConditions()) .setHasStandardConditions(qualityModeResult.hasStandardConditions()) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGateActionsSupport.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGateActionsSupport.java index 29aee221ee6..ba7ab2b748c 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGateActionsSupport.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGateActionsSupport.java @@ -51,4 +51,8 @@ public class QualityGateActionsSupport { .setManageAiCodeAssurance(aiCodeAssuranceEntitlement.isEnabled() && !isBuiltIn && isQualityGateAdmin) .build(); } + + boolean isAiCodeAssuranceEnabled() { + return aiCodeAssuranceEntitlement.isEnabled(); + } } diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java index 554b248eb20..f5f64681eff 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java @@ -121,7 +121,7 @@ public class ShowAction implements QualityGatesWsAction { return ShowWsResponse.newBuilder() .setName(qualityGate.getName()) .setIsBuiltIn(qualityGate.isBuiltIn()) - .setIsAiCodeSupported(qualityGate.isAiCodeSupported()) + .setIsAiCodeSupported(actionsSupport.isAiCodeAssuranceEnabled() && qualityGate.isAiCodeSupported()) .setIsDefault(qualityGate.getUuid().equals(defaultQualityGate.getUuid())) .setCaycStatus(caycStatus.toString()) .setHasMQRConditions(qualityModeResult.hasMQRConditions()) -- cgit v1.2.3