http_types/cache/cache_control/
mod.rs1#[allow(clippy::module_inception)]
10mod cache_control;
11mod cache_directive;
12
13pub use cache_control::CacheControl;
14pub use cache_directive::CacheDirective;
15
16#[cfg(test)]
17mod test {
18 use super::*;
19 use crate::headers::{Headers, CACHE_CONTROL};
20
21 #[test]
22 fn smoke() -> crate::Result<()> {
23 let mut entries = CacheControl::new();
24 entries.push(CacheDirective::Immutable);
25 entries.push(CacheDirective::NoStore);
26
27 let mut headers = Headers::new();
28 entries.apply(&mut headers);
29
30 let entries = CacheControl::from_headers(headers)?.unwrap();
31 let mut entries = entries.iter();
32 assert_eq!(entries.next().unwrap(), &CacheDirective::Immutable);
33 assert_eq!(entries.next().unwrap(), &CacheDirective::NoStore);
34 Ok(())
35 }
36
37 #[test]
38 fn ignore_unkonwn_directives() -> crate::Result<()> {
39 let mut headers = Headers::new();
40 headers.insert(CACHE_CONTROL, "barrel_roll");
41 let entries = CacheControl::from_headers(headers)?.unwrap();
42 let mut entries = entries.iter();
43 assert!(entries.next().is_none());
44 Ok(())
45 }
46
47 #[test]
48 fn bad_request_on_parse_error() {
49 let mut headers = Headers::new();
50 headers.insert(CACHE_CONTROL, "min-fresh=0.9"); let err = CacheControl::from_headers(headers).unwrap_err();
52 assert_eq!(err.status(), 400);
53 }
54}