From f80a42e666b9bece71b0fea5fa741f6122ebd784 Mon Sep 17 00:00:00 2001 From: Antoine Gersant Date: Thu, 3 Dec 2020 21:31:14 -0800 Subject: [PATCH] Trailing slash tests (#105) * Better test names * Add tests for recent/random endpoints with trailing slash --- src/service/test/collection.rs | 44 +++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/src/service/test/collection.rs b/src/service/test/collection.rs index f994e8f..f746fe9 100644 --- a/src/service/test/collection.rs +++ b/src/service/test/collection.rs @@ -1,10 +1,16 @@ -use http::StatusCode; +use http::{Request, StatusCode}; use std::path::{Path, PathBuf}; use crate::index; use crate::service::test::{constants::*, ServiceType, TestService}; use crate::test_name; +fn add_trailing_slash(request: &mut Request) { + *request.uri_mut() = (request.uri().to_string().trim_end_matches("/").to_string() + "/") + .parse() + .unwrap(); +} + #[test] fn test_browse_requires_auth() { let mut service = ServiceType::new(&test_name!()); @@ -117,7 +123,7 @@ fn test_random_requires_auth() { } #[test] -fn test_random() { +fn test_random_golden_path() { let mut service = ServiceType::new(&test_name!()); service.complete_initial_setup(); service.login_admin(); @@ -131,6 +137,22 @@ fn test_random() { assert_eq!(entries.len(), 3); } +#[test] +fn test_random_with_trailing_slash() { + let mut service = ServiceType::new(&test_name!()); + service.complete_initial_setup(); + service.login_admin(); + service.index(); + service.login(); + + let mut request = service.request_builder().random(); + add_trailing_slash(&mut request); + let response = service.fetch_json::<_, Vec>(&request); + assert_eq!(response.status(), StatusCode::OK); + let entries = response.body(); + assert_eq!(entries.len(), 3); +} + #[test] fn test_recent_requires_auth() { let mut service = ServiceType::new(&test_name!()); @@ -140,7 +162,7 @@ fn test_recent_requires_auth() { } #[test] -fn test_recent() { +fn test_recent_golden_path() { let mut service = ServiceType::new(&test_name!()); service.complete_initial_setup(); service.login_admin(); @@ -154,6 +176,22 @@ fn test_recent() { assert_eq!(entries.len(), 3); } +#[test] +fn test_recent_with_trailing_slash() { + let mut service = ServiceType::new(&test_name!()); + service.complete_initial_setup(); + service.login_admin(); + service.index(); + service.login(); + + let mut request = service.request_builder().recent(); + add_trailing_slash(&mut request); + let response = service.fetch_json::<_, Vec>(&request); + assert_eq!(response.status(), StatusCode::OK); + let entries = response.body(); + assert_eq!(entries.len(), 3); +} + #[test] fn test_search_requires_auth() { let mut service = ServiceType::new(&test_name!());