Files
lettre/tests/transport_smtp_pool.rs
Paolo Barbolini 9273d24e54 Use nightly rustfmt features to improve code style (#734)
* format_code_in_doc_comments

* imports_granularity

* group_imports

* Add ci job
2022-02-12 20:03:37 +01:00

60 lines
1.6 KiB
Rust

#[cfg(all(test, feature = "smtp-transport", feature = "pool"))]
mod sync {
use std::{sync::mpsc, thread};
use lettre::{address::Envelope, SmtpTransport, Transport};
fn envelope() -> Envelope {
Envelope::new(
Some("user@localhost".parse().unwrap()),
vec!["root@localhost".parse().unwrap()],
)
.unwrap()
}
#[test]
fn send_one() {
let mailer = SmtpTransport::builder_dangerous("127.0.0.1")
.port(2525)
.build();
let result = mailer.send_raw(&envelope(), b"test");
assert!(result.is_ok());
}
#[test]
fn send_from_thread() {
let mailer = SmtpTransport::builder_dangerous("127.0.0.1")
.port(2525)
.build();
let (s1, r1) = mpsc::channel();
let (s2, r2) = mpsc::channel();
let mailer1 = mailer.clone();
let t1 = thread::spawn(move || {
s1.send(()).unwrap();
r2.recv().unwrap();
mailer1
.send_raw(&envelope(), b"test1")
.expect("Send failed from thread 1");
});
let mailer2 = mailer.clone();
let t2 = thread::spawn(move || {
s2.send(()).unwrap();
r1.recv().unwrap();
mailer2
.send_raw(&envelope(), b"test2")
.expect("Send failed from thread 2");
});
t1.join().unwrap();
t2.join().unwrap();
mailer
.send_raw(&envelope(), b"test")
.expect("Send failed from main thread");
}
}