diff --git a/java/com/google/gerrit/server/restapi/project/CreateProject.java b/java/com/google/gerrit/server/restapi/project/CreateProject.java index 6844cacc54..8b81f10286 100644 --- a/java/com/google/gerrit/server/restapi/project/CreateProject.java +++ b/java/com/google/gerrit/server/restapi/project/CreateProject.java @@ -179,6 +179,7 @@ public class CreateProject if (input.pluginConfigValues != null) { ConfigInput in = new ConfigInput(); in.pluginConfigValues = input.pluginConfigValues; + in.description = args.projectDescription; putConfig.get().apply(projectState, in); } return Response.created(json.format(projectState)); diff --git a/javatests/com/google/gerrit/acceptance/api/project/ProjectIT.java b/javatests/com/google/gerrit/acceptance/api/project/ProjectIT.java index 77350b0d79..473b04b72b 100644 --- a/javatests/com/google/gerrit/acceptance/api/project/ProjectIT.java +++ b/javatests/com/google/gerrit/acceptance/api/project/ProjectIT.java @@ -35,15 +35,18 @@ import com.google.gerrit.acceptance.testsuite.project.ProjectOperations; import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations; import com.google.gerrit.common.Nullable; import com.google.gerrit.common.data.Permission; +import com.google.gerrit.extensions.annotations.Exports; import com.google.gerrit.extensions.api.projects.BranchInput; import com.google.gerrit.extensions.api.projects.CommentLinkInfo; import com.google.gerrit.extensions.api.projects.ConfigInfo; import com.google.gerrit.extensions.api.projects.ConfigInput; +import com.google.gerrit.extensions.api.projects.ConfigValue; import com.google.gerrit.extensions.api.projects.DescriptionInput; import com.google.gerrit.extensions.api.projects.ProjectInput; import com.google.gerrit.extensions.client.InheritableBoolean; import com.google.gerrit.extensions.client.ProjectState; import com.google.gerrit.extensions.client.SubmitType; +import com.google.gerrit.extensions.common.ProjectInfo; import com.google.gerrit.extensions.events.ProjectIndexedListener; import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.extensions.registration.RegistrationHandle; @@ -53,10 +56,13 @@ import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.UnprocessableEntityException; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.RefNames; +import com.google.gerrit.server.config.ProjectConfigEntry; import com.google.gerrit.server.group.SystemGroupBackend; import com.google.gerrit.server.index.IndexExecutor; import com.google.gerrit.server.project.CommentLinkInfoImpl; +import com.google.inject.AbstractModule; import com.google.inject.Inject; +import com.google.inject.Module; import java.util.HashMap; import java.util.Map; import org.eclipse.jgit.revwalk.RevCommit; @@ -86,6 +92,18 @@ public class ProjectIT extends AbstractDaemonTest { private ProjectIndexedCounter projectIndexedCounter; private RegistrationHandle projectIndexedCounterHandle; + @Override + public Module createModule() { + return new AbstractModule() { + @Override + protected void configure() { + bind(ProjectConfigEntry.class) + .annotatedWith(Exports.named("test-plugin-key")) + .toInstance(new ProjectConfigEntry("Test Plugin Config Item", true)); + } + }; + } + @Before public void addProjectIndexedCounter() { projectIndexedCounter = new ProjectIndexedCounter(); @@ -161,6 +179,17 @@ public class ProjectIT extends AbstractDaemonTest { eventRecorder.assertRefUpdatedEvents(name, "refs/heads/master", null, head); } + @Test + public void createProjectWithPluginConfigs() throws Exception { + String name = name("foo"); + ProjectInput input = new ProjectInput(); + input.name = name; + input.description = "foo description"; + input.pluginConfigValues = newPluginConfigValues(); + ProjectInfo info = gApi.projects().create(input).get(); + assertThat(info.description).isEqualTo(input.description); + } + @Test public void createProjectWithMismatchedInput() throws Exception { ProjectInput in = new ProjectInput(); @@ -683,6 +712,16 @@ public class ProjectIT extends AbstractDaemonTest { return setConfig(name, input); } + private static Map> newPluginConfigValues() { + Map> pluginConfigValues = new HashMap<>(); + Map configValues = new HashMap<>(); + ConfigValue value = new ConfigValue(); + value.value = "true"; + configValues.put("test-plugin-key", value); + pluginConfigValues.put("gerrit", configValues); + return pluginConfigValues; + } + private static class ProjectIndexedCounter implements ProjectIndexedListener { private final AtomicLongMap countsByProject = AtomicLongMap.create();