aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Vigneau <antoine.vigneau@sonarsource.com>2023-05-04 14:58:54 +0200
committersonartech <sonartech@sonarsource.com>2023-05-11 20:03:14 +0000
commit965d66bb3385fc196ba867e5ccabbe23a574ca39 (patch)
tree10cf16bdc900c0c1952282680001bc502bf83a85
parentbfacb4c8eab9949a52afb6e467504c6afb150a31 (diff)
downloadsonarqube-965d66bb3385fc196ba867e5ccabbe23a574ca39.tar.gz
sonarqube-965d66bb3385fc196ba867e5ccabbe23a574ca39.zip
SONAR-19084 Return GitHub as provider managing the instance in system/info
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/management/DelegatingManagedInstanceService.java7
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/management/ManagedInstanceService.java2
-rw-r--r--server/sonar-server-common/src/test/java/org/sonar/server/management/DelegatingManagedInstanceServiceTest.java27
-rw-r--r--server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/CommonSystemInformation.java10
-rw-r--r--server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java2
-rw-r--r--server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSection.java2
-rw-r--r--server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/CommonSystemInformationTest.java24
-rw-r--r--server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java4
-rw-r--r--server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSectionTest.java4
9 files changed, 50 insertions, 32 deletions
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/management/DelegatingManagedInstanceService.java b/server/sonar-server-common/src/main/java/org/sonar/server/management/DelegatingManagedInstanceService.java
index 4ff988baab3..f4db6c5516a 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/management/DelegatingManagedInstanceService.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/management/DelegatingManagedInstanceService.java
@@ -48,6 +48,13 @@ public class DelegatingManagedInstanceService implements ManagedInstanceService
}
@Override
+ public String getProviderName() {
+ return findManagedInstanceService()
+ .map(ManagedInstanceService::getProviderName)
+ .orElseThrow(() -> NOT_MANAGED_INSTANCE_EXCEPTION);
+ }
+
+ @Override
public Map<String, Boolean> getUserUuidToManaged(DbSession dbSession, Set<String> userUuids) {
return findManagedInstanceService()
.map(managedInstanceService -> managedInstanceService.getUserUuidToManaged(dbSession, userUuids))
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/management/ManagedInstanceService.java b/server/sonar-server-common/src/main/java/org/sonar/server/management/ManagedInstanceService.java
index 1a615555d92..2580f55dc4d 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/management/ManagedInstanceService.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/management/ManagedInstanceService.java
@@ -29,6 +29,8 @@ public interface ManagedInstanceService {
boolean isInstanceExternallyManaged();
+ String getProviderName();
+
Map<String, Boolean> getUserUuidToManaged(DbSession dbSession, Set<String> userUuids);
Map<String, Boolean> getGroupUuidToManaged(DbSession dbSession, Set<String> groupUuids);
diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/management/DelegatingManagedInstanceServiceTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/management/DelegatingManagedInstanceServiceTest.java
index aee38302901..5f3b35dac93 100644
--- a/server/sonar-server-common/src/test/java/org/sonar/server/management/DelegatingManagedInstanceServiceTest.java
+++ b/server/sonar-server-common/src/test/java/org/sonar/server/management/DelegatingManagedInstanceServiceTest.java
@@ -30,6 +30,7 @@ import org.sonar.db.DbSession;
import static java.util.Collections.emptySet;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -40,6 +41,22 @@ public class DelegatingManagedInstanceServiceTest {
private DbSession dbSession;
@Test
+ public void getProviderName_whenNotManaged_shouldThrow() {
+ DelegatingManagedInstanceService managedInstanceService = new DelegatingManagedInstanceService(emptySet());
+
+ assertThatThrownBy(() -> managedInstanceService.getProviderName())
+ .isInstanceOf(IllegalStateException.class)
+ .hasMessage("This instance is not managed.");
+ }
+
+ @Test
+ public void getProviderName_whenManaged_shouldReturnName() {
+ DelegatingManagedInstanceService managedInstanceService = new DelegatingManagedInstanceService(Set.of(new AlwaysManagedInstanceService()));
+
+ assertThat(managedInstanceService.getProviderName()).isEqualTo("Always");
+ }
+
+ @Test
public void isInstanceExternallyManaged_whenNoManagedInstanceService_returnsFalse() {
DelegatingManagedInstanceService managedInstanceService = new DelegatingManagedInstanceService(emptySet());
assertThat(managedInstanceService.isInstanceExternallyManaged()).isFalse();
@@ -177,6 +194,11 @@ public class DelegatingManagedInstanceServiceTest {
}
@Override
+ public String getProviderName() {
+ return "Never";
+ }
+
+ @Override
public Map<String, Boolean> getUserUuidToManaged(DbSession dbSession, Set<String> userUuids) {
return null;
}
@@ -205,6 +227,11 @@ public class DelegatingManagedInstanceServiceTest {
}
@Override
+ public String getProviderName() {
+ return "Always";
+ }
+
+ @Override
public Map<String, Boolean> getUserUuidToManaged(DbSession dbSession, Set<String> userUuids) {
return null;
}
diff --git a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/CommonSystemInformation.java b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/CommonSystemInformation.java
index 40629019e54..8789f0f5ca2 100644
--- a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/CommonSystemInformation.java
+++ b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/CommonSystemInformation.java
@@ -70,15 +70,9 @@ public class CommonSystemInformation {
.toList();
}
- public String getManagedProvider() {
+ public String getManagedInstanceProviderName() {
if (managedInstanceService.isInstanceExternallyManaged()) {
- return identityProviderRepository.getAllEnabledAndSorted()
- .stream()
- .filter(provider -> provider.getKey().equalsIgnoreCase("saml"))
- .filter(IdentityProvider::isEnabled)
- .findFirst()
- .map(IdentityProvider::getName)
- .orElse(null);
+ return managedInstanceService.getProviderName();
}
return null;
}
diff --git a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java
index c238e175deb..c7f433985ef 100644
--- a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java
+++ b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java
@@ -91,7 +91,7 @@ public class StandaloneSystemSection extends BaseSectionMBean implements SystemS
setAttribute(protobuf, "Edition", sonarRuntime.getEdition().getLabel());
setAttribute(protobuf, NCLOC.getName(), statisticsSupport.getLinesOfCode());
setAttribute(protobuf, "Docker", dockerSupport.isRunningInDocker());
- setAttribute(protobuf, "External Users and Groups Provisioning", commonSystemInformation.getManagedProvider());
+ setAttribute(protobuf, "External Users and Groups Provisioning", commonSystemInformation.getManagedInstanceProviderName());
setAttribute(protobuf, "External User Authentication", commonSystemInformation.getExternalUserAuthentication());
addIfNotEmpty(protobuf, "Accepted external identity providers",
commonSystemInformation.getEnabledIdentityProviders());
diff --git a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSection.java b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSection.java
index 31b3cbb7798..308b1733c1d 100644
--- a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSection.java
+++ b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSection.java
@@ -62,7 +62,7 @@ public class GlobalSystemSection implements SystemInfoSection, Global {
setAttribute(protobuf, "Docker", dockerSupport.isRunningInDocker());
setAttribute(protobuf, "High Availability", true);
setAttribute(protobuf, "External Users and Groups Provisioning",
- commonSystemInformation.getManagedProvider());
+ commonSystemInformation.getManagedInstanceProviderName());
setAttribute(protobuf, "External User Authentication",
commonSystemInformation.getExternalUserAuthentication());
addIfNotEmpty(protobuf, "Accepted external identity providers",
diff --git a/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/CommonSystemInformationTest.java b/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/CommonSystemInformationTest.java
index bc12e9fe82f..ac0771c3b55 100644
--- a/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/CommonSystemInformationTest.java
+++ b/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/CommonSystemInformationTest.java
@@ -121,33 +121,20 @@ public class CommonSystemInformationTest {
}
@Test
- public void getManagedProvider_whenInstanceNotManaged_shouldReturnNull() {
+ public void getManagedInstanceProvider_whenInstanceNotManaged_shouldReturnNull() {
mockIdentityProviders(List.of());
mockManagedInstance(false);
- assertThat(commonSystemInformation.getManagedProvider())
+ assertThat(commonSystemInformation.getManagedInstanceProviderName())
.isNull();
}
@Test
- public void getManagedProvider_whenInstanceManagedButNoValidProviderDefined_shouldReturnNull() {
- mockIdentityProviders(List.of());
- mockManagedInstance(true);
-
- assertThat(commonSystemInformation.getManagedProvider())
- .isNull();
- }
-
- @Test
- public void getManagedProvider_whenInstanceManagedAndValidProviderDefined_shouldReturnProviderName() {
- mockIdentityProviders(List.of(
- new TestIdentityProvider().setKey("saml").setName("Okta").setEnabled(true).setAllowsUsersToSignUp(true),
- new TestIdentityProvider().setKey("github").setName("GitHub").setEnabled(true).setAllowsUsersToSignUp(true)
- ));
+ public void getManagedInstanceProvider_whenInstanceManaged_shouldReturnName() {
mockManagedInstance(true);
- assertThat(commonSystemInformation.getManagedProvider())
- .isEqualTo("Okta");
+ assertThat(commonSystemInformation.getManagedInstanceProviderName())
+ .isEqualTo("Provider");
}
@Test
@@ -170,6 +157,7 @@ public class CommonSystemInformationTest {
private void mockManagedInstance(boolean managed) {
when(managedInstanceService.isInstanceExternallyManaged()).thenReturn(managed);
+ when(managedInstanceService.getProviderName()).thenReturn("Provider");
}
private void mockSecurityRealmFactory(String name) {
diff --git a/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java b/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java
index 1735090758b..25b06a0dcbf 100644
--- a/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java
+++ b/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java
@@ -184,7 +184,7 @@ public class StandaloneSystemSectionTest {
@Test
public void toProtobuf_whenInstanceIsNotManaged_shouldWriteNothing() {
- when(commonSystemInformation.getManagedProvider()).thenReturn(null);
+ when(commonSystemInformation.getManagedInstanceProviderName()).thenReturn(null);
ProtobufSystemInfo.Section protobuf = underTest.toProtobuf();
assertThatAttributeDoesNotExist(protobuf, "External Users and Groups Provisioning");
@@ -192,7 +192,7 @@ public class StandaloneSystemSectionTest {
@Test
public void toProtobuf_whenInstanceIsManaged_shouldWriteItsProviderName() {
- when(commonSystemInformation.getManagedProvider()).thenReturn("Okta");
+ when(commonSystemInformation.getManagedInstanceProviderName()).thenReturn("Okta");
ProtobufSystemInfo.Section protobuf = underTest.toProtobuf();
assertThatAttributeIs(protobuf, "External Users and Groups Provisioning", "Okta");
diff --git a/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSectionTest.java b/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSectionTest.java
index 86c42a4fb52..95711e23360 100644
--- a/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSectionTest.java
+++ b/server/sonar-webserver-core/src/test/java/org/sonar/server/platform/monitoring/cluster/GlobalSystemSectionTest.java
@@ -111,7 +111,7 @@ public class GlobalSystemSectionTest {
@Test
public void toProtobuf_whenInstanceIsNotManaged_shouldWriteNothing() {
- when(commonSystemInformation.getManagedProvider()).thenReturn(null);
+ when(commonSystemInformation.getManagedInstanceProviderName()).thenReturn(null);
ProtobufSystemInfo.Section protobuf = underTest.toProtobuf();
assertThatAttributeDoesNotExist(protobuf, "External Users and Groups Provisioning");
@@ -119,7 +119,7 @@ public class GlobalSystemSectionTest {
@Test
public void toProtobuf_whenInstanceIsManaged_shouldWriteItsProviderName() {
- when(commonSystemInformation.getManagedProvider()).thenReturn("Okta");
+ when(commonSystemInformation.getManagedInstanceProviderName()).thenReturn("Okta");
ProtobufSystemInfo.Section protobuf = underTest.toProtobuf();
assertThatAttributeIs(protobuf, "External Users and Groups Provisioning", "Okta");