Files
nuchat/tests/endpoint_test.rs
Fergus Molloy be6c1b5701
All checks were successful
Cargo / build (push) Successful in 34s
Cargo / ui (push) Successful in 38s
Cargo / check (push) Successful in 37s
Cargo / test (push) Successful in 38s
implement not found for ui
2025-07-19 01:29:32 +01:00

81 lines
2.1 KiB
Rust

use axum::{
body::Body,
http::{Request, StatusCode},
};
use http_body_util::BodyExt; // for `collect`
use tower::ServiceExt; // for `oneshot`
#[tokio::test]
async fn healthcheck_returns_healthy() {
let (app, _) = nuchat::app();
let response = app
.oneshot(
Request::builder()
.uri("/api/healthcheck")
.body(Body::empty())
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let body = response.into_body().collect().await.unwrap().to_bytes();
assert_eq!(&body[..], br#"{"healthy":true}"#);
}
#[tokio::test]
async fn root_returns_spa() {
let (app, _) = nuchat::app();
let response = app
.oneshot(Request::builder().uri("/").body(Body::empty()).unwrap())
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let body = response.into_body().collect().await.unwrap().to_bytes();
let body = String::from_utf8(body.into_iter().collect()).unwrap();
assert!(body.starts_with("<!DOCTYPE html>"));
}
#[tokio::test]
async fn unkown_url_fallback_to_spa() {
let (app, _) = nuchat::app();
let response = app
.clone()
.oneshot(
Request::builder()
.uri("/asdfasdfa") // unknown url
.body(Body::empty())
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let body = response.into_body().collect().await.unwrap().to_bytes();
let body = String::from_utf8(body.into_iter().collect()).unwrap();
assert!(body.starts_with("<!DOCTYPE html>"));
let response = app
.oneshot(
Request::builder()
.uri("/api/asdfasdfa") // unknown url
.body(Body::empty())
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::NOT_FOUND);
let body = response.into_body().collect().await.unwrap().to_bytes();
let body = String::from_utf8(body.into_iter().collect()).unwrap();
assert!(body.starts_with("Not Found"));
}