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