diff --git a/tests/health_check.rs b/tests/health_check.rs index 8c5ca8e..b3f1bd0 100644 --- a/tests/health_check.rs +++ b/tests/health_check.rs @@ -141,3 +141,34 @@ async fn subscribe_returns_a_400_when_data_is_missing() { ); } } + +#[actix_rt::test] +async fn subscribe_returns_a_200_when_fields_are_present_but_empty() { + // Arrange + let app = spawn_app().await; + let client = reqwest::Client::new(); + let test_cases = vec![ + ("name=&email=ursula_le_guin%40gmail.com", "empty name"), + ("name=Ursula&email=", "empty email"), + ("name=Ursula&email=definitely-not-an-email", "invalid email"), + ]; + + for (body, description) in test_cases { + // Act + let response = client + .post(&format!("{}/subscriptions", &app.address)) + .header("Content-Type", "application/x-www-form-urlencoded") + .body(body) + .send() + .await + .expect("Failed to execute request."); + + // Assert + assert_eq!( + 200, + response.status().as_u16(), + "The API did not return a 200 OK when the payload was {}.", + description + ); + } +}