// Text responses use torrust_index_backend::web::api::v1::responses::ErrorResponseData; use super::responses::TextResponse; pub fn assert_response_title(response: &TextResponse, title: &str) { let title_element = format!("{title}"); assert!( response.body.contains(title), ":\n response does not contain the title element: `\"{title_element}\"`." ); } pub fn assert_text_ok(response: &TextResponse) { assert_eq!(response.status, 200); if let Some(content_type) = &response.content_type { assert_eq!(content_type, "text/html; charset=utf-8"); } } pub fn _assert_text_bad_request(response: &TextResponse) { assert_eq!(response.status, 400); if let Some(content_type) = &response.content_type { assert_eq!(content_type, "text/plain; charset=utf-8"); } } // JSON responses pub fn assert_json_ok_response(response: &TextResponse) { if let Some(content_type) = &response.content_type { assert_eq!(content_type, "application/json"); } assert_eq!(response.status, 200); } pub fn assert_json_error_response(response: &TextResponse, error: &str) { assert_eq!(response.body, "{\"error\":\"This torrent title has already been used.\"}"); let error_response_data: ErrorResponseData = serde_json::from_str(&response.body) .unwrap_or_else(|_| panic!("response {:#?} should be a ErrorResponseData", response.body)); assert_eq!(error_response_data.error, error); if let Some(content_type) = &response.content_type { assert_eq!(content_type, "application/json"); } assert_eq!(response.status, 400); }