From c14296a34d64335c6ef18616c22ebbcce167bbeb Mon Sep 17 00:00:00 2001 From: LukeMathWalker Date: Sat, 1 May 2021 16:45:19 +0100 Subject: [PATCH] Return 500 if email delivery fails. --- src/routes/subscriptions.rs | 5 +++-- tests/api/subscriptions.rs | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/routes/subscriptions.rs b/src/routes/subscriptions.rs index a63f947..bacf8d0 100644 --- a/src/routes/subscriptions.rs +++ b/src/routes/subscriptions.rs @@ -59,13 +59,14 @@ pub async fn subscribe( .commit() .await .map_err(|_| HttpResponse::InternalServerError().finish())?; - let _ = send_confirmation_email( + send_confirmation_email( &email_client, new_subscriber, &base_url.0, &subscription_token, ) - .await; + .await + .map_err(|_| HttpResponse::InternalServerError().finish())?; Ok(HttpResponse::Ok().finish()) } diff --git a/tests/api/subscriptions.rs b/tests/api/subscriptions.rs index c097ff1..53045cb 100644 --- a/tests/api/subscriptions.rs +++ b/tests/api/subscriptions.rs @@ -8,6 +8,12 @@ async fn subscribe_returns_a_200_for_valid_form_data() { let app = spawn_app().await; let body = "name=le%20guin&email=ursula_le_guin%40gmail.com"; + Mock::given(path("/email")) + .and(method("POST")) + .respond_with(ResponseTemplate::new(200)) + .mount(&app.email_server) + .await; + // Act let response = app.post_subscriptions(body.into()).await;