Просмотр исходного кода

Add an integration test for migrating repository

Shane Kilkelly 7 лет назад
Родитель
Сommit
1a646d3fd0

+ 8 - 0
services/git-bridge/pom.xml

@@ -22,6 +22,14 @@
                     <target>1.8</target>
                     <target>1.8</target>
                     <compilerArgument></compilerArgument>
                     <compilerArgument></compilerArgument>
                 </configuration>
                 </configuration>
+            </plugin>
+						<!-- Hack, test loader crashes without this bit -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <useSystemClassLoader>false</useSystemClassLoader>
+                </configuration>
             </plugin>
             </plugin>
             <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin -->
             <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin -->
             <plugin>
             <plugin>

+ 24 - 10
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/servermock/state/SnapshotAPIStateBuilder.java

@@ -83,16 +83,30 @@ public class SnapshotAPIStateBuilder {
             String projectName,
             String projectName,
             JsonObject jsonGetDoc
             JsonObject jsonGetDoc
     ) {
     ) {
-        getDoc.put(
-                projectName,
-                new GetDocResult(
-                        jsonGetDoc.get("error"),
-                        jsonGetDoc.get("versionID").getAsInt(),
-                        jsonGetDoc.get("createdAt").getAsString(),
-                        jsonGetDoc.get("email").getAsString(),
-                        jsonGetDoc.get("name").getAsString()
-                )
-        );
+        if (jsonGetDoc.has("migratedFromId")) {
+            getDoc.put(
+                    projectName,
+                    new GetDocResult(
+                            jsonGetDoc.get("error"),
+                            jsonGetDoc.get("versionID").getAsInt(),
+                            jsonGetDoc.get("createdAt").getAsString(),
+                            jsonGetDoc.get("email").getAsString(),
+                            jsonGetDoc.get("name").getAsString(),
+                            jsonGetDoc.get("migratedFromId").getAsString()
+                    )
+            );
+        } else {
+            getDoc.put(
+                    projectName,
+                    new GetDocResult(
+                            jsonGetDoc.get("error"),
+                            jsonGetDoc.get("versionID").getAsInt(),
+                            jsonGetDoc.get("createdAt").getAsString(),
+                            jsonGetDoc.get("email").getAsString(),
+                            jsonGetDoc.get("name").getAsString()
+                    )
+            );
+        }
     }
     }
 
 
     private void addGetSavedVersForProject(
     private void addGetSavedVersForProject(

+ 21 - 0
services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java

@@ -117,6 +117,9 @@ public class WLGitBridgeIntegrationTest {
         put("pushSubmoduleFailsWithInvalidGitRepo", new HashMap<String, SnapshotAPIState>() {{
         put("pushSubmoduleFailsWithInvalidGitRepo", new HashMap<String, SnapshotAPIState>() {{
             put("state", new SnapshotAPIStateBuilder(getResourceAsStream("/pushSubmoduleFailsWithInvalidGitRepo/state/state.json")).build());
             put("state", new SnapshotAPIStateBuilder(getResourceAsStream("/pushSubmoduleFailsWithInvalidGitRepo/state/state.json")).build());
         }});
         }});
+        put("canMigrateRepository", new HashMap<String, SnapshotAPIState>() {{
+            put("state", new SnapshotAPIStateBuilder(getResourceAsStream("/canMigrateRepository/state/state.json")).build());
+        }});
     }};
     }};
 
 
     @Rule
     @Rule
@@ -787,6 +790,24 @@ public class WLGitBridgeIntegrationTest {
         assertNotEquals(0, gitProcess.waitFor());
         assertNotEquals(0, gitProcess.waitFor());
     }
     }
 
 
+    @Test
+    public void canMigrateRepository() throws IOException, GitAPIException, InterruptedException {
+        int gitBridgePort = 33881;
+        int mockServerPort = 3881;
+        MockSnapshotServer server = new MockSnapshotServer(mockServerPort, getResource("/canMigrateRepository").toFile());
+        server.start();
+        server.setState(states.get("canMigrateRepository").get("state"));
+        GitBridgeApp wlgb = new GitBridgeApp(new String[] {
+                makeConfigFile(gitBridgePort, mockServerPort)
+        });
+        wlgb.run();
+        File testprojDir = gitClone("testproj", gitBridgePort, dir);
+        File testprojDir2 = gitClone("testproj2", gitBridgePort, dir);
+        wlgb.stop();
+
+        assertTrue(FileUtil.gitDirectoriesAreEqual(getResource("/canMigrateRepository/state/testproj"), testprojDir2.toPath()));
+    }
+
     private String makeConfigFile(
     private String makeConfigFile(
             int port,
             int port,
             int apiPort
             int apiPort

+ 83 - 0
services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canMigrateRepository/state/state.json

@@ -0,0 +1,83 @@
+[
+  {
+    "project": "testproj2",
+    "getDoc": {
+      "versionID": 1,
+      "createdAt": "2014-11-30T18:40:58.123Z",
+      "email": "jdleesmiller+1@gmail.com",
+      "name": "John+1",
+      "migratedFromId": "testproj"
+    },
+    "getSavedVers": [],
+    "getForVers": [
+      {
+        "versionID": 1,
+        "srcs": [
+          {
+            "content": "content\n",
+            "path": "main.tex"
+          },
+          {
+            "content": "This text is from another file.",
+            "path": "foo/bar/test.tex"
+          }
+        ],
+        "atts": [
+          {
+            "url": "http://127.0.0.1:3857/state/testproj/min_mean_wait_evm_7_eps_150dpi.png",
+            "path": "min_mean_wait_evm_7_eps_150dpi.png"
+          }
+        ]
+      }
+    ],
+    "push": "success",
+    "postback": {
+      "type": "success",
+      "versionID": 2
+    }
+  },
+  {
+    "project": "testproj",
+    "getDoc": {
+      "versionID": 1,
+      "createdAt": "2014-11-30T18:40:58.123Z",
+      "email": "jdleesmiller+1@gmail.com",
+      "name": "John+1"
+    },
+    "getSavedVers": [
+      {
+        "versionID": 1,
+        "comment": "added more info on doc GET and error details",
+        "email": "jdleesmiller+1@gmail.com",
+        "name": "John+1",
+        "createdAt": "2014-11-30T18:47:01.333Z"
+      }
+    ],
+    "getForVers": [
+      {
+        "versionID": 1,
+        "srcs": [
+          {
+            "content": "content\n",
+            "path": "main.tex"
+          },
+          {
+            "content": "This text is from another file.",
+            "path": "foo/bar/test.tex"
+          }
+        ],
+        "atts": [
+          {
+            "url": "http://127.0.0.1:3857/state/testproj/min_mean_wait_evm_7_eps_150dpi.png",
+            "path": "min_mean_wait_evm_7_eps_150dpi.png"
+          }
+        ]
+      }
+    ],
+    "push": "success",
+    "postback": {
+      "type": "success",
+      "versionID": 2
+    }
+  }
+]

+ 1 - 0
services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canMigrateRepository/state/testproj/foo/bar/test.tex

@@ -0,0 +1 @@
+This text is from another file.

+ 1 - 0
services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canMigrateRepository/state/testproj/main.tex

@@ -0,0 +1 @@
+content

BIN
services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canMigrateRepository/state/testproj/min_mean_wait_evm_7_eps_150dpi.png