mirror of
https://github.com/kristoferssolo/zero2prod.git
synced 2025-10-21 20:10:40 +00:00
test: refactor tests
This commit is contained in:
parent
c79eca74ee
commit
ff20460c13
19
Cargo.lock
generated
19
Cargo.lock
generated
@ -1038,23 +1038,6 @@ dependencies = [
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower-http"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
|
||||
dependencies = [
|
||||
"bitflags 2.5.0",
|
||||
"bytes",
|
||||
"http",
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"pin-project-lite",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower-layer"
|
||||
version = "0.3.2"
|
||||
@ -1371,6 +1354,4 @@ dependencies = [
|
||||
"axum",
|
||||
"reqwest",
|
||||
"tokio",
|
||||
"tower",
|
||||
"tower-http",
|
||||
]
|
||||
|
||||
@ -16,10 +16,8 @@ name = "zero2prod"
|
||||
[dependencies]
|
||||
axum = "0.7"
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
tower-http = { version = "0.5", features = ["trace"] }
|
||||
|
||||
[dev-dependencies]
|
||||
tower = { version = "0.4", features = ["util"] }
|
||||
reqwest = "0.12"
|
||||
|
||||
[package.metadata.clippy]
|
||||
|
||||
@ -1,12 +1,10 @@
|
||||
use axum::{extract::Path, http::StatusCode, response::IntoResponse, routing::get, Router};
|
||||
use tower_http::trace::TraceLayer;
|
||||
|
||||
pub fn app() -> Router {
|
||||
Router::new()
|
||||
.route("/", get(root))
|
||||
.route("/:name", get(greet))
|
||||
.route("/health_check", get(health_check))
|
||||
.layer(TraceLayer::new_for_http())
|
||||
}
|
||||
|
||||
async fn root() -> impl IntoResponse {
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use zero2prod::app;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let addr = SocketAddr::from(([127, 0, 0, 1], 8000));
|
||||
let listener = TcpListener::bind(addr).await.unwrap();
|
||||
axum::serve(listener, app()).await.unwrap();
|
||||
let listener = TcpListener::bind(addr)
|
||||
.await
|
||||
.expect("Failed to bind random port");
|
||||
axum::serve(listener, zero2prod::app()).await.unwrap();
|
||||
}
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use zero2prod::app;
|
||||
|
||||
#[tokio::test]
|
||||
async fn health_check() {
|
||||
spawn_app();
|
||||
let address = spawn_app().await;
|
||||
let url = format!("{}/health_check", &address);
|
||||
let client = reqwest::Client::new();
|
||||
let response = client
|
||||
.get("http://localhost:8000/health_check")
|
||||
.get(&url)
|
||||
.send()
|
||||
.await
|
||||
.expect("Failed to execute request.");
|
||||
.expect("Failed to execute request");
|
||||
|
||||
assert!(response.status().is_success());
|
||||
assert_eq!(Some(0), response.content_length());
|
||||
}
|
||||
|
||||
fn spawn_app() {
|
||||
let addr = SocketAddr::from(([127, 0, 0, 1], 8000));
|
||||
let _ = tokio::spawn(async move {
|
||||
let listener = TcpListener::bind(addr).await.unwrap();
|
||||
axum::serve(listener, app()).await.unwrap();
|
||||
});
|
||||
async fn spawn_app() -> String {
|
||||
let listener = TcpListener::bind("127.0.0.1:0")
|
||||
.await
|
||||
.expect("Failed to bind random port");
|
||||
let port = listener.local_addr().unwrap().port();
|
||||
let _ = tokio::spawn(async move { axum::serve(listener, zero2prod::app()).await.unwrap() });
|
||||
format!("http://127.0.0.1:{}", port)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user