From 4cb7324a4ebeaec5a10898d120e8a5eac13feea8 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 30 Aug 2023 15:46:39 +0200 Subject: [PATCH] GH-1064 Explicitly add content type to GCP response Resolves #1064 --- .../function/adapter/gcp/FunctionInvoker.java | 1 + .../adapter/gcp/FunctionInvokerHttpTests.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java index c921291de..062787d84 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcp/FunctionInvoker.java @@ -121,6 +121,7 @@ public class FunctionInvoker implements HttpFunction, RawBackgroundFunction { if (result != null) { MessageHeaders headers = result.getHeaders(); + httpResponse.setContentType(result.getHeaders().get(MessageHeaders.CONTENT_TYPE).toString()); httpResponse.getWriter().write(new String(result.getPayload(), StandardCharsets.UTF_8)); for (Entry header : headers.entrySet()) { Object values = header.getValue(); diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/test/java/org/springframework/cloud/function/adapter/gcp/FunctionInvokerHttpTests.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/test/java/org/springframework/cloud/function/adapter/gcp/FunctionInvokerHttpTests.java index eff309bfb..c178414ae 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/test/java/org/springframework/cloud/function/adapter/gcp/FunctionInvokerHttpTests.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/test/java/org/springframework/cloud/function/adapter/gcp/FunctionInvokerHttpTests.java @@ -89,6 +89,7 @@ public class FunctionInvokerHttpTests { } + @Test public void testJsonInputFunction() throws Exception { @@ -103,8 +104,22 @@ public class FunctionInvokerHttpTests { assertThat(writer.toString()).isEqualTo(gson.toJson(expectedOutput)); + } + + @Test + public void testWithKanji() throws Exception { + + FunctionInvoker handler = new FunctionInvoker(JsonInputFunction.class); + + String expectedOutput = "Thank you for sending the message: 森林"; + IncomingRequest input = new IncomingRequest("森林"); + + when(request.getReader()).thenReturn(new BufferedReader(new StringReader(gson.toJson(input)))); + handler.service(request, response); + bufferedWriter.close(); + assertThat(writer.toString()).isEqualTo(gson.toJson(expectedOutput)); } @Test