extern crate icarus_auth; use crate::icarus_auth::callers; use axum::Extension; use axum::body::Body; // use axum::response::Response; use axum::{ Router, http::{Request, StatusCode}, routing::get, }; use hyper::client::conn; use sqlx::PgPool; use sqlx::postgres::PgPoolOptions; use testcontainers_modules::{postgres, testcontainers::runners::AsyncRunner}; // use hyper::client; // use sqlx::postgres; // use http::{Request, StatusCode}; // use serde_json::json; // use tower::ServiceExt; // for `.oneshot()` use tower::util::ServiceExt; // use testcontainers_modules::testcontainers::core::client:: async fn setup_test(pool: sqlx::PgPool) -> Router { Router::new() .route(callers::endpoints::DBTEST, get(callers::common::db_ping)) .layer(Extension(pool)) } #[tokio::test] async fn test_hello_world() { let app = Router::new().route(callers::endpoints::ROOT, get(callers::common::root)); // Replace with your handler let response = app .oneshot( Request::builder() .uri(callers::endpoints::ROOT) .body(Body::empty()) .unwrap(), ) .await .unwrap(); assert_eq!(response.status(), StatusCode::OK); let body = String::from_utf8( axum::body::to_bytes(response.into_body(), usize::MAX) .await .unwrap() .to_vec(), ) .unwrap(); assert_eq!(body, "Hello, World!"); } #[tokio::test] async fn test_db_health_check() { let container = testcontainers_modules::postgres::Postgres::default() .start() .await .unwrap(); let host_ip = container.get_host().await.unwrap(); let host_port = container.get_host_port_ipv4(5432).await.unwrap(); let conn_string = &format!( "postgres://postgres:postgres@localhost:{}/postgres", host_port ); println!("Test Database: {}", conn_string); let test_pool = PgPoolOptions::new().connect(conn_string).await.unwrap(); }