aboutsummaryrefslogtreecommitdiff
path: root/src/routes/callback.rs
diff options
context:
space:
mode:
authorKevin J Hoerr <kjhoerr@submelon.tech>2019-10-30 13:14:09 -0400
committerKevin J Hoerr <kjhoerr@submelon.tech>2019-10-30 13:14:09 -0400
commit82c3cc2c1952020ef13c330047cbc8ba1dc7cc75 (patch)
treef8b4a170228bc10677f4c928246823988ff9be19 /src/routes/callback.rs
parentd133f7a23aa758c7ecd65c9e32c711e8475d0e06 (diff)
downloadaugust-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.rs90
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