diff options
author | Antoine Vigneau <antoine.vigneau@sonarsource.com> | 2023-05-04 14:58:54 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-05-11 20:03:14 +0000 |
commit | 965d66bb3385fc196ba867e5ccabbe23a574ca39 (patch) | |
tree | 10cf16bdc900c0c1952282680001bc502bf83a85 | |
parent | bfacb4c8eab9949a52afb6e467504c6afb150a31 (diff) | |
download | sonarqube-965d66bb3385fc196ba867e5ccabbe23a574ca39.tar.gz sonarqube-965d66bb3385fc196ba867e5ccabbe23a574ca39.zip |
SONAR-19084 Return GitHub as provider managing the instance in system/info
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"); |