From 4684e482fa9bc72bd6069fd3e8162857431b8932 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 24 Jan 2023 22:59:45 +0100 Subject: [PATCH] Add tests for http based checkers --- Cargo.lock | 1 + Cargo.toml | 1 + src/checker/actuator.rs | 48 +++++++++++++++++++++++++++++++++++++++++ src/checker/http.rs | 34 +++++++++++++++++++++++++++++ src/checker/mod.rs | 1 + 5 files changed, 85 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f30d834..0197e8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -80,6 +80,7 @@ dependencies = [ "async-trait", "chrono", "dirs", + "hyper", "regex", "reqwest", "serde", diff --git a/Cargo.toml b/Cargo.toml index 49b9f4d..8f129a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ tokio = { version = "1", features = ["macros", "rt-multi-thread"] } toml = "*" [dev-dependencies] +hyper = "*" serde_derive = "1" [profile.release] diff --git a/src/checker/actuator.rs b/src/checker/actuator.rs index 6dcf356..19c4068 100644 --- a/src/checker/actuator.rs +++ b/src/checker/actuator.rs @@ -36,3 +36,51 @@ impl HttpBasedChecker for Checker<'_> { self.check_config } } + +#[cfg(test)] +mod tests { + use crate::checker::actuator::Checker; + use crate::checker::{CheckState, HttpBasedChecker}; + use hyper::Response as hyper_Response; + use reqwest::Response; + use serde_json::json; + + #[tokio::test] + async fn test_should_return_up_state() { + let response = Response::from( + hyper_Response::builder() + .status(200) + .body(json!({"status":"UP"}).to_string()) + .unwrap(), + ); + let check_state = Checker::check_response(response).await; + + assert_eq!(check_state, CheckState::Up) + } + + #[tokio::test] + async fn test_should_return_warn_state_on_status_not_up() { + let response = Response::from( + hyper_Response::builder() + .status(200) + .body(json!({"status":"DOWN"}).to_string()) + .unwrap(), + ); + let check_state = Checker::check_response(response).await; + + assert_eq!(check_state, CheckState::Warn) + } + + #[tokio::test] + async fn test_should_return_warn_state_on_response_not_success() { + let response = Response::from( + hyper_Response::builder() + .status(404) + .body(String::from("Actuator Response Not Found")) + .unwrap(), + ); + let check_state = Checker::check_response(response).await; + + assert_eq!(check_state, CheckState::Warn) + } +} diff --git a/src/checker/http.rs b/src/checker/http.rs index 2520066..7d5fa20 100644 --- a/src/checker/http.rs +++ b/src/checker/http.rs @@ -28,3 +28,37 @@ impl HttpBasedChecker for Checker<'_> { self.check_config } } + +#[cfg(test)] +mod tests { + use crate::checker::http::Checker; + use crate::checker::{CheckState, HttpBasedChecker}; + use hyper::Response as hyper_Response; + use reqwest::Response; + + #[tokio::test] + async fn test_should_return_up_state() { + let response = Response::from( + hyper_Response::builder() + .status(200) + .body("Any response") + .unwrap(), + ); + let check_state = Checker::check_response(response).await; + + assert_eq!(check_state, CheckState::Up) + } + + #[tokio::test] + async fn test_should_return_warn_state_on_response_not_success() { + let response = Response::from( + hyper_Response::builder() + .status(404) + .body(String::from("Http Response Not Found")) + .unwrap(), + ); + let check_state = Checker::check_response(response).await; + + assert_eq!(check_state, CheckState::Warn) + } +} diff --git a/src/checker/mod.rs b/src/checker/mod.rs index c04c0a1..b82cfb6 100644 --- a/src/checker/mod.rs +++ b/src/checker/mod.rs @@ -40,6 +40,7 @@ impl Display for CheckResult { } } +#[derive(Debug, PartialEq)] pub enum CheckState { Up, Warn,