fix RestApi

This commit is contained in:
Vladimir Krivosheev
2016-05-25 10:49:45 +02:00
parent 1f5a95be08
commit 7d839ccf29
2 changed files with 7 additions and 3 deletions
@@ -26,7 +26,6 @@ import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.google.gson.stream.MalformedJsonException;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
@@ -50,6 +49,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.builtInWebServer.BuiltInWebServerKt;
import org.jetbrains.io.NettyKt;
import org.jetbrains.io.Responses;
@@ -178,6 +178,10 @@ public abstract class RestService extends HttpRequestHandler {
// e.g. upsource trust to configured host
protected boolean isHostTrusted(@NotNull FullHttpRequest request) throws InterruptedException, InvocationTargetException {
if (BuiltInWebServerKt.isSignedRequest(request)) {
return true;
}
String referrer = NettyKt.getOrigin(request);
if (referrer == null) {
referrer = NettyKt.getReferrer(request);
@@ -199,8 +203,6 @@ public abstract class RestService extends HttpRequestHandler {
else {
isTrusted.set(trustedOrigins.getIfPresent(host));
}
} else if (ApplicationManager.getApplication().isUnitTestMode()) {
isTrusted.set(Boolean.TRUE); // make the tests pass
}
if (isTrusted.isNull()) {
@@ -64,9 +64,11 @@ internal class RestApiTest : BuiltInServerTestCase() {
val column = manager.annotation?.column ?: -1
var connection = URL("$serviceUrl?file=${manager.filePath ?: ""}&line=$line&column=$column").openConnection() as HttpURLConnection
BuiltInServerManager.getInstance().configureRequestToWebServer(connection)
assertThat(HttpResponseStatus.valueOf(connection.responseCode)).isEqualTo(expectedStatus)
connection = URL("$serviceUrl").openConnection() as HttpURLConnection
BuiltInServerManager.getInstance().configureRequestToWebServer(connection)
connection.requestMethod = "POST"
connection.doOutput = true
JsonWriter(connection.outputStream.bufferedWriter()).use {