Add root landing page support and package static assets
This commit is contained in:
1 parent
80038fb851
commit
42a2df33dd
5 files changed
+220
-179
No files matched your search
@@ -0,0 +1,43 @@
|
||||
use axum::http::StatusCode;
|
||||
use bzod::web::pages::root_landing;
|
||||
use std::fs;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_root_landing_page() {
|
||||
// --- Test case 1: Successful serving ---
|
||||
// Read expected content
|
||||
let expected_content = fs::read_to_string("www/index.html").expect("www/index.html must exist for test");
|
||||
|
||||
let response = root_landing().await;
|
||||
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
assert!(
|
||||
response.headers().get("content-type").unwrap().to_str().unwrap().contains("text/html")
|
||||
);
|
||||
|
||||
// Convert response body to bytes using axum::body::to_bytes
|
||||
let body_bytes = axum::body::to_bytes(response.into_body(), usize::MAX)
|
||||
.await
|
||||
.unwrap();
|
||||
let body_str = String::from_utf8(body_bytes.to_vec()).unwrap();
|
||||
assert_eq!(body_str, expected_content);
|
||||
|
||||
// --- Test case 2: File Not Found fallback ---
|
||||
// Temporarily rename www/index.html to simulate file not found
|
||||
let orig_path = "www/index.html";
|
||||
let temp_path = "www/index.html.tmp_test_bak";
|
||||
fs::rename(orig_path, temp_path).unwrap();
|
||||
|
||||
let response_res = tokio::spawn(async move {
|
||||
root_landing().await
|
||||
}).await;
|
||||
|
||||
// Restore index.html immediately in case of panic/error
|
||||
let rename_res = fs::rename(temp_path, orig_path);
|
||||
|
||||
// Now verify the response status
|
||||
let response = response_res.unwrap();
|
||||
assert_eq!(response.status(), StatusCode::NOT_FOUND);
|
||||
|
||||
rename_res.unwrap();
|
||||
}
|
||||
Reference in new issue
Block a user