Files
RustProxy/src/admin/documentation/tests.rs
T
2026-10-04 11:15:58 +02:00

45 lines
1.8 KiB
Rust

mod tests {
use super::*;
#[test]
fn reader_bundle_contains_embedded_project_and_web_server_docs() {
let value: Value = serde_json::from_slice(reader_bundle()).unwrap();
let documents = value["documents"].as_array().unwrap();
assert!(documents.iter().any(|doc| doc["path"] == "README.md"));
assert!(documents.iter().any(|doc| doc["path"] == "docs/WEB_SERVER.md"));
assert!(documents.iter().any(|doc| doc["path"] == "docs/PHP_FPM.md"));
assert!(documents.iter().all(|doc| {
doc["path"].as_str().is_some_and(|value| !value.is_empty())
&& doc["title"].as_str().is_some_and(|value| !value.is_empty())
&& doc["category"].as_str().is_some_and(|value| !value.is_empty())
&& doc["content"].as_str().is_some_and(|value| !value.is_empty())
}));
}
#[tokio::test]
async fn fixed_vendor_names_return_embedded_assets_with_expected_types() {
for (name, expected_type) in [
("swagger-ui-bundle.js", "text/javascript; charset=utf-8"),
("swagger-ui.css", "text/css; charset=utf-8"),
("licenses.txt", "text/plain; charset=utf-8"),
] {
let response = asset(name);
assert_eq!(response.status(), StatusCode::OK);
assert_eq!(response.headers()["content-type"], expected_type);
let bytes = axum::body::to_bytes(response.into_body(), 16 * 1024 * 1024)
.await
.unwrap();
assert!(!bytes.is_empty(), "{name}");
}
for name in [
"../Cargo.toml",
"index.html",
"openapi.json",
"source.json",
"unknown.js",
] {
assert_eq!(asset(name).status(), StatusCode::NOT_FOUND);
}
}
}