feat(test): health_check route

This commit is contained in:
minhtrannhat 2024-03-28 11:42:08 -04:00
parent 229ede166c
commit 8d90f9e8e6
Signed by: minhtrannhat
GPG Key ID: E13CFA85C53F8062
5 changed files with 1955 additions and 2 deletions

1909
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5,4 +5,14 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
path = "src/lib.rs"
[[bin]]
path = "src/main.rs"
name = "email_newsletter_api"
[dependencies] [dependencies]
actix-web = "4.5.1"
reqwest = "0.12.2"
tokio = { version = "1.36.0", features = ["full"] }

16
src/lib.rs Normal file
View File

@ -0,0 +1,16 @@
use actix_web::{web, App, HttpResponse, HttpServer, Responder};
async fn healthcheck_route() -> impl Responder{
return HttpResponse::Ok().finish()
}
pub async fn run() -> Result<(), std::io::Error>{
HttpServer::new(||{
App::new()
.route("/healthcheck", web::get().to(healthcheck_route))
})
.bind("127.0.0.1:8000")?
.run()
.await
}

View File

@ -1,3 +1,6 @@
fn main() { use email_newsletter_api::run;
println!("Hello, world!");
#[tokio::main]
async fn main() -> Result<(), std::io::Error>{
run().await
} }

15
tests/health_check.rs Normal file
View File

@ -0,0 +1,15 @@
#[tokio::test]
async fn health_check_works(){
spawn_app().await.expect("Failed to spawn our app.");
let client = reqwest::Client::new();
let response = client.get("http://127.0.0.1:8000/health_check").send().await.expect("Failed to execute health_check request.");
assert!(response.status().is_success());
assert_eq!(Some(0), response.content_length());
}
async fn spawn_app() -> Result<(), std::io::Error> {
email_newsletter_api::run().await
}