test: add /api/hier test

This commit is contained in:
Tomáš Mládek 2023-06-08 17:54:47 +02:00
parent 0b2c0adf59
commit bca29fa542

View file

@ -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<String>,
>(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<String, Entry> =
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<dyn UpStore + Send + Sync>);
let job_container = jobs::JobContainer::new();
store.update(&upend, job_container.clone(), true).unwrap();
State {
upend,
store,