diff options
| author | Kevin J Hoerr <kjhoerr@protonmail.com> | 2019-10-26 17:01:08 -0400 |
|---|---|---|
| committer | Kevin J Hoerr <kjhoerr@protonmail.com> | 2019-10-26 17:01:08 -0400 |
| commit | 7fa4d1973e6f82551d842919e54629b9a7ab08f0 (patch) | |
| tree | a9796eb5141c72225502e1c1cbc378b0bef1ae20 | |
| parent | e2945a9f9eb6a4a21cdfca770edc2fb2662f05b4 (diff) | |
| download | august-offensive-7fa4d1973e6f82551d842919e54629b9a7ab08f0.tar.gz august-offensive-7fa4d1973e6f82551d842919e54629b9a7ab08f0.tar.bz2 august-offensive-7fa4d1973e6f82551d842919e54629b9a7ab08f0.zip | |
Add unit tests for routes
| -rw-r--r-- | src/routes/mod.rs | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 29ab58f..e0b17cf 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -37,3 +37,162 @@ fn destruct_path(path: &str) -> Vec<String> { .map(String::from) .collect::<Vec<String>>() } + +#[cfg(test)] +mod tests { + use super::*; + use actix_web::{http::Method, test::TestRequest}; + + #[test] + fn test_not_understood() { + // Arrange + let uri = "/api/phpmyadmin/index.rs"; + let req = gen_request(uri, None); + + // Act + let result = not_understood(req); + + // Assert + assert_eq!(result.is_ok(), true); + + let val = result.unwrap().into_inner(); + assert_eq!(val.result_type, "NOT_UNDERSTOOD"); + assert_eq!(val.content.path, vec!["api", "phpmyadmin", "index.rs"]); + } + + #[test] + fn test_not_understood_blank() { + // Arrange + let uri = "/"; + let req = gen_request(uri, None); + + // Act + let result = not_understood(req); + + // Assert + assert_eq!(result.is_ok(), true); + + let val = result.unwrap().into_inner(); + assert_eq!(val.result_type, "NOT_UNDERSTOOD"); + assert_eq!(val.content.path.is_empty(), true); + } + + #[test] + fn test_callback_get() { + // Arrange + let uri = "/api/phpmyadmin/index.rs"; + let req = gen_request(uri, None); + + let mut ref_map = HashMap::new(); + ref_map.insert("hello".to_string(), "world".to_string()); + ref_map.insert("id".to_string(), "10011".to_string()); + let query = gen_query(&ref_map); + + // Act + let result = callback(req, query); + + // Assert + assert_eq!(result.is_ok(), true); + + let val = result.unwrap().into_inner(); + assert_eq!(val.result_type, "CALLBACK"); + assert_eq!(val.content.path, vec!["api", "phpmyadmin", "index.rs"]); + assert_eq!(val.content.request, "GET"); + assert_eq!(val.content.content, ref_map); + } + + #[test] + fn test_callback_post() { + // Arrange + let uri = "/api/phpmyadmin/index.rs"; + let req = gen_request(uri, Some(Method::POST)); + + let mut ref_map = HashMap::new(); + ref_map.insert("hello".to_string(), "world".to_string()); + ref_map.insert("id".to_string(), "10012".to_string()); + let query = gen_query(&ref_map); + + // Act + let result = callback(req, query); + + // Assert + assert_eq!(result.is_ok(), true); + + let val = result.unwrap().into_inner(); + assert_eq!(val.result_type, "CALLBACK"); + assert_eq!(val.content.path, vec!["api", "phpmyadmin", "index.rs"]); + assert_eq!(val.content.request, "POST"); + assert_eq!(val.content.content, ref_map); + } + + #[test] + fn test_callback_blank() { + // Arrange + let uri = "/"; + let req = gen_request(uri, None); + let query = Query::from_query("").unwrap(); + + // Act + let result = callback(req, query); + + // Assert + assert_eq!(result.is_ok(), true); + + let val = result.unwrap().into_inner(); + assert_eq!(val.result_type, "CALLBACK"); + assert_eq!(val.content.path.is_empty(), true); + assert_eq!(val.content.request, "GET"); + assert_eq!(val.content.content.is_empty(), true); + } + + #[test] + fn test_destruct_path() { + // Arrange + let path = "/api/storm/breaking"; + + // Act + let result = destruct_path(path); + + // Assert + assert_eq!(result, vec!["api", "storm", "breaking"]); + } + + #[test] + fn test_destruct_path_blank() { + // Arrange + let path = "/"; + + // Act + let result = destruct_path(path); + + // Assert + assert_eq!(result.is_empty(), true); + } + + #[test] + fn test_destruct_path_empty() { + // Arrange + let path = ""; + + // Act + let result = destruct_path(path); + + // Assert + assert_eq!(result.is_empty(), true); + } + + fn gen_request(path: &str, method: Option<Method>) -> HttpRequest { + TestRequest::with_uri(path) + .method(method.unwrap_or(Method::GET)) + .to_http_request() + } + + fn gen_query(map: &HashMap<String, String>) -> Query<HashMap<String, String>> { + let mut query_str = String::new(); + for (key, val) in map.iter() { + query_str.push_str(&format!("&{}={}", key, val)); + } + + Query::from_query(&query_str).unwrap() + } +} |
