mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-24 17:51:51 +02:00
[git-bridge] add CORS support (#23892)
GitOrigin-RevId: 9e3d85e479746affd047434ec9ce2588b60ca76c
This commit is contained in:
@@ -465,8 +465,12 @@ public class WLGitBridgeIntegrationTest {
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
server.stop();
|
||||
wlgb.stop();
|
||||
if (server != null) {
|
||||
server.stop();
|
||||
}
|
||||
if (wlgb != null) {
|
||||
wlgb.stop();
|
||||
}
|
||||
}
|
||||
|
||||
private void gitConfig(File dir) throws IOException, InterruptedException {
|
||||
@@ -1391,6 +1395,80 @@ public class WLGitBridgeIntegrationTest {
|
||||
assertTrue(f.exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void noCors() throws IOException, ExecutionException, InterruptedException {
|
||||
|
||||
int gitBridgePort = 33893;
|
||||
int mockServerPort = 3893;
|
||||
|
||||
server = new MockSnapshotServer(mockServerPort, getResource("/canServePushedFiles").toFile());
|
||||
server.start();
|
||||
server.setState(states.get("canServePushedFiles").get("state"));
|
||||
|
||||
wlgb = new GitBridgeApp(new String[] {makeConfigFile(gitBridgePort, mockServerPort)});
|
||||
wlgb.run();
|
||||
|
||||
String url = "http://127.0.0.1:" + gitBridgePort + "/status";
|
||||
Response response = asyncHttpClient().prepareGet(url).execute().get();
|
||||
assertEquals(200, response.getStatusCode());
|
||||
assertEquals("ok\n", response.getResponseBody());
|
||||
assertNull(response.getHeader("Access-Control-Allow-Origin"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void cors() throws IOException, ExecutionException, InterruptedException {
|
||||
|
||||
int gitBridgePort = 33894;
|
||||
int mockServerPort = 3894;
|
||||
|
||||
server = new MockSnapshotServer(mockServerPort, getResource("/canServePushedFiles").toFile());
|
||||
server.start();
|
||||
server.setState(states.get("canServePushedFiles").get("state"));
|
||||
|
||||
wlgb = new GitBridgeApp(new String[] {makeConfigFile(gitBridgePort, mockServerPort)});
|
||||
wlgb.run();
|
||||
|
||||
String url = "http://127.0.0.1:" + gitBridgePort + "/status";
|
||||
|
||||
// Success
|
||||
Response response =
|
||||
asyncHttpClient()
|
||||
.prepareOptions(url)
|
||||
.setHeader("Origin", "https://localhost")
|
||||
.execute()
|
||||
.get();
|
||||
assertEquals(200, response.getStatusCode());
|
||||
assertEquals("", response.getResponseBody());
|
||||
assertEquals("https://localhost", response.getHeader("Access-Control-Allow-Origin"));
|
||||
|
||||
response =
|
||||
asyncHttpClient().prepareGet(url).setHeader("Origin", "https://localhost").execute().get();
|
||||
assertEquals(200, response.getStatusCode());
|
||||
assertEquals("ok\n", response.getResponseBody());
|
||||
assertEquals("https://localhost", response.getHeader("Access-Control-Allow-Origin"));
|
||||
|
||||
// Deny
|
||||
response =
|
||||
asyncHttpClient()
|
||||
.prepareOptions(url)
|
||||
.setHeader("Origin", "https://not-localhost")
|
||||
.execute()
|
||||
.get();
|
||||
assertEquals(403, response.getStatusCode());
|
||||
assertEquals("", response.getResponseBody());
|
||||
assertNull(response.getHeader("Access-Control-Allow-Origin"));
|
||||
|
||||
response =
|
||||
asyncHttpClient()
|
||||
.prepareGet(url)
|
||||
.setHeader("Origin", "https://not-localhost")
|
||||
.execute()
|
||||
.get();
|
||||
assertEquals(200, response.getStatusCode());
|
||||
assertEquals("ok\n", response.getResponseBody());
|
||||
assertNull(response.getHeader("Access-Control-Allow-Origin"));
|
||||
}
|
||||
|
||||
private String makeConfigFile(int port, int apiPort) throws IOException {
|
||||
return makeConfigFile(port, apiPort, null);
|
||||
}
|
||||
@@ -1409,6 +1487,7 @@ public class WLGitBridgeIntegrationTest {
|
||||
+ " \"rootGitDirectory\": \""
|
||||
+ wlgb.getAbsolutePath()
|
||||
+ "\",\n"
|
||||
+ " \"allowedCorsOrigins\": \"https://localhost\",\n"
|
||||
+ " \"apiBaseUrl\": \"http://127.0.0.1:"
|
||||
+ apiPort
|
||||
+ "/api/v0\",\n"
|
||||
|
||||
@@ -90,6 +90,7 @@ public class ConfigTest {
|
||||
+ " \"bindIp\": \"127.0.0.1\",\n"
|
||||
+ " \"idleTimeout\": 30000,\n"
|
||||
+ " \"rootGitDirectory\": \"/var/wlgb/git\",\n"
|
||||
+ " \"allowedCorsOrigins\": [],\n"
|
||||
+ " \"apiBaseURL\": \"http://127.0.0.1:60000/api/v0/\",\n"
|
||||
+ " \"postbackURL\": \"http://127.0.0.1/\",\n"
|
||||
+ " \"serviceName\": \"Overleaf\",\n"
|
||||
|
||||
@@ -50,7 +50,7 @@ public class BridgeTest {
|
||||
gcJob = mock(GcJob.class);
|
||||
bridge =
|
||||
new Bridge(
|
||||
new Config(0, "", 0, "", "", "", "", null, false, null, null, null, 0),
|
||||
new Config(0, "", 0, "", null, "", "", "", null, false, null, null, null, 0),
|
||||
lock,
|
||||
repoStore,
|
||||
dbStore,
|
||||
|
||||
Reference in New Issue
Block a user