feat(server): wire config, database, and HTTP serving
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use api::AppState;
|
||||
use db::Db;
|
||||
use server::serve;
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
#[tokio::test]
|
||||
async fn serves_health_live_over_tcp() {
|
||||
let database_url =
|
||||
std::env::var("DATABASE_URL").expect("DATABASE_URL must be set for this test");
|
||||
let db = Db::connect(&database_url)
|
||||
.await
|
||||
.expect("connect to database");
|
||||
let state = AppState {
|
||||
db,
|
||||
app_name: "Test".to_string(),
|
||||
};
|
||||
|
||||
let listener = TcpListener::bind("127.0.0.1:0").await.unwrap();
|
||||
let addr: SocketAddr = listener.local_addr().unwrap();
|
||||
|
||||
let handle = tokio::spawn(async move {
|
||||
serve(listener, state).await.unwrap();
|
||||
});
|
||||
|
||||
let url = format!("http://{addr}/health/live");
|
||||
let body: serde_json::Value = reqwest::get(&url)
|
||||
.await
|
||||
.expect("request succeeds")
|
||||
.json()
|
||||
.await
|
||||
.expect("json body");
|
||||
assert_eq!(body["status"], "ok");
|
||||
|
||||
handle.abort();
|
||||
}
|
||||
Reference in New Issue
Block a user