diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/Main.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/Main.java index 809d831952..5f50f9890c 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/Main.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/Main.java @@ -11,7 +11,7 @@ import java.io.File; public class Main { public static void main(String[] args) { - MockSnapshotServer server = new MockSnapshotServer(new File("/Users/Roxy/Code/java/writelatex-git-bridge")); + MockSnapshotServer server = new MockSnapshotServer(60000, new File("/Users/Roxy/Code/java/writelatex-git-bridge")); server.setState(new SnapshotAPIState()); server.start(); } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/server/MockSnapshotServer.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/server/MockSnapshotServer.java index 5fe55170dc..59ee4ab4ab 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/server/MockSnapshotServer.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/server/MockSnapshotServer.java @@ -19,8 +19,8 @@ public class MockSnapshotServer { private final SnapshotResponseBuilder responseBuilder; private int port; - public MockSnapshotServer(File resourceBase) { - server = new Server(60000); + public MockSnapshotServer(int port, File resourceBase) { + server = new Server(port); responseBuilder = new SnapshotResponseBuilder(); server.setHandler(getHandlerForResourceBase(resourceBase)); } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/util/FileUtil.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/util/FileUtil.java index 80a9a343b5..d093f9416d 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/util/FileUtil.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/util/FileUtil.java @@ -36,7 +36,13 @@ public class FileUtil { public static boolean gitDirectoriesAreEqual(Path dir1, Path dir2) { Set dir1Contents = getAllFilesRecursivelyInDirectoryApartFrom(dir1, dir1.resolve(".git")); Set dir2Contents = getAllFilesRecursivelyInDirectoryApartFrom(dir2, dir2.resolve(".git")); - return dir1Contents.equals(dir2Contents) && directoryContentsEqual(dir1Contents, dir1, dir2); + boolean filesEqual = dir1Contents.equals(dir2Contents); + if (!filesEqual) { + System.out.println("Not equal: (" + dir1Contents + ", " + dir2Contents + ")"); + System.out.println(dir1 + ": " + dir1Contents); + System.out.println(dir2 + ": " + dir2Contents); + } + return filesEqual && directoryContentsEqual(dir1Contents, dir1, dir2); } static boolean directoryContentsEqual(Set dirContents, Path dir1, Path dir2) { diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest.java index 42570d0307..066c65068d 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest.java @@ -2,7 +2,6 @@ package uk.ac.ic.wlgitbridge; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -13,64 +12,89 @@ import uk.ac.ic.wlgitbridge.test.state.SnapshotAPIStateBuilder; import uk.ac.ic.wlgitbridge.test.util.FileUtil; import java.io.*; -import java.net.URISyntaxException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; + +import static org.junit.Assert.assertTrue; /** * Created by Winston on 11/01/15. */ public class WLGitBridgeIntegrationTest { - private MockSnapshotServer server; private Map> states = new HashMap>() {{ put("canCloneARepository", new HashMap() {{ put("state", new SnapshotAPIStateBuilder(getResourceAsStream("/canCloneARepository/state/state.json")).build()); }}); + put("canCloneMultipleRepositories", new HashMap() {{ + put("state", new SnapshotAPIStateBuilder(getResourceAsStream("/canCloneMultipleRepositories/state/state.json")).build()); + }}); }}; @Rule public TemporaryFolder folder = new TemporaryFolder(); - @Before - public void startMockSnapshotAPIServer() throws URISyntaxException { - server = new MockSnapshotServer(getResource("/").toFile()); - server.start(); - } - @Test public void canCloneARepository() throws IOException, GitAPIException { + MockSnapshotServer server = new MockSnapshotServer(3857, getResource("/canCloneARepository").toFile()); + server.start(); server.setState(states.get("canCloneARepository").get("state")); WLGitBridgeApplication wlgb = new WLGitBridgeApplication(new String[] { - makeConfigFile() + makeConfigFile(33857, 3857) }); wlgb.run(); folder.create(); File git = folder.newFolder(); Git.cloneRepository() - .setURI("http://127.0.0.1:30080/testproj.git") + .setURI("http://127.0.0.1:33857/testproj.git") .setDirectory(git) .call() .close(); wlgb.stop(); - assertTrue(FileUtil.gitDirectoriesAreEqual(getResource("/canCloneARepository/state/repo"), git.toPath())); + assertTrue(FileUtil.gitDirectoriesAreEqual(getResource("/canCloneARepository/state/testproj"), git.toPath())); } - private String makeConfigFile() throws IOException { + @Test + public void canCloneMultipleRepositories() throws IOException, GitAPIException { + MockSnapshotServer server = new MockSnapshotServer(3858, getResource("/canCloneMultipleRepositories").toFile()); + server.start(); + server.setState(states.get("canCloneMultipleRepositories").get("state")); + WLGitBridgeApplication wlgb = new WLGitBridgeApplication(new String[] { + makeConfigFile(33858, 3858) + }); + wlgb.run(); + folder.create(); + File testproj1 = folder.newFolder(); + Git.cloneRepository() + .setURI("http://127.0.0.1:33858/testproj1.git") + .setDirectory(testproj1) + .call() + .close(); + File testproj2 = folder.newFolder(); + Git.cloneRepository() + .setURI("http://127.0.0.1:33858/testproj2.git") + .setDirectory(testproj2) + .call() + .close(); + wlgb.stop(); + assertTrue(FileUtil.gitDirectoriesAreEqual(getResource("/canCloneMultipleRepositories/state/testproj1"), testproj1.toPath())); + assertTrue(FileUtil.gitDirectoriesAreEqual(getResource("/canCloneMultipleRepositories/state/testproj2"), testproj2.toPath())); + } + + private String makeConfigFile(int port, int apiPort) throws IOException { File wlgb = folder.newFolder(); File config = folder.newFile(); PrintWriter writer = new PrintWriter(config); writer.println("{\n" + - "\t\"port\": 30080,\n" + + "\t\"port\": " + port + ",\n" + "\t\"rootGitDirectory\": \"" + wlgb.getAbsolutePath() + "\",\n" + - "\t\"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + + "\t\"apiBaseUrl\": \"http://127.0.0.1:" + apiPort + "/api/v0\",\n" + "\t\"username\": \"\",\n" + "\t\"password\": \"\",\n" + - "\t\"postbackBaseUrl\": \"http://127.0.0.1:30080\",\n" + + "\t\"postbackBaseUrl\": \"http://127.0.0.1:" + port + "\",\n" + "\t\"serviceName\": \"Overleaf\"\n" + "}\n"); writer.close(); diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/main.tex b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/main.tex deleted file mode 100644 index 6b584e8ece..0000000000 --- a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/main.tex +++ /dev/null @@ -1 +0,0 @@ -content \ No newline at end of file diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/min_mean_wait_evm_7_eps_150dpi.png b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/min_mean_wait_evm_7_eps_150dpi.png deleted file mode 100644 index 4a79d5130f..0000000000 Binary files a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/min_mean_wait_evm_7_eps_150dpi.png and /dev/null differ diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/state.json b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/state.json index c6d5b5f42f..6c2b2bb10e 100644 --- a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/state.json +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/state.json @@ -21,7 +21,7 @@ "versionID": 1, "srcs": [ { - "content": "content", + "content": "content\n", "path": "main.tex" }, { @@ -31,7 +31,7 @@ ], "atts": [ { - "url": "http://127.0.0.1:60000/canCloneARepository/state/repo/min_mean_wait_evm_7_eps_150dpi.png", + "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" } ] diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/testproj b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/testproj new file mode 160000 index 0000000000..613ff7782d --- /dev/null +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/testproj @@ -0,0 +1 @@ +Subproject commit 613ff7782d3aaa92617ce07d6c355ca146d023fa diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/state.json b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/state.json new file mode 100644 index 0000000000..e4abf7846a --- /dev/null +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/state.json @@ -0,0 +1,90 @@ +[ + { + "project": "testproj1", + "getDoc": { + "versionID": 1, + "createdAt": "2014-11-30T18:40:58Z", + "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:01Z" + } + ], + "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:3858/state/testproj1/overleaf-white-410.png", + "path": "overleaf-white-410.png" + } + ] + } + ], + "push": "success", + "postback": { + "type": "success", + "versionID": 2 + } + }, + { + "project": "testproj2", + "getDoc": { + "versionID": 1, + "createdAt": "2014-11-30T18:40:58Z", + "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:01Z" + } + ], + "getForVers": [ + { + "versionID": 1, + "srcs": [ + { + "content": "different content\n", + "path": "main.tex" + }, + { + "content": "a different one", + "path": "foo/bar/test.tex" + } + ], + "atts": [ + { + "url": "http://127.0.0.1:3858/state/testproj2/editor-versions-a7e4de19d015c3e7477e3f7eaa6c418e.png", + "path": "editor-versions-a7e4de19d015c3e7477e3f7eaa6c418e.png" + } + ] + } + ], + "push": "success", + "postback": { + "type": "success", + "versionID": 2 + } + } +] \ No newline at end of file diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/foo/bar/test.tex b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/foo/bar/test.tex similarity index 100% rename from services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneARepository/state/repo/foo/bar/test.tex rename to services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/foo/bar/test.tex diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/main.tex b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/main.tex new file mode 100644 index 0000000000..d95f3ad14d --- /dev/null +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/main.tex @@ -0,0 +1 @@ +content diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/overleaf-white-410.png b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/overleaf-white-410.png new file mode 100644 index 0000000000..be0315abbb --- /dev/null +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj1/overleaf-white-410.png @@ -0,0 +1,12 @@ + + + +Error 404 + + +

HTTP ERROR: 404

+

Problem accessing /state/testproj1/overleaf-white-410.png. Reason: +

    Not Found

+
Powered by Jetty:// + + diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/editor-versions-a7e4de19d015c3e7477e3f7eaa6c418e.png b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/editor-versions-a7e4de19d015c3e7477e3f7eaa6c418e.png new file mode 100644 index 0000000000..bd65073542 --- /dev/null +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/editor-versions-a7e4de19d015c3e7477e3f7eaa6c418e.png @@ -0,0 +1,12 @@ + + + +Error 404 + + +

HTTP ERROR: 404

+

Problem accessing /state/testproj2/editor-versions-a7e4de19d015c3e7477e3f7eaa6c418e.png. Reason: +

    Not Found

+
Powered by Jetty:// + + diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/foo/bar/test.tex b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/foo/bar/test.tex new file mode 100644 index 0000000000..1c05c0183f --- /dev/null +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/foo/bar/test.tex @@ -0,0 +1 @@ +a different one \ No newline at end of file diff --git a/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/main.tex b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/main.tex new file mode 100644 index 0000000000..802d4bbd2e --- /dev/null +++ b/services/git-bridge/src/test/resources/uk/ac/ic/wlgitbridge/WLGitBridgeIntegrationTest/canCloneMultipleRepositories/state/testproj2/main.tex @@ -0,0 +1 @@ +different content