feat(web): Removed Cors impl and replaced with tower-http's CorsLayer (#1123)
Fix #1122, see the issue for more details. Signed-off-by: slinkydeveloper <[email protected]>
This commit is contained in:
@@ -11,6 +11,7 @@ use tonic::{Response, Streaming};
|
||||
|
||||
use integration::pb::{test_client::TestClient, test_server::TestServer, Input};
|
||||
use integration::Svc;
|
||||
use tonic_web::GrpcWebLayer;
|
||||
|
||||
#[tokio::test]
|
||||
async fn smoke_unary() {
|
||||
@@ -113,13 +114,10 @@ async fn grpc(accept_h1: bool) -> (impl Future<Output = Result<(), Error>>, Stri
|
||||
async fn grpc_web(accept_h1: bool) -> (impl Future<Output = Result<(), Error>>, String) {
|
||||
let (listener, url) = bind().await;
|
||||
|
||||
let svc = tonic_web::config()
|
||||
.allow_origins(vec!["http://foo.com"])
|
||||
.enable(TestServer::new(Svc));
|
||||
|
||||
let fut = Server::builder()
|
||||
.accept_http1(accept_h1)
|
||||
.add_service(svc)
|
||||
.layer(GrpcWebLayer::new())
|
||||
.add_service(TestServer::new(Svc))
|
||||
.serve_with_incoming(TcpListenerStream::new(listener));
|
||||
|
||||
(fut, url)
|
||||
|
||||
@@ -10,10 +10,11 @@ use tonic::transport::Server;
|
||||
|
||||
use integration::pb::{test_server::TestServer, Input, Output};
|
||||
use integration::Svc;
|
||||
use tonic_web::GrpcWebLayer;
|
||||
|
||||
#[tokio::test]
|
||||
async fn binary_request() {
|
||||
let server_url = spawn("http://example.com").await;
|
||||
let server_url = spawn().await;
|
||||
let client = Client::new();
|
||||
|
||||
let req = build_request(server_url, "grpc-web", "grpc-web");
|
||||
@@ -36,7 +37,7 @@ async fn binary_request() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn text_request() {
|
||||
let server_url = spawn("http://example.com").await;
|
||||
let server_url = spawn().await;
|
||||
let client = Client::new();
|
||||
|
||||
let req = build_request(server_url, "grpc-web-text", "grpc-web-text");
|
||||
@@ -57,31 +58,17 @@ async fn text_request() {
|
||||
assert_eq!(&trailers[..], b"grpc-status:0\r\n");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn origin_not_allowed() {
|
||||
let server_url = spawn("http://foo.com").await;
|
||||
let client = Client::new();
|
||||
|
||||
let req = build_request(server_url, "grpc-web-text", "grpc-web-text");
|
||||
let res = client.request(req).await.unwrap();
|
||||
|
||||
assert_eq!(res.status(), StatusCode::FORBIDDEN);
|
||||
}
|
||||
|
||||
async fn spawn(allowed_origin: &str) -> String {
|
||||
async fn spawn() -> String {
|
||||
let addr = SocketAddr::from(([127, 0, 0, 1], 0));
|
||||
let listener = TcpListener::bind(addr).await.expect("listener");
|
||||
let url = format!("http://{}", listener.local_addr().unwrap());
|
||||
let listener_stream = TcpListenerStream::new(listener);
|
||||
|
||||
let svc = tonic_web::config()
|
||||
.allow_origins(vec![allowed_origin])
|
||||
.enable(TestServer::new(Svc));
|
||||
|
||||
let _ = tokio::spawn(async move {
|
||||
Server::builder()
|
||||
.accept_http1(true)
|
||||
.add_service(svc)
|
||||
.layer(GrpcWebLayer::new())
|
||||
.add_service(TestServer::new(Svc))
|
||||
.serve_with_incoming(listener_stream)
|
||||
.await
|
||||
.unwrap()
|
||||
|
||||
Reference in New Issue
Block a user