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); } } }