You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/06/22 10:28:25 UTC

[incubator-servicecomb-java-chassis] 02/03: [SCB-679] add Integrated Test

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit d3607ac2f8a60fec2cf7bbf7e45d957cb198aae7
Author: yaohaishi <ya...@huawei.com>
AuthorDate: Thu Jun 21 00:01:43 2018 +0800

    [SCB-679] add Integrated Test
---
 .../servicecomb/demo/crossapp/CrossappClient.java  | 31 ++++++++++++++++++++++
 .../src/main/resources/microservice.yaml           |  7 +++++
 2 files changed, 38 insertions(+)

diff --git a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java b/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
index cc4162b..9388953 100644
--- a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
+++ b/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
@@ -17,13 +17,21 @@
 
 package org.apache.servicecomb.demo.crossapp;
 
+import java.util.Collections;
+import java.util.TreeSet;
+
 import org.apache.servicecomb.core.provider.consumer.InvokerUtils;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.foundation.common.utils.Log4jUtils;
 import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
 @Component
@@ -32,12 +40,14 @@ public class CrossappClient {
   private static HelloWorld helloWorld;
 
   public static void main(String[] args) throws Exception {
+    System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
     Log4jUtils.init();
     BeanUtils.init();
 
     run();
 
     TestMgr.summary();
+    System.setProperty("sun.net.http.allowRestrictedHeaders", "false");
   }
 
   public static void run() {
@@ -50,5 +60,26 @@ public class CrossappClient {
 
     result = helloWorld.sayHello();
     TestMgr.check("hello world", result);
+
+    testCorsHandler();
+  }
+
+  private static void testCorsHandler() {
+    RestTemplate springRestTemplate = new RestTemplate();
+    MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
+    requestHeaders.put("Origin", Collections.singletonList("http://localhost:8080"));
+    requestHeaders.put("Access-Control-Request-Method", Collections.singletonList("PUT"));
+
+    HttpEntity<Object> requestEntity = new HttpEntity<>(requestHeaders);
+    ResponseEntity<String> responseEntity = springRestTemplate
+        .exchange("http://127.0.0.1:8080/helloworld/hello", HttpMethod.OPTIONS, requestEntity,
+            String.class);
+
+    TestMgr.check("204", responseEntity.getStatusCodeValue());
+    TreeSet<String> sortedSet = new TreeSet<>(responseEntity.getHeaders().get("Access-Control-Allow-Methods"));
+    TestMgr.check("[DELETE,POST,GET,PUT]", sortedSet);
+    sortedSet = new TreeSet<>(responseEntity.getHeaders().get("Access-Control-Allow-Headers"));
+    TestMgr.check("[abc,def]", sortedSet);
+    TestMgr.check("*", responseEntity.getHeaders().getFirst("Access-Control-Allow-Origin"));
   }
 }
diff --git a/demo/demo-crossapp/crossapp-server/src/main/resources/microservice.yaml b/demo/demo-crossapp/crossapp-server/src/main/resources/microservice.yaml
index f58cba5..bd0158a 100644
--- a/demo/demo-crossapp/crossapp-server/src/main/resources/microservice.yaml
+++ b/demo/demo-crossapp/crossapp-server/src/main/resources/microservice.yaml
@@ -31,3 +31,10 @@ servicecomb:
       address: http://127.0.0.1:30100
   rest:
     address: 127.0.0.1:8080
+  cors:
+    enabled: true
+    origin: "*"
+    allowedHeader: abc,def
+    allowedMethod: GET,PUT,POST,DELETE
+    exposedHeader: abc,def
+    maxAge: 1