From c3db415ce762f66a78b1047f1cd41ba4a67702e0 Mon Sep 17 00:00:00 2001 From: Winston Li Date: Sun, 25 Oct 2015 11:19:02 +0000 Subject: [PATCH] Implement config changes and tests --- services/git-bridge/.idea/compiler.xml | 33 --------- services/git-bridge/.idea/misc.xml | 17 ----- services/git-bridge/bin/config.json | 19 +++-- services/git-bridge/pom.xml | 20 ++++++ .../wlgitbridge/application/GitBridgeApp.java | 1 + .../application/{ => config}/Config.java | 42 +++++++---- .../application/config/Oauth2.java | 30 ++++++++ .../wlgitbridge/server/GitBridgeServer.java | 2 +- .../application/config/ConfigTest.java | 69 +++++++++++++++++++ services/git-bridge/writelatex-git-bridge.iml | 48 ------------- 10 files changed, 161 insertions(+), 120 deletions(-) delete mode 100644 services/git-bridge/.idea/compiler.xml delete mode 100644 services/git-bridge/.idea/misc.xml rename services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/{ => config}/Config.java (82%) create mode 100644 services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Oauth2.java create mode 100644 services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java delete mode 100644 services/git-bridge/writelatex-git-bridge.iml diff --git a/services/git-bridge/.idea/compiler.xml b/services/git-bridge/.idea/compiler.xml deleted file mode 100644 index 8d3613cc8b..0000000000 --- a/services/git-bridge/.idea/compiler.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - diff --git a/services/git-bridge/.idea/misc.xml b/services/git-bridge/.idea/misc.xml deleted file mode 100644 index 66ed3bc26d..0000000000 --- a/services/git-bridge/.idea/misc.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/services/git-bridge/bin/config.json b/services/git-bridge/bin/config.json index e174ed8eb9..20b41c0025 100644 --- a/services/git-bridge/bin/config.json +++ b/services/git-bridge/bin/config.json @@ -1,9 +1,14 @@ { - "port": 80, - "rootGitDirectory": "/var/wlgb/git", - "apiBaseUrl": "http://127.0.0.1:60000/api/v0", - "username": "REDACTED", - "password": "REDACTED", - "postbackBaseUrl": "http://127.0.0.1", - "serviceName": "Overleaf" + "port": 80, + "rootGitDirectory": "/var/wlgb/git", + "apiBaseUrl": "http://127.0.0.1:60000/api/v0", + "username": "REDACTED", + "password": "REDACTED", + "postbackBaseUrl": "http://127.0.0.1", + "serviceName": "Overleaf", + "oauth2": { + "oauth2ClientID": "clientID", + "oauth2ClientSecret": "oauth2 client secret", + "oauth2Server": "https://www.overleaf.com" + } } diff --git a/services/git-bridge/pom.xml b/services/git-bridge/pom.xml index 9377b85d79..6b23bad943 100644 --- a/services/git-bridge/pom.xml +++ b/services/git-bridge/pom.xml @@ -102,6 +102,26 @@ joda-time 2.7 + + com.google.oauth-client + google-oauth-client + 1.20.0 + + + com.google.http-client + google-http-client + 1.20.0 + + + com.google.http-client + google-http-client-gson + 1.20.0 + + + commons-lang + commons-lang + 2.6 + \ No newline at end of file diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java index 063b95e5a8..11ef4ef2e5 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java @@ -1,5 +1,6 @@ package uk.ac.ic.wlgitbridge.application; +import uk.ac.ic.wlgitbridge.application.config.Config; import uk.ac.ic.wlgitbridge.application.exception.ConfigFileException; import uk.ac.ic.wlgitbridge.application.exception.ArgsException; import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException; diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/Config.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java similarity index 82% rename from services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/Config.java rename to services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java index 70ab5f2042..9e350b9b88 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/Config.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java @@ -1,4 +1,4 @@ -package uk.ac.ic.wlgitbridge.application; +package uk.ac.ic.wlgitbridge.application.config; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -9,6 +9,7 @@ import uk.ac.ic.wlgitbridge.snapshot.base.JSONSource; import java.io.FileReader; import java.io.IOException; +import java.io.Reader; /** * Created by Winston on 05/12/14. @@ -22,13 +23,14 @@ public class Config implements JSONSource { private String apiBaseURL; private String postbackURL; private String serviceName; + private Oauth2 oauth2; public Config(String configFilePath) throws ConfigFileException, IOException { - try { - fromJSON(new Gson().fromJson(new FileReader(configFilePath), JsonElement.class)); - } catch (JsonParseException e) { - throw new IOException(); - } + this(new FileReader(configFilePath)); + } + + Config(Reader reader) { + fromJSON(new Gson().fromJson(reader, JsonElement.class)); } @Override @@ -48,6 +50,7 @@ public class Config implements JSONSource { if (!postbackURL.endsWith("/")) { postbackURL += "/"; } + oauth2 = new Gson().fromJson(configObject.get("oauth2"), Oauth2.class); } public int getPort() { @@ -70,6 +73,25 @@ public class Config implements JSONSource { return apiBaseURL; } + public String getServiceName() { + return serviceName; + } + + public String getPostbackURL() { + return postbackURL; + } + + public boolean isUsingOauth2() { + return oauth2 != null; + } + + public Oauth2 getOauth2() { + if (!isUsingOauth2()) { + throw new AssertionError("Getting oauth2 when not using it"); + } + return oauth2; + } + private JsonElement getElement(JsonObject configObject, String name) { JsonElement element = configObject.get(name); if (element == null) { @@ -86,12 +108,4 @@ public class Config implements JSONSource { return element.getAsString(); } - public String getServiceName() { - return serviceName; - } - - public String getPostbackURL() { - return postbackURL; - } - } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Oauth2.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Oauth2.java new file mode 100644 index 0000000000..11d04562b2 --- /dev/null +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Oauth2.java @@ -0,0 +1,30 @@ +package uk.ac.ic.wlgitbridge.application.config; + +/** + * Created by winston on 25/10/15. + */ +public class Oauth2 { + + private final String oauth2ClientID; + private final String oauth2ClientSecret; + private final String oauth2Server; + + public Oauth2(String oauth2ClientID, String oauth2ClientSecret, String oauth2Server) { + this.oauth2ClientID = oauth2ClientID; + this.oauth2ClientSecret = oauth2ClientSecret; + this.oauth2Server = oauth2Server; + } + + public String getOauth2ClientID() { + return oauth2ClientID; + } + + public String getOauth2ClientSecret() { + return oauth2ClientSecret; + } + + public String getOauth2Server() { + return oauth2Server; + } + +} diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java index 3172788e82..c8051a0e85 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java @@ -7,7 +7,7 @@ import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.log.Log; -import uk.ac.ic.wlgitbridge.application.Config; +import uk.ac.ic.wlgitbridge.application.config.Config; import uk.ac.ic.wlgitbridge.application.jetty.NullLogger; import uk.ac.ic.wlgitbridge.bridge.BridgeAPI; import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException; diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java new file mode 100644 index 0000000000..8719082529 --- /dev/null +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java @@ -0,0 +1,69 @@ +package uk.ac.ic.wlgitbridge.application.config; + +import org.junit.Test; + +import java.io.Reader; +import java.io.StringReader; + +import static org.junit.Assert.*; + +/** + * Created by winston on 25/10/15. + */ +public class ConfigTest { + + @Test + public void testConstructWithOauth() { + Reader reader = new StringReader("{\n" + + " \"port\": 80,\n" + + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + + " \"username\": \"REDACTED\",\n" + + " \"password\": \"REDACTED\",\n" + + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + + " \"serviceName\": \"Overleaf\",\n" + + " \"oauth2\": {\n" + + " \"oauth2ClientID\": \"clientID\",\n" + + " \"oauth2ClientSecret\": \"oauth2 client secret\",\n" + + " \"oauth2Server\": \"https://www.overleaf.com\"\n" + + " }\n" + + "}\n"); + Config config = new Config(reader); + assertEquals(80, config.getPort()); + assertEquals("/var/wlgb/git", config.getRootGitDirectory()); + assertEquals("http://127.0.0.1:60000/api/v0/", config.getAPIBaseURL()); + assertEquals("REDACTED", config.getUsername()); + assertEquals("REDACTED", config.getPassword()); + assertEquals("http://127.0.0.1/", config.getPostbackURL()); + assertEquals("Overleaf", config.getServiceName()); + assertTrue(config.isUsingOauth2()); + assertEquals("clientID", config.getOauth2().getOauth2ClientID()); + assertEquals("oauth2 client secret", config.getOauth2().getOauth2ClientSecret()); + assertEquals("https://www.overleaf.com", config.getOauth2().getOauth2Server()); + } + + @Test (expected = AssertionError.class) + public void testConstructWithoutOauth() { + Reader reader = new StringReader("{\n" + + " \"port\": 80,\n" + + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + + " \"username\": \"REDACTED\",\n" + + " \"password\": \"REDACTED\",\n" + + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + + " \"serviceName\": \"Overleaf\",\n" + + " \"oauth2\": null\n" + + "}\n"); + Config config = new Config(reader); + assertEquals(80, config.getPort()); + assertEquals("/var/wlgb/git", config.getRootGitDirectory()); + assertEquals("http://127.0.0.1:60000/api/v0/", config.getAPIBaseURL()); + assertEquals("REDACTED", config.getUsername()); + assertEquals("REDACTED", config.getPassword()); + assertEquals("http://127.0.0.1/", config.getPostbackURL()); + assertEquals("Overleaf", config.getServiceName()); + assertFalse(config.isUsingOauth2()); + config.getOauth2(); + } + +} \ No newline at end of file diff --git a/services/git-bridge/writelatex-git-bridge.iml b/services/git-bridge/writelatex-git-bridge.iml deleted file mode 100644 index 2b9d1d4a93..0000000000 --- a/services/git-bridge/writelatex-git-bridge.iml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file