himalaya/tests/imap_test.rs
2021-09-14 00:34:34 +02:00

151 lines
4.5 KiB
Rust

// FIXME: fix tests
// use std::convert::TryFrom;
// use himalaya::{
// domain::account::entity::Account, flag::model::Flags, imap::model::ImapConnector,
// mbox::model::Mboxes, msg::model::Msgs,
// };
// use imap::types::Flag;
// use lettre::message::SinglePart;
// use lettre::Message;
// fn get_account(addr: &str) -> Account {
// Account {
// name: None,
// downloads_dir: None,
// signature_delimiter: None,
// signature: None,
// default_page_size: None,
// default: Some(true),
// email: addr.into(),
// watch_cmds: None,
// imap_host: String::from("localhost"),
// imap_port: 3993,
// imap_starttls: Some(false),
// imap_insecure: Some(true),
// imap_login: addr.into(),
// imap_passwd_cmd: String::from("echo 'password'"),
// smtp_host: String::from("localhost"),
// smtp_port: 3465,
// smtp_starttls: Some(false),
// smtp_insecure: Some(true),
// smtp_login: addr.into(),
// smtp_passwd_cmd: String::from("echo 'password'"),
// }
// }
// #[test]
// fn mbox() {
// let account = get_account("inbox@localhost");
// let mut imap_conn = ImapConnector::new(&account).unwrap();
// let names = imap_conn.list_mboxes().unwrap();
// let mboxes: Vec<String> = Mboxes::from(&names)
// .0
// .into_iter()
// .map(|mbox| mbox.name)
// .collect();
// assert_eq!(mboxes, vec![String::from("INBOX")]);
// imap_conn.logout();
// }
// #[test]
// fn msg() {
// // Preparations
// // Get the test-account and clean up the server.
// let account = get_account("inbox@localhost");
// // Login
// let mut imap_conn = ImapConnector::new(&account).unwrap();
// // remove all previous mails first
// let fetches = imap_conn.list_msgs("INBOX", &10, &0).unwrap();
// let msgs = if let Some(ref fetches) = fetches {
// Msgs::try_from(fetches).unwrap()
// } else {
// Msgs::new()
// };
// // mark all mails as deleted
// for msg in msgs.0.iter() {
// imap_conn
// .add_flags(
// "INBOX",
// &msg.get_uid().unwrap().to_string(),
// Flags::from(vec![Flag::Deleted]),
// )
// .unwrap();
// }
// imap_conn.expunge("INBOX").unwrap();
// // make sure, that they are *really* deleted
// assert!(imap_conn.list_msgs("INBOX", &10, &0).unwrap().is_none());
// // == Testing ==
// // Add messages
// let message_a = Message::builder()
// .from("sender-a@localhost".parse().unwrap())
// .to("inbox@localhost".parse().unwrap())
// .subject("Subject A")
// .singlepart(SinglePart::builder().body("Body A".as_bytes().to_vec()))
// .unwrap();
// let message_b = Message::builder()
// .from("Sender B <sender-b@localhost>".parse().unwrap())
// .to("inbox@localhost".parse().unwrap())
// .subject("Subject B")
// .singlepart(SinglePart::builder().body("Body B".as_bytes().to_vec()))
// .unwrap();
// smtp::send(&account, &message_a).unwrap();
// smtp::send(&account, &message_b).unwrap();
// // -- Get the messages --
// // TODO: check non-existance of \Seen flag
// let msgs = imap_conn.list_msgs("INBOX", &10, &0).unwrap();
// let msgs = if let Some(ref fetches) = msgs {
// Msgs::try_from(fetches).unwrap()
// } else {
// Msgs::new()
// };
// // make sure that there are both mails which we sended
// assert_eq!(msgs.0.len(), 2);
// let msg_a = msgs
// .0
// .iter()
// .find(|msg| msg.headers.subject.clone().unwrap() == "Subject A")
// .unwrap();
// let msg_b = msgs
// .0
// .iter()
// .find(|msg| msg.headers.subject.clone().unwrap() == "Subject B")
// .unwrap();
// // -- Checkup --
// // look, if we received the correct credentials of the msgs.
// assert_eq!(
// msg_a.headers.subject.clone().unwrap_or_default(),
// "Subject A"
// );
// assert_eq!(&msg_a.headers.from[0], "sender-a@localhost");
// assert_eq!(
// msg_b.headers.subject.clone().unwrap_or_default(),
// "Subject B"
// );
// assert_eq!(&msg_b.headers.from[0], "Sender B <sender-b@localhost>");
// // TODO: search messages
// // TODO: read message (+ \Seen flag)
// // TODO: list message attachments
// // TODO: add/set/remove flags
// // Logout
// imap_conn.logout();
// }