Fix ApplyObjectActionIT flakiness due to the wrong ref used

The testing of the apply-object was using a patch-set which
was missing its parent object, because it was done on a separate
repository created from scratch with a different master.

Use consistently refs/heads/master on its first commit when
testing apply-object and make sure that the destination repo
does not have it so that the apply-object would not have any
reason to fail.

Change-Id: I0dba27505a83b62300a84903f4a520c205f09eeb
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java
index 2d94a96..0a3960f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java
@@ -197,7 +197,7 @@
     return httpRequest;
   }
 
-  private Project.NameKey createTestProject(String name) throws Exception {
+  protected Project.NameKey createTestProject(String name) throws Exception {
     return projectOperations.newProject().name(name).parent(project).create();
   }
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionIT.java
index edbb85f..e771e7a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionIT.java
@@ -19,6 +19,8 @@
 import com.google.gerrit.acceptance.config.GerritConfig;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.entities.Project.NameKey;
+import com.google.gerrit.entities.RefNames;
+import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.extensions.restapi.Url;
 import com.googlesource.gerrit.plugins.replication.pull.api.data.RevisionData;
 import java.util.Optional;
@@ -27,21 +29,25 @@
 
 public class ApplyObjectActionIT extends ActionITBase {
 
+  private static final String REFS_HEADS_MASTER = RefNames.REFS_HEADS + "master";
+
   @Test
   @GerritConfig(name = "gerrit.instanceId", value = "testInstanceId")
   public void shouldAcceptPayloadWithAsyncField() throws Exception {
+    createTestProjectWithReplicationSuffix();
     String payloadWithAsyncFieldTemplate =
         "{\"label\":\""
             + TEST_REPLICATION_REMOTE
             + "\",\"ref_name\":\"%s\",\"revision_data\":{\"commit_object\":{\"sha1\":\"%s\",\"type\":1,\"content\":\"%s\"},\"tree_object\":{\"type\":2,\"content\":\"%s\"},\"blobs\":[]}, \"async\":true}";
 
-    String refName = firstPatchSetForChangeMetaRef(createRef());
-    Optional<RevisionData> revisionDataOption = createRevisionData(refName);
+    Optional<RevisionData> revisionDataOption = createRevisionData(REFS_HEADS_MASTER);
     assertThat(revisionDataOption.isPresent()).isTrue();
 
     RevisionData revisionData = revisionDataOption.get();
-    String sendObjectPayload = createPayload(payloadWithAsyncFieldTemplate, refName, revisionData);
+    String sendObjectPayload =
+        createPayload(payloadWithAsyncFieldTemplate, REFS_HEADS_MASTER, revisionData);
 
+    deleteTestProjectBranch(REFS_HEADS_MASTER);
     httpClientFactory
         .create(source)
         .execute(
@@ -52,19 +58,20 @@
   @Test
   @GerritConfig(name = "gerrit.instanceId", value = "testInstanceId")
   public void shouldAcceptPayloadWithoutAsyncField() throws Exception {
+    createTestProjectWithReplicationSuffix();
     String payloadWithoutAsyncFieldTemplate =
         "{\"label\":\""
             + TEST_REPLICATION_REMOTE
             + "\",\"ref_name\":\"%s\",\"revision_data\":{\"commit_object\":{\"sha1\":\"%s\",\"type\":1,\"content\":\"%s\"},\"tree_object\":{\"type\":2,\"content\":\"%s\"},\"blobs\":[]}}";
 
-    String refName = firstPatchSetForChangeMetaRef(createRef());
-    Optional<RevisionData> revisionDataOption = createRevisionData(refName);
+    Optional<RevisionData> revisionDataOption = createRevisionData(REFS_HEADS_MASTER);
     assertThat(revisionDataOption.isPresent()).isTrue();
 
     RevisionData revisionData = revisionDataOption.get();
     String sendObjectPayload =
-        createPayload(payloadWithoutAsyncFieldTemplate, refName, revisionData);
+        createPayload(payloadWithoutAsyncFieldTemplate, REFS_HEADS_MASTER, revisionData);
 
+    deleteTestProjectBranch(REFS_HEADS_MASTER);
     httpClientFactory
         .create(source)
         .execute(
@@ -76,19 +83,20 @@
   @GerritConfig(name = "gerrit.instanceId", value = "testInstanceId")
   @GerritConfig(name = "container.replica", value = "true")
   public void shouldAcceptPayloadWhenNodeIsAReplica() throws Exception {
+    createTestProjectWithReplicationSuffix();
     String payloadWithoutAsyncFieldTemplate =
         "{\"label\":\""
             + TEST_REPLICATION_REMOTE
             + "\",\"ref_name\":\"%s\",\"revision_data\":{\"commit_object\":{\"sha1\":\"%s\",\"type\":1,\"content\":\"%s\"},\"tree_object\":{\"type\":2,\"content\":\"%s\"},\"blobs\":[]}}";
 
-    String refName = createRef();
-    Optional<RevisionData> revisionDataOption = createRevisionData(refName);
+    Optional<RevisionData> revisionDataOption = createRevisionData(REFS_HEADS_MASTER);
     assertThat(revisionDataOption.isPresent()).isTrue();
 
     RevisionData revisionData = revisionDataOption.get();
     String sendObjectPayload =
-        createPayload(payloadWithoutAsyncFieldTemplate, refName, revisionData);
+        createPayload(payloadWithoutAsyncFieldTemplate, REFS_HEADS_MASTER, revisionData);
 
+    deleteTestProjectBranch(REFS_HEADS_MASTER);
     httpClientFactory
         .create(source)
         .execute(
@@ -219,20 +227,21 @@
   @GerritConfig(name = "container.replica", value = "false")
   @GerritConfig(name = "auth.bearerToken", value = "some-bearer-token")
   public void shouldAcceptPayloadWhenNodeIsAPrimaryWithBearerToken() throws Exception {
+    createTestProjectWithReplicationSuffix();
     url = getURLWithoutAuthenticationPrefix(project.get());
     String payloadWithoutAsyncFieldTemplate =
         "{\"label\":\""
             + TEST_REPLICATION_REMOTE
             + "\",\"ref_name\":\"%s\",\"revision_data\":{\"commit_object\":{\"sha1\":\"%s\",\"type\":1,\"content\":\"%s\"},\"tree_object\":{\"type\":2,\"content\":\"%s\"},\"blobs\":[]}}";
 
-    String refName = firstPatchSetForChangeMetaRef(createRef());
-    Optional<RevisionData> revisionDataOption = createRevisionData(refName);
+    Optional<RevisionData> revisionDataOption = createRevisionData(REFS_HEADS_MASTER);
     assertThat(revisionDataOption.isPresent()).isTrue();
 
     RevisionData revisionData = revisionDataOption.get();
     String sendObjectPayload =
-        createPayload(payloadWithoutAsyncFieldTemplate, refName, revisionData);
+        createPayload(payloadWithoutAsyncFieldTemplate, REFS_HEADS_MASTER, revisionData);
 
+    deleteTestProjectBranch(REFS_HEADS_MASTER);
     httpClientFactory
         .create(source)
         .execute(
@@ -258,4 +267,12 @@
         "%s/a/projects/%s/pull-replication~apply-object",
         adminRestSession.url(), Url.encode(projectName));
   }
+
+  private void createTestProjectWithReplicationSuffix() throws Exception {
+    createTestProject(project.get() + TEST_REPLICATION_SUFFIX);
+  }
+
+  private void deleteTestProjectBranch(String branchRefName) throws RestApiException {
+    gApi.projects().name(project.get()).branch(branchRefName).delete();
+  }
 }