diff --git a/src/headers.rs b/src/headers.rs index 20ef6e8..ead2c94 100644 --- a/src/headers.rs +++ b/src/headers.rs @@ -14,7 +14,7 @@ pub fn get_header_value(request: &Request, value: String) -> String { pub fn get_header_user_agent(request: &Request) -> String { - return get_header_value("User-Agent"); + return get_header_value(request, "User-Agent"); } pub fn get_header_cookies(request: &Request) -> String { @@ -38,3 +38,45 @@ pub fn get_header_cookies(request: &Request) -> String { return to_string(&cookies).unwrap(); } + + +#[cfg(test)] +mod tests { + use super::*; + use lambda_http::http::header::{HeaderMap, HeaderValue}; + use lambda_http::{Body, Request}; + + fn mock_request(headers: Vec<(&str, &str)>) -> Request { + let mut header_map = HeaderMap::new(); + for (key, value) in headers { + header_map.insert(key, HeaderValue::from_static(value)); + } + + Request::new(Body::Empty).with_headers(header_map) + } + + #[test] + fn test_get_header_value_known() { + let request = mock_request(vec![("User-Agent", "TestAgent")]); + assert_eq!(get_header_value(&request, "User-Agent".to_string()), "TestAgent"); + } + + #[test] + fn test_get_header_value_unknown() { + let request = mock_request(vec![]); + assert_eq!(get_header_value(&request, "User-Agent".to_string()), "Unknown header value"); + } + + #[test] + fn test_get_header_user_agent() { + let request = mock_request(vec![("User-Agent", "TestAgent")]); + assert_eq!(get_header_user_agent(&request), "TestAgent"); + } + + #[test] + fn test_get_header_cookies() { + let request = mock_request(vec![("Cookie", "username=user; session=token")]); + assert_eq!(get_header_cookies(&request), r#"{"session":"token","username":"user"}"#); + } +} +