blob: b8b63e6ae66a4c9d81d71d279b1dec0370a3df53 [file] [log] [blame]
// Copyright (C) 2015 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.acceptance.rest.config;
import static com.google.common.truth.Truth.assertThat;
import static com.google.gerrit.server.config.GerritInstanceIdProvider.INSTANCE_ID_SYSTEM_PROPERTY;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.acceptance.UseSsh;
import com.google.gerrit.acceptance.config.GerritConfig;
import com.google.gerrit.acceptance.config.GerritSystemProperty;
import com.google.gerrit.common.RawInputUtil;
import com.google.gerrit.extensions.api.plugins.InstallPluginInput;
import com.google.gerrit.extensions.client.AccountFieldName;
import com.google.gerrit.extensions.client.AuthType;
import com.google.gerrit.extensions.common.AccountDefaultDisplayName;
import com.google.gerrit.extensions.common.AccountVisibility;
import com.google.gerrit.extensions.common.ServerInfo;
import com.google.gerrit.server.config.AllProjectsNameProvider;
import com.google.gerrit.server.config.AllUsersNameProvider;
import com.google.gerrit.server.config.AnonymousCowardNameProvider;
import org.junit.Test;
@NoHttpd
@UseSsh
public class ServerInfoIT extends AbstractDaemonTest {
private static final byte[] JS_PLUGIN_CONTENT =
"Gerrit.install(function(self){});\n".getBytes(UTF_8);
@Test
// accounts
@GerritConfig(name = "accounts.visibility", value = "VISIBLE_GROUP")
@GerritConfig(name = "accounts.defaultDisplayName", value = "FIRST_NAME")
// auth
@GerritConfig(name = "auth.type", value = "HTTP")
@GerritConfig(name = "auth.contributorAgreements", value = "true")
@GerritConfig(name = "auth.loginUrl", value = "https://example.com/login")
@GerritConfig(name = "auth.loginText", value = "LOGIN")
@GerritConfig(name = "auth.switchAccountUrl", value = "https://example.com/switch")
// auth fields ignored when auth == HTTP
@GerritConfig(name = "auth.registerUrl", value = "https://example.com/register")
@GerritConfig(name = "auth.registerText", value = "REGISTER")
@GerritConfig(name = "auth.editFullNameUrl", value = "https://example.com/editname")
@GerritConfig(name = "auth.httpPasswordUrl", value = "https://example.com/password")
// change
@GerritConfig(name = "change.updateDelay", value = "50s")
@GerritConfig(name = "change.disablePrivateChanges", value = "true")
@GerritConfig(name = "change.enableRobotComments", value = "false")
// download
@GerritConfig(
name = "download.archive",
values = {"tar", "tbz2", "tgz", "txz"})
// gerrit
@GerritConfig(name = "gerrit.allProjects", value = "Root")
@GerritConfig(name = "gerrit.allUsers", value = "Users")
@GerritConfig(name = "gerrit.reportBugUrl", value = "https://example.com/report")
@GerritConfig(name = "gerrit.instanceId", value = "devops-instance")
// suggest
@GerritConfig(name = "suggest.from", value = "3")
// user
@GerritConfig(name = "user.anonymousCoward", value = "Unnamed User")
public void serverConfig() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
// accounts
assertThat(i.accounts.visibility).isEqualTo(AccountVisibility.VISIBLE_GROUP);
assertThat(i.accounts.defaultDisplayName).isEqualTo(AccountDefaultDisplayName.FIRST_NAME);
// auth
assertThat(i.auth.authType).isEqualTo(AuthType.HTTP);
assertThat(i.auth.editableAccountFields)
.containsExactly(AccountFieldName.REGISTER_NEW_EMAIL, AccountFieldName.FULL_NAME);
assertThat(i.auth.useContributorAgreements).isTrue();
assertThat(i.auth.loginUrl).isEqualTo("https://example.com/login");
assertThat(i.auth.loginText).isEqualTo("LOGIN");
assertThat(i.auth.switchAccountUrl).isEqualTo("https://example.com/switch");
assertThat(i.auth.registerUrl).isNull();
assertThat(i.auth.registerText).isNull();
assertThat(i.auth.editFullNameUrl).isNull();
assertThat(i.auth.httpPasswordUrl).isNull();
// change
assertThat(i.change.updateDelay).isEqualTo(50);
assertThat(i.change.disablePrivateChanges).isTrue();
assertThat(i.change.enableRobotComments).isNull();
// download
assertThat(i.download.archives).containsExactly("tar", "tbz2", "tgz", "txz");
assertThat(i.download.schemes).isEmpty();
// gerrit
assertThat(i.gerrit.allProjects).isEqualTo("Root");
assertThat(i.gerrit.allUsers).isEqualTo("Users");
assertThat(i.gerrit.reportBugUrl).isEqualTo("https://example.com/report");
assertThat(i.gerrit.instanceId).isEqualTo("devops-instance");
// plugin
assertThat(i.plugin.jsResourcePaths).isEmpty();
// sshd
assertThat(i.sshd).isNotNull();
// suggest
assertThat(i.suggest.from).isEqualTo(3);
// user
assertThat(i.user.anonymousCowardName).isEqualTo("Unnamed User");
// notedb
assertThat(gApi.config().server().getInfo().noteDbEnabled).isTrue();
}
@Test
@GerritConfig(name = "plugins.allowRemoteAdmin", value = "true")
public void serverConfigWithPlugin() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
assertThat(i.plugin.jsResourcePaths).isEmpty();
InstallPluginInput input = new InstallPluginInput();
input.raw = RawInputUtil.create(JS_PLUGIN_CONTENT);
gApi.plugins().install("js-plugin-1.js", input);
i = gApi.config().server().getInfo();
assertThat(i.plugin.jsResourcePaths).hasSize(1);
}
@Test
public void serverConfigWithDefaults() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
// auth
assertThat(i.auth.authType).isEqualTo(AuthType.OPENID);
assertThat(i.auth.editableAccountFields)
.containsExactly(
AccountFieldName.REGISTER_NEW_EMAIL,
AccountFieldName.FULL_NAME,
AccountFieldName.USER_NAME);
assertThat(i.auth.useContributorAgreements).isNull();
assertThat(i.auth.loginUrl).isNull();
assertThat(i.auth.loginText).isNull();
assertThat(i.auth.switchAccountUrl).isNull();
assertThat(i.auth.registerUrl).isNull();
assertThat(i.auth.registerText).isNull();
assertThat(i.auth.editFullNameUrl).isNull();
assertThat(i.auth.httpPasswordUrl).isNull();
// change
assertThat(i.change.updateDelay).isEqualTo(300);
assertThat(i.change.disablePrivateChanges).isNull();
assertThat(i.change.submitWholeTopic).isNull();
assertThat(i.change.mergeabilityComputationBehavior).isEqualTo("NEVER");
// download
assertThat(i.download.archives).containsExactly("tar", "tbz2", "tgz", "txz");
assertThat(i.download.schemes).isEmpty();
// gerrit
assertThat(i.gerrit.allProjects).isEqualTo(AllProjectsNameProvider.DEFAULT);
assertThat(i.gerrit.allUsers).isEqualTo(AllUsersNameProvider.DEFAULT);
assertThat(i.gerrit.reportBugUrl).isNull();
assertThat(i.gerrit.instanceId).isNull();
// plugin
assertThat(i.plugin.jsResourcePaths).isEmpty();
// sshd
assertThat(i.sshd).isNotNull();
// suggest
assertThat(i.suggest.from).isEqualTo(0);
// user
assertThat(i.user.anonymousCowardName).isEqualTo(AnonymousCowardNameProvider.DEFAULT);
// submit requirement columns in dashboard
assertThat(i.submitRequirementDashboardColumns).isEmpty();
}
@Test
@GerritConfig(name = "change.submitWholeTopic", value = "true")
public void serverConfigWithSubmitWholeTopic() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
assertThat(i.change.submitWholeTopic).isTrue();
}
@Test
@GerritConfig(
name = "dashboard.submitRequirementColumns",
values = {"Code-Review", "Verified"})
public void serverConfigWithMultipleSubmitRequirementColumn() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
assertThat(i.submitRequirementDashboardColumns).containsExactly("Code-Review", "Verified");
}
@Test
@GerritConfig(name = "change.mergeabilityComputationBehavior", value = "NEVER")
public void mergeabilityComputationBehavior_neverCompute() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
assertThat(i.change.mergeabilityComputationBehavior).isEqualTo("NEVER");
}
@Test
@GerritConfig(name = "download.scheme", value = "fooBar")
@GerritConfig(name = "download.command", value = "fooBar")
public void misconfiguredDownloadCommands() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
assertThat(i.download.schemes).isEmpty();
}
@Test
@GerritSystemProperty(name = INSTANCE_ID_SYSTEM_PROPERTY, value = "sysPropInstanceId")
public void instanceIdFromSystemProperty() throws Exception {
ServerInfo i = gApi.config().server().getInfo();
assertThat(i.gerrit.instanceId).isEqualTo("sysPropInstanceId");
}
}