diff --git a/src/api.rs b/src/api.rs index fd24877..b48fe49 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1088,23 +1088,32 @@ mod tests { ingest_lines(&engine, 0, &["request path=/a", "level=info x=1"]).await; let (_, before) = get_json(&app, "/api/params").await; - let before_names: Vec<&str> = - before.as_array().unwrap().iter().map(|p| p["name"].as_str().unwrap()).collect(); - assert!(before_names.contains(&"path")); - assert!(before_names.contains(&"level")); - assert!(before_names.contains(&"x")); + // Ticket 055 merges the three non-deletable `ottyl_*` reserved names into this listing + // too; `DELETE /api/params` (ticket 052) only ever clears real declarations, so the + // reserved ones must be excluded from the "everything got removed" count below. + let before_declared: Vec<&str> = before + .as_array() + .unwrap() + .iter() + .filter(|p| p["reserved"] != true) + .map(|p| p["name"].as_str().unwrap()) + .collect(); + assert!(before_declared.contains(&"path")); + assert!(before_declared.contains(&"level")); + assert!(before_declared.contains(&"x")); let (status, result) = send_json(&app, "DELETE", "/api/params", json!({})).await; assert_eq!(status, StatusCode::OK); - assert_eq!(result["removed"], before_names.len() as u64); + assert_eq!(result["removed"], before_declared.len() as u64); // Re-derived without any new ingest — same three keys come back, now all auto-derived. assert_eq!(result["reextracted"], 3); assert_eq!(result["logs_considered"], 2); let (_, after) = get_json(&app, "/api/params").await; - let after_params = after.as_array().unwrap(); - assert_eq!(after_params.len(), 3); - assert!(after_params.iter().all(|p| p["auto_derived"] == true)); + let after_declared: Vec<_> = + after.as_array().unwrap().iter().filter(|p| p["reserved"] != true).collect(); + assert_eq!(after_declared.len(), 3); + assert!(after_declared.iter().all(|p| p["auto_derived"] == true)); // The clear persisted: "path" (the only manually-declared, profile-stored param) doesn't // reappear from settings.json on a fresh load.