Split integration tests
This commit is contained in:
@@ -9,6 +9,7 @@ sudo: false
|
||||
|
||||
cache:
|
||||
apt: true
|
||||
pip: true
|
||||
directories:
|
||||
- target/debug/deps
|
||||
- target/debug/build
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -83,8 +83,3 @@ impl From<&'static str> for Error {
|
||||
|
||||
/// SMTP result type
|
||||
pub type EmailResult = Result<Response, Error>;
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
//! TODO
|
||||
pub mod smtp;
|
||||
pub mod stub;
|
||||
pub mod error;
|
||||
pub mod stub;
|
||||
// pub mod file;
|
||||
|
||||
use transport::error::EmailResult;
|
||||
|
||||
|
||||
@@ -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 "\<CRLF\>"
|
||||
|
||||
@@ -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 {
|
||||
|
||||
71
tests/lib.rs
71
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;
|
||||
|
||||
71
tests/transport_smtp.rs
Normal file
71
tests/transport_smtp.rs
Normal file
@@ -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());
|
||||
}
|
||||
21
tests/transport_stub.rs
Normal file
21
tests/transport_stub.rs
Normal file
@@ -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());
|
||||
}
|
||||
Reference in New Issue
Block a user