11#![ allow( unused_variables) ]
22use reqwest:: header:: LOCATION ;
33use reqwest:: redirect:: Policy ;
4- use reqwest:: { ClientBuilder , StatusCode } ;
4+ use reqwest:: { ClientBuilder , Method , StatusCode } ;
55use std:: time:: Duration ;
66use tokio:: time:: sleep;
77use tracing:: log:: debug;
@@ -333,3 +333,35 @@ async fn alias_start_server_and_client_upload_file() {
333333 )
334334 . await
335335}
336+
337+
338+ #[ tokio:: test]
339+ async fn cors ( ) {
340+ clean_web_domain_dir ( LOCAL_HOST ) ;
341+ run_server_with_config ( "server_config_cors.toml" ) ;
342+
343+ let domain = LOCAL_HOST . to_owned ( ) + "/27" ;
344+ let domain = & domain;
345+ let request_prefix = format ! ( "http://{LOCAL_HOST}:8080/27" ) ;
346+ let request_prefix = & request_prefix;
347+
348+ tokio:: time:: sleep ( Duration :: from_secs ( 1 ) ) . await ;
349+ upload_file_and_check ( domain, request_prefix, 1 , vec ! [ "index.html" ] ) . await ;
350+
351+ let client = get_http_client ( ) ;
352+ let request = client. request ( Method :: OPTIONS , request_prefix)
353+ . header ( "Origin" , "http://localhost:9292" )
354+ . header ( "Access-Control-Request-Headers" , "Origin, Accept, Content-Type" )
355+ . header ( "Access-Control-Request-Method" , "GET" )
356+ . build ( ) . unwrap ( ) ;
357+ let result = client. execute ( request) . await . unwrap ( ) ;
358+ assert_eq ! ( result. status( ) , StatusCode :: OK ) ;
359+
360+ let request = client. request ( Method :: OPTIONS , request_prefix)
361+ . header ( "Origin" , "http://localhost:9291" )
362+ . header ( "Access-Control-Request-Headers" , "Origin, Accept, Content-Type" )
363+ . header ( "Access-Control-Request-Method" , "GET" )
364+ . build ( ) . unwrap ( ) ;
365+ let result = client. execute ( request) . await . unwrap ( ) ;
366+ assert_ne ! ( result. status( ) , StatusCode :: OK ) ;
367+ }
0 commit comments