aboutsummaryrefslogtreecommitdiff
path: root/src/routes/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/mod.rs')
-rw-r--r--src/routes/mod.rs159
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()
+ }
+}