1
0
mirror of https://github.com/pcvolkmer/checkbar.git synced 2025-04-19 11:06:50 +00:00

Add tests for http based checkers

This commit is contained in:
Paul-Christian Volkmer 2023-01-24 22:59:45 +01:00
parent 8d312f86b5
commit 4684e482fa
5 changed files with 85 additions and 0 deletions

1
Cargo.lock generated
View File

@ -80,6 +80,7 @@ dependencies = [
"async-trait", "async-trait",
"chrono", "chrono",
"dirs", "dirs",
"hyper",
"regex", "regex",
"reqwest", "reqwest",
"serde", "serde",

View File

@ -17,6 +17,7 @@ tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
toml = "*" toml = "*"
[dev-dependencies] [dev-dependencies]
hyper = "*"
serde_derive = "1" serde_derive = "1"
[profile.release] [profile.release]

View File

@ -36,3 +36,51 @@ impl HttpBasedChecker for Checker<'_> {
self.check_config 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)
}
}

View File

@ -28,3 +28,37 @@ impl HttpBasedChecker for Checker<'_> {
self.check_config 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)
}
}

View File

@ -40,6 +40,7 @@ impl Display for CheckResult {
} }
} }
#[derive(Debug, PartialEq)]
pub enum CheckState { pub enum CheckState {
Up, Up,
Warn, Warn,