1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#[cfg(test)]
mod tests {
use std::collections::HashSet;
use crate::middleware::cors::allowed_origins::AllowedOrigins;
#[test]
fn test_allowed_origins_any() {
let origins = AllowedOrigins::Any;
assert!(origins.is_allowed("https://example.com"));
assert!(origins.is_allowed("http://localhost:3000"));
assert_eq!(
origins.header_value(Some("https://example.com")),
Some("*".to_string())
);
}
#[test]
fn test_allowed_origins_list() {
let mut set = HashSet::new();
set.insert("https://example.com".to_string());
let origins = AllowedOrigins::List(set);
assert!(origins.is_allowed("https://example.com"));
assert!(!origins.is_allowed("https://other.com"));
assert_eq!(
origins.header_value(Some("https://example.com")),
Some("https://example.com".to_string())
);
assert_eq!(origins.header_value(Some("https://other.com")), None);
}
#[test]
fn test_allowed_origins_mirror() {
let origins = AllowedOrigins::Mirror;
assert!(origins.is_allowed("https://example.com"));
assert_eq!(
origins.header_value(Some("https://example.com")),
Some("https://example.com".to_string())
);
}
// TODO:
// FIXME:
// #[test]
// fn test_cors_builder() {
// let cors = MurCors::new()
// .allow_origin("https://example.com")
// .allow_methods(vec!["GET", "POST"])
// .allow_credentials(true)
// .max_age(3600);
// assert!(cors.is_origin_allowed("https://example.com"));
// assert!(!cors.is_origin_allowed("https://other.com"));
// assert!(cors.is_method_allowed(&Method::GET));
// assert!(cors.is_method_allowed(&Method::POST));
// assert!(!cors.is_method_allowed(&Method::DELETE));
// }
// #[test]
// fn test_cors_permissive() {
// let cors = MurCors::permissive();
// assert!(cors.is_origin_allowed("https://anything.com"));
// assert!(cors.is_method_allowed(&Method::GET));
// assert!(cors.is_method_allowed(&Method::POST));
// assert!(cors.is_method_allowed(&Method::DELETE));
// }
// #[test]
// fn test_credentials_changes_origin_mode() {
// let cors = MurCors::new().allow_any_origin().allow_credentials(true);
// assert!(matches!(
// cors.config.allowed_origins,
// AllowedOrigins::Mirror
// ));
// }
}