rama_http_headers/common/
allow.rs1use rama_http_types::Method;
2
3derive_non_empty_flat_csv_header! {
4 #[header(name = ALLOW, sep = Comma)]
5 #[derive(Clone, Debug, PartialEq)]
6 pub struct Allow(pub NonEmptySmallVec<7, Method>);
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_smallvec;
43
44 #[test]
45 fn decode_single() {
46 let Allow(allowed) = test_decode(&["GET, PUT"]).unwrap();
47
48 assert_eq!(allowed.len(), 2);
49 assert_eq!(allowed[0], Method::GET);
50 assert_eq!(allowed[1], Method::PUT);
51 }
52
53 #[test]
54 fn decode_multi() {
55 let Allow(allowed) = test_decode(&["GET, PUT", "POST"]).unwrap();
56
57 assert_eq!(allowed.len(), 3);
58 assert_eq!(allowed[0], Method::GET);
59 assert_eq!(allowed[1], Method::PUT);
60 assert_eq!(allowed[2], Method::POST);
61 }
62
63 #[test]
64 fn decode_single_empty_value() {
65 assert!(test_decode::<Allow>(&[""]).is_none());
66 }
67
68 #[test]
69 fn decode_single_no_header_values() {
70 assert!(test_decode::<Allow>(&[]).is_none());
71 }
72
73 #[test]
74 fn encode() {
75 let allow = Allow(non_empty_smallvec![Method::GET, Method::PUT]);
76
77 let headers = test_encode(allow);
78 assert_eq!(headers["allow"], "GET, PUT");
79 }
80}