From bca29fa542aa711680496ad08ad95dd8cfcdafa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Thu, 8 Jun 2023 17:54:47 +0200 Subject: [PATCH] test: add /api/hier test --- cli/src/routes.rs | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/cli/src/routes.rs b/cli/src/routes.rs index 16cdd77..cb72027 100644 --- a/cli/src/routes.rs +++ b/cli/src/routes.rs @@ -970,6 +970,56 @@ mod tests { assert!(!info.desktop); } + #[actix_web::test] + async fn test_get_hier() { + let app = actix_web::test::init_service(crate::serve::get_app::< + std::path::PathBuf, + Vec, + >(None, vec![], get_state())) + .await; + + let req = actix_web::test::TestRequest::get() + .uri("/api/hier/") + .to_request(); + + let result = actix_web::test::call_service(&app, req).await; + assert_eq!(result.status(), http::StatusCode::MOVED_PERMANENTLY); + assert_eq!( + result + .headers() + .get(http::header::LOCATION) + .unwrap() + .to_str() + .unwrap(), + "../../api/hier_roots" + ); + + let req = actix_web::test::TestRequest::get() + .uri("/api/hier_roots") + .to_request(); + let roots: HashMap = + actix_web::test::call_and_read_body_json(&app, req).await; + + let mut labels = roots.values().filter(|v| v.attribute == LABEL_ATTR); + assert_eq!(labels.next().unwrap().value, "NATIVE".into()); + assert!(labels.next().is_none()); + + let req = actix_web::test::TestRequest::get() + .uri("/api/hier/NATIVE/hello-world.txt") + .to_request(); + let result = actix_web::test::call_service(&app, req).await; + assert_eq!(result.status(), http::StatusCode::FOUND); + assert_eq!( + result + .headers() + .get(http::header::LOCATION) + .unwrap() + .to_str() + .unwrap(), + "../../api/obj/zQmbuQbmm7z1AeZjbBw2iX1557ZoUFQ8vrMKaaw2UYrt5zG" + ); + } + fn get_state() -> State { // Prepare temporary filesystem structure let temp_dir = TempDir::new().unwrap(); @@ -994,6 +1044,8 @@ mod tests { ) as Box); let job_container = jobs::JobContainer::new(); + store.update(&upend, job_container.clone(), true).unwrap(); + State { upend, store,