45 lines
1.8 KiB
Rust
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);
|
|
}
|
|
}
|
|
}
|