diff options
| author | Kevin J Hoerr <kjhoerr@submelon.tech> | 2019-10-30 13:14:09 -0400 |
|---|---|---|
| committer | Kevin J Hoerr <kjhoerr@submelon.tech> | 2019-10-30 13:14:09 -0400 |
| commit | 82c3cc2c1952020ef13c330047cbc8ba1dc7cc75 (patch) | |
| tree | f8b4a170228bc10677f4c928246823988ff9be19 /src/routes/callback.rs | |
| parent | d133f7a23aa758c7ecd65c9e32c711e8475d0e06 (diff) | |
| download | august-offensive-82c3cc2c1952020ef13c330047cbc8ba1dc7cc75.tar.gz august-offensive-82c3cc2c1952020ef13c330047cbc8ba1dc7cc75.tar.bz2 august-offensive-82c3cc2c1952020ef13c330047cbc8ba1dc7cc75.zip | |
Refactor routes and scope into routes module
Diffstat (limited to 'src/routes/callback.rs')
| -rw-r--r-- | src/routes/callback.rs | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/routes/callback.rs b/src/routes/callback.rs new file mode 100644 index 0000000..e81a080 --- /dev/null +++ b/src/routes/callback.rs @@ -0,0 +1,90 @@ +use routes::*; + +// Sends Callback message with information from HttpRequest. +pub fn callback(req: HttpRequest, query: Query<HashMap<String, String>>) -> JsonMessage<Callback> { + let path = req.path(); + let method = req.method().as_str(); + + let callback = Callback { + path: destruct_path(path), + request: String::from(method), + content: query.into_inner(), + }; + + Ok(Json(callback.as_outgoing())) +} + +#[cfg(test)] +mod tests { + use super::*; + use routes::tests::*; + use actix_web::http::Method; + + #[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!(result.is_ok()); + + 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!(result.is_ok()); + + 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!(result.is_ok()); + + let val = result.unwrap().into_inner(); + assert_eq!(val.result_type, "CALLBACK"); + assert!(val.content.path.is_empty()); + assert_eq!(val.content.request, "GET"); + assert!(val.content.content.is_empty()); + } +}
\ No newline at end of file |
