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