From 4e9a5575a6a37096e9b1656e9612cc7cd6b40906 Mon Sep 17 00:00:00 2001 From: Jethro Beekman Date: Mon, 18 Sep 2017 22:41:00 -0700 Subject: [PATCH] fix(transport-stub): Make Stub transport independent from SMTP --- lettre/src/stub/mod.rs | 17 +++++------------ lettre/tests/transport_stub.rs | 14 +++----------- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/lettre/src/stub/mod.rs b/lettre/src/stub/mod.rs index a33f2d3..d0f385b 100644 --- a/lettre/src/stub/mod.rs +++ b/lettre/src/stub/mod.rs @@ -25,33 +25,30 @@ use EmailTransport; use SendableEmail; -use smtp::error::{Error, SmtpResult}; -use smtp::response::{Code, Response}; use std::io::Read; -use std::str::FromStr; /// This transport logs the message envelope and returns the given response #[derive(Debug)] pub struct StubEmailTransport { - response: Response, + response: StubResult, } impl StubEmailTransport { /// Creates a new transport that always returns the given response - pub fn new(response: Response) -> StubEmailTransport { + pub fn new(response: StubResult) -> StubEmailTransport { StubEmailTransport { response: response } } /// Creates a new transport that always returns a success response pub fn new_positive() -> StubEmailTransport { StubEmailTransport { - response: Response::new(Code::from_str("200").unwrap(), vec!["ok".to_string()]), + response: Ok(()), } } } /// SMTP result type -pub type StubResult = SmtpResult; +pub type StubResult = Result<(), ()>; impl<'a, T: Read + 'a> EmailTransport<'a, T, StubResult> for StubEmailTransport { fn send>(&mut self, email: &'a U) -> StubResult { @@ -62,10 +59,6 @@ impl<'a, T: Read + 'a> EmailTransport<'a, T, StubResult> for StubEmailTransport email.from(), email.to() ); - if self.response.is_positive() { - Ok(self.response.clone()) - } else { - Err(Error::from(self.response.clone())) - } + self.response } } diff --git a/lettre/tests/transport_stub.rs b/lettre/tests/transport_stub.rs index e8fac19..23976cf 100644 --- a/lettre/tests/transport_stub.rs +++ b/lettre/tests/transport_stub.rs @@ -1,16 +1,12 @@ extern crate lettre; use lettre::{EmailAddress, EmailTransport, SimpleSendableEmail}; -use lettre::smtp::response::{Code, Response}; use lettre::stub::StubEmailTransport; -use std::str::FromStr; #[test] fn stub_transport() { let mut sender_ok = StubEmailTransport::new_positive(); - let response_ok = Response::new(Code::from_str("200").unwrap(), vec!["ok".to_string()]); - let response_ko = Response::new(Code::from_str("510").unwrap(), vec!["ko".to_string()]); - let mut sender_ko = StubEmailTransport::new(response_ko); + let mut sender_ko = StubEmailTransport::new(Err(())); let email = SimpleSendableEmail::new( EmailAddress::new("user@localhost".to_string()), @@ -19,10 +15,6 @@ fn stub_transport() { "Hello stub".to_string(), ); - let result_ok = sender_ok.send(&email).unwrap(); - let result_ko = sender_ko.send(&email); - - assert_eq!(result_ok, response_ok); - assert!(result_ko.is_err()); - + sender_ok.send(&email).unwrap(); + sender_ko.send(&email).unwrap_err(); }