rama_http_headers/common/
access_control_request_headers.rs1use rama_http_types::HeaderName;
2
3derive_non_empty_flat_csv_header! {
4 #[header(name = ACCESS_CONTROL_REQUEST_HEADERS, sep = Comma)]
5 #[derive(Clone, Debug)]
6 pub struct AccessControlRequestHeaders(pub NonEmptyVec<HeaderName>);
36}
37
38#[cfg(test)]
39mod tests {
40 use super::super::{test_decode, test_encode};
41 use super::*;
42 use rama_utils::collections::non_empty_vec;
43
44 #[test]
45 fn decode_header_single() {
46 let AccessControlRequestHeaders(allow_headers) = test_decode(&["foo, bar"]).unwrap();
47
48 assert_eq!(allow_headers.len(), 2);
49 assert_eq!(allow_headers[0], "foo");
50 assert_eq!(allow_headers[1], "bar");
51 }
52
53 #[test]
54 fn decode_header_multi() {
55 let AccessControlRequestHeaders(allow_headers) = test_decode(&["foo, bar", "baz"]).unwrap();
56
57 assert_eq!(allow_headers.len(), 3);
58 assert_eq!(allow_headers[0], "foo");
59 assert_eq!(allow_headers[1], "bar");
60 assert_eq!(allow_headers[2], "baz");
61 }
62
63 #[test]
64 fn encode() {
65 let allow = AccessControlRequestHeaders(non_empty_vec![
66 ::rama_http_types::header::CACHE_CONTROL,
67 ::rama_http_types::header::IF_RANGE,
68 ]);
69
70 let headers = test_encode(allow);
71 assert_eq!(
72 headers["access-control-request-headers"],
73 "cache-control, if-range"
74 );
75 }
76
77 #[test]
78 fn decode_with_empty_header_value() {
79 assert!(test_decode::<AccessControlRequestHeaders>(&[""]).is_none());
80 }
81
82 #[test]
83 fn decode_with_no_headers() {
84 assert!(test_decode::<AccessControlRequestHeaders>(&[]).is_none());
85 }
86
87 #[test]
88 fn decode_with_invalid_value_str() {
89 assert!(test_decode::<AccessControlRequestHeaders>(&["foo foo, bar"]).is_none());
90 }
91}