compile project(':server:sonar-ce-task') | compile project(':server:sonar-ce-task') | ||||
compile project(':server:sonar-db-dao') | compile project(':server:sonar-db-dao') | ||||
compile project(':server:sonar-process') | compile project(':server:sonar-process') | ||||
compile project(':server:sonar-webserver-auth') | |||||
compile project(':server:sonar-webserver-es') | compile project(':server:sonar-webserver-es') | ||||
compile project(':server:sonar-webserver-ws') | compile project(':server:sonar-webserver-ws') | ||||
compile project(':server:sonar-alm-client') | compile project(':server:sonar-alm-client') |
import org.sonar.db.DbSession; | import org.sonar.db.DbSession; | ||||
import org.sonar.db.dialect.H2; | import org.sonar.db.dialect.H2; | ||||
import org.sonar.server.almsettings.MultipleAlmFeatureProvider; | import org.sonar.server.almsettings.MultipleAlmFeatureProvider; | ||||
import org.sonar.server.authentication.DefaultAdminCredentialsVerifier; | |||||
import org.sonar.server.branch.BranchFeatureProxy; | import org.sonar.server.branch.BranchFeatureProxy; | ||||
import org.sonar.server.issue.index.IssueIndexSyncProgressChecker; | import org.sonar.server.issue.index.IssueIndexSyncProgressChecker; | ||||
import org.sonar.server.platform.WebServer; | import org.sonar.server.platform.WebServer; | ||||
private final MultipleAlmFeatureProvider multipleAlmFeatureProvider; | private final MultipleAlmFeatureProvider multipleAlmFeatureProvider; | ||||
private final WebAnalyticsLoader webAnalyticsLoader; | private final WebAnalyticsLoader webAnalyticsLoader; | ||||
private final IssueIndexSyncProgressChecker issueIndexSyncChecker; | private final IssueIndexSyncProgressChecker issueIndexSyncChecker; | ||||
private final DefaultAdminCredentialsVerifier defaultAdminCredentialsVerifier; | |||||
public GlobalAction(PageRepository pageRepository, Configuration config, ResourceTypes resourceTypes, Server server, | public GlobalAction(PageRepository pageRepository, Configuration config, ResourceTypes resourceTypes, Server server, | ||||
WebServer webServer, DbClient dbClient, BranchFeatureProxy branchFeature, UserSession userSession, PlatformEditionProvider editionProvider, | WebServer webServer, DbClient dbClient, BranchFeatureProxy branchFeature, UserSession userSession, PlatformEditionProvider editionProvider, | ||||
MultipleAlmFeatureProvider multipleAlmFeatureProvider, WebAnalyticsLoader webAnalyticsLoader, IssueIndexSyncProgressChecker issueIndexSyncChecker) { | |||||
MultipleAlmFeatureProvider multipleAlmFeatureProvider, WebAnalyticsLoader webAnalyticsLoader, IssueIndexSyncProgressChecker issueIndexSyncChecker, | |||||
DefaultAdminCredentialsVerifier defaultAdminCredentialsVerifier) { | |||||
this.pageRepository = pageRepository; | this.pageRepository = pageRepository; | ||||
this.config = config; | this.config = config; | ||||
this.resourceTypes = resourceTypes; | this.resourceTypes = resourceTypes; | ||||
this.webAnalyticsLoader = webAnalyticsLoader; | this.webAnalyticsLoader = webAnalyticsLoader; | ||||
this.systemSettingValuesByKey = new HashMap<>(); | this.systemSettingValuesByKey = new HashMap<>(); | ||||
this.issueIndexSyncChecker = issueIndexSyncChecker; | this.issueIndexSyncChecker = issueIndexSyncChecker; | ||||
this.defaultAdminCredentialsVerifier = defaultAdminCredentialsVerifier; | |||||
} | } | ||||
@Override | @Override | ||||
writeVersion(json); | writeVersion(json); | ||||
writeDatabaseProduction(json); | writeDatabaseProduction(json); | ||||
writeBranchSupport(json); | writeBranchSupport(json); | ||||
writeInstanceUsesDefaultAdminCredentials(json); | |||||
writeMultipleAlmEnabled(json); | writeMultipleAlmEnabled(json); | ||||
editionProvider.get().ifPresent(e -> json.prop("edition", e.name().toLowerCase(Locale.ENGLISH))); | editionProvider.get().ifPresent(e -> json.prop("edition", e.name().toLowerCase(Locale.ENGLISH))); | ||||
writeNeedIssueSync(json); | writeNeedIssueSync(json); | ||||
json.prop("branchesEnabled", branchFeature.isEnabled()); | json.prop("branchesEnabled", branchFeature.isEnabled()); | ||||
} | } | ||||
private void writeInstanceUsesDefaultAdminCredentials(JsonWriter json) { | |||||
if (userSession.isSystemAdministrator()) { | |||||
json.prop("instanceUsesDefaultAdminCredentials", defaultAdminCredentialsVerifier.hasDefaultCredentialUser()); | |||||
} | |||||
} | |||||
private void writeMultipleAlmEnabled(JsonWriter json) { | private void writeMultipleAlmEnabled(JsonWriter json) { | ||||
json.prop("multipleAlmEnabled", multipleAlmFeatureProvider.enabled()); | json.prop("multipleAlmEnabled", multipleAlmFeatureProvider.enabled()); | ||||
} | } |
import org.sonar.db.dialect.H2; | import org.sonar.db.dialect.H2; | ||||
import org.sonar.db.dialect.PostgreSql; | import org.sonar.db.dialect.PostgreSql; | ||||
import org.sonar.server.almsettings.MultipleAlmFeatureProvider; | import org.sonar.server.almsettings.MultipleAlmFeatureProvider; | ||||
import org.sonar.server.authentication.DefaultAdminCredentialsVerifier; | |||||
import org.sonar.server.issue.index.IssueIndexSyncProgressChecker; | import org.sonar.server.issue.index.IssueIndexSyncProgressChecker; | ||||
import org.sonar.server.platform.WebServer; | import org.sonar.server.platform.WebServer; | ||||
import org.sonar.server.tester.UserSessionRule; | import org.sonar.server.tester.UserSessionRule; | ||||
private final PlatformEditionProvider editionProvider = mock(PlatformEditionProvider.class); | private final PlatformEditionProvider editionProvider = mock(PlatformEditionProvider.class); | ||||
private final MultipleAlmFeatureProvider multipleAlmFeatureProvider = mock(MultipleAlmFeatureProvider.class); | private final MultipleAlmFeatureProvider multipleAlmFeatureProvider = mock(MultipleAlmFeatureProvider.class); | ||||
private final WebAnalyticsLoader webAnalyticsLoader = mock(WebAnalyticsLoader.class); | private final WebAnalyticsLoader webAnalyticsLoader = mock(WebAnalyticsLoader.class); | ||||
private final DefaultAdminCredentialsVerifier defaultAdminCredentialsVerifier = mock(DefaultAdminCredentialsVerifier.class); | |||||
private WsActionTester ws; | private WsActionTester ws; | ||||
assertJson(call()).isSimilarTo("{\"canAdmin\":true}"); | assertJson(call()).isSimilarTo("{\"canAdmin\":true}"); | ||||
} | } | ||||
@Test | |||||
public void instance_uses_default_admin_credentials() { | |||||
init(); | |||||
when(defaultAdminCredentialsVerifier.hasDefaultCredentialUser()).thenReturn(true); | |||||
// Even if the default credentials are used, if the current user it not a system admin, the flag is not returned. | |||||
assertJson(call()).isNotSimilarTo("{\"instanceUsesDefaultAdminCredentials\":true}"); | |||||
userSession.logIn().setSystemAdministrator(); | |||||
assertJson(call()).isSimilarTo("{\"instanceUsesDefaultAdminCredentials\":true}"); | |||||
when(defaultAdminCredentialsVerifier.hasDefaultCredentialUser()).thenReturn(false); | |||||
assertJson(call()).isSimilarTo("{\"instanceUsesDefaultAdminCredentials\":false}"); | |||||
} | |||||
@Test | @Test | ||||
public void standalone_flag() { | public void standalone_flag() { | ||||
init(); | init(); | ||||
pageRepository.start(); | pageRepository.start(); | ||||
GlobalAction wsAction = new GlobalAction(pageRepository, settings.asConfig(), new ResourceTypes(resourceTypeTrees), server, | GlobalAction wsAction = new GlobalAction(pageRepository, settings.asConfig(), new ResourceTypes(resourceTypeTrees), server, | ||||
webServer, dbClient, branchFeature, userSession, editionProvider, multipleAlmFeatureProvider, webAnalyticsLoader, | webServer, dbClient, branchFeature, userSession, editionProvider, multipleAlmFeatureProvider, webAnalyticsLoader, | ||||
indexSyncProgressChecker); | |||||
indexSyncProgressChecker, defaultAdminCredentialsVerifier); | |||||
ws = new WsActionTester(wsAction); | ws = new WsActionTester(wsAction); | ||||
wsAction.start(); | wsAction.start(); | ||||
} | } |
return isSimilarTo(urlToString(expected)); | return isSimilarTo(urlToString(expected)); | ||||
} | } | ||||
public JsonAssert isNotSimilarTo(String expected) { | |||||
boolean similar = comparison.areSimilar(expected, actualJson); | |||||
if (similar) { | |||||
throw new ComparisonFailure("It's a super-set of expected JSON -", pretty(expected), pretty(actualJson)); | |||||
} | |||||
return this; | |||||
} | |||||
public JsonAssert isNotSimilarTo(URL expected) { | |||||
return isNotSimilarTo(urlToString(expected)); | |||||
} | |||||
public static JsonAssert assertJson(String actualJson) { | public static JsonAssert assertJson(String actualJson) { | ||||
return new JsonAssert(actualJson); | return new JsonAssert(actualJson); | ||||
} | } |