1
1
#![ allow( unused_variables) ]
2
2
use reqwest:: header:: LOCATION ;
3
3
use reqwest:: redirect:: Policy ;
4
- use reqwest:: { ClientBuilder , StatusCode } ;
4
+ use reqwest:: { ClientBuilder , Method , StatusCode } ;
5
5
use std:: time:: Duration ;
6
6
use tokio:: time:: sleep;
7
7
use tracing:: log:: debug;
@@ -333,3 +333,35 @@ async fn alias_start_server_and_client_upload_file() {
333
333
)
334
334
. await
335
335
}
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