diff --git a/.travis.yml b/.travis.yml index 014d661..2ba95d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ sudo: false cache: apt: true + pip: true directories: - target/debug/deps - target/debug/build diff --git a/benches/smtp.rs b/benches/smtp.rs index 3ca773b..cd9dac5 100644 --- a/benches/smtp.rs +++ b/benches/smtp.rs @@ -10,9 +10,9 @@ use lettre::email::EmailBuilder; #[bench] fn bench_simple_send(b: &mut test::Bencher) { + let sender = SmtpTransportBuilder::new("127.0.0.1:2525").unwrap().build(); + let mut mailer = Mailer::new(sender); b.iter(|| { - let sender = SmtpTransportBuilder::new("127.0.0.1:2525").unwrap().build(); - let mut mailer = Mailer::new(sender); let email = EmailBuilder::new() .to("root@localhost") .from("user@localhost") @@ -22,13 +22,15 @@ fn bench_simple_send(b: &mut test::Bencher) { .unwrap(); let result = mailer.send(email); assert!(result.is_ok()); - mailer.close() }); } #[bench] fn bench_reuse_send(b: &mut test::Bencher) { - let sender = SmtpTransportBuilder::new("127.0.0.1:2525").unwrap().connection_reuse(true).build(); + let sender = SmtpTransportBuilder::new("127.0.0.1:2525") + .unwrap() + .connection_reuse(true) + .build(); let mut mailer = Mailer::new(sender); b.iter(|| { let email = EmailBuilder::new() diff --git a/src/transport/error.rs b/src/transport/error.rs index ced0e2b..e14db85 100644 --- a/src/transport/error.rs +++ b/src/transport/error.rs @@ -83,8 +83,3 @@ impl From<&'static str> for Error { /// SMTP result type pub type EmailResult = Result; - -#[cfg(test)] -mod test { -// TODO -} diff --git a/src/transport/mod.rs b/src/transport/mod.rs index b6681f7..c1ce133 100644 --- a/src/transport/mod.rs +++ b/src/transport/mod.rs @@ -1,7 +1,8 @@ //! TODO pub mod smtp; -pub mod stub; pub mod error; +pub mod stub; +// pub mod file; use transport::error::EmailResult; diff --git a/src/transport/smtp/client/mod.rs b/src/transport/smtp/client/mod.rs index abb25b2..4971b9d 100644 --- a/src/transport/smtp/client/mod.rs +++ b/src/transport/smtp/client/mod.rs @@ -27,8 +27,8 @@ fn escape_dot(string: &str) -> String { } else { string.to_string() } - .replace("\r.", "\r..") - .replace("\n.", "\n..") + .replace("\r.", "\r..") + .replace("\n.", "\n..") } /// Returns the string replacing all the CRLF with "\" diff --git a/src/transport/stub/mod.rs b/src/transport/stub/mod.rs index 250df1e..4cddf00 100644 --- a/src/transport/stub/mod.rs +++ b/src/transport/stub/mod.rs @@ -1,11 +1,12 @@ -//! TODO +//! This transport is a stub that only logs the message, and always returns +//! succes use transport::error::EmailResult; use transport::smtp::response::Response; use transport::EmailTransport; use transport::smtp::response::{Code, Category, Severity}; -/// TODO +/// This transport does nothing exept logging the message enveloppe pub struct StubEmailTransport; impl EmailTransport for StubEmailTransport { diff --git a/tests/lib.rs b/tests/lib.rs index b4be044..57e5150 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -1,71 +1,4 @@ extern crate lettre; -use std::sync::{Arc, Mutex}; -use std::thread; - -use lettre::transport::smtp::SmtpTransportBuilder; -use lettre::transport::EmailTransport; -use lettre::mailer::Mailer; -use lettre::email::EmailBuilder; - -#[test] -fn simple_sender() { - let sender = SmtpTransportBuilder::localhost().unwrap().build(); - let mut mailer = Mailer::new(sender); - let email = EmailBuilder::new() - .to("root@localhost") - .from("user@localhost") - .body("Hello World!") - .subject("Hello") - .build() - .unwrap(); - let result = mailer.send(email); - assert!(result.is_ok()); -} - -#[test] -fn multithreaded_sender() { - let sender = SmtpTransportBuilder::localhost() - .unwrap() - .hello_name("localhost") - .connection_reuse(true) - .build(); - let mailer = Arc::new(Mutex::new(Mailer::new(sender))); - - let mut threads = Vec::new(); - for _ in 1..5 { - - let th_mailer = mailer.clone(); - threads.push(thread::spawn(move || { - - let email = EmailBuilder::new() - .to("root@localhost") - .from("user@localhost") - .body("Hello World!") - .subject("Hello") - .build() - .unwrap(); - - let result = th_mailer.lock().unwrap().send(email); - assert!(result.is_ok()); - })); - } - - for thread in threads { - let _ = thread.join(); - } - - let email = EmailBuilder::new() - .to("root@localhost") - .from("user@localhost") - .body("Hello World!") - .subject("Hello Bis") - .build() - .unwrap(); - - let mut mailer = mailer.lock().unwrap(); - let final_result = mailer.send(email); - mailer.close(); - - assert!(final_result.is_ok()); -} +mod transport_smtp; +mod transport_stub; diff --git a/tests/transport_smtp.rs b/tests/transport_smtp.rs new file mode 100644 index 0000000..b4be044 --- /dev/null +++ b/tests/transport_smtp.rs @@ -0,0 +1,71 @@ +extern crate lettre; + +use std::sync::{Arc, Mutex}; +use std::thread; + +use lettre::transport::smtp::SmtpTransportBuilder; +use lettre::transport::EmailTransport; +use lettre::mailer::Mailer; +use lettre::email::EmailBuilder; + +#[test] +fn simple_sender() { + let sender = SmtpTransportBuilder::localhost().unwrap().build(); + let mut mailer = Mailer::new(sender); + let email = EmailBuilder::new() + .to("root@localhost") + .from("user@localhost") + .body("Hello World!") + .subject("Hello") + .build() + .unwrap(); + let result = mailer.send(email); + assert!(result.is_ok()); +} + +#[test] +fn multithreaded_sender() { + let sender = SmtpTransportBuilder::localhost() + .unwrap() + .hello_name("localhost") + .connection_reuse(true) + .build(); + let mailer = Arc::new(Mutex::new(Mailer::new(sender))); + + let mut threads = Vec::new(); + for _ in 1..5 { + + let th_mailer = mailer.clone(); + threads.push(thread::spawn(move || { + + let email = EmailBuilder::new() + .to("root@localhost") + .from("user@localhost") + .body("Hello World!") + .subject("Hello") + .build() + .unwrap(); + + let result = th_mailer.lock().unwrap().send(email); + assert!(result.is_ok()); + })); + } + + for thread in threads { + let _ = thread.join(); + } + + let email = EmailBuilder::new() + .to("root@localhost") + .from("user@localhost") + .body("Hello World!") + .subject("Hello Bis") + .build() + .unwrap(); + + let mut mailer = mailer.lock().unwrap(); + let final_result = mailer.send(email); + mailer.close(); + + assert!(final_result.is_ok()); +} diff --git a/tests/transport_stub.rs b/tests/transport_stub.rs new file mode 100644 index 0000000..88c3a46 --- /dev/null +++ b/tests/transport_stub.rs @@ -0,0 +1,21 @@ +extern crate lettre; + +use lettre::transport::stub::StubEmailTransport; +use lettre::transport::EmailTransport; +use lettre::mailer::Mailer; +use lettre::email::EmailBuilder; + +#[test] +fn stub_transport() { + let sender = StubEmailTransport; + let mut mailer = Mailer::new(sender); + let email = EmailBuilder::new() + .to("root@localhost") + .from("user@localhost") + .body("Hello World!") + .subject("Hello") + .build() + .unwrap(); + let result = mailer.send(email); + assert!(result.is_ok()); +}