dovemail 0.0.1

Use Microsoft's PNP CLI with email clients.
Documentation
pub mod outlook;
mod write;

pub use write::{write_message, MessageWriteError};

#[cfg(test)]
mod test {
    use super::outlook::*;
    use super::*;
    use rstest::*;
    use std::fs::File;
    use std::io::BufReader;
    use std::path::{Path, PathBuf};
    use time::format_description::well_known::Rfc2822;

    #[rstest]
    fn test_write_message(example_message: OutlookMessage) {
        let mut buf: Vec<u8> = Vec::new();
        write_message(&example_message, &mut buf).unwrap();
        let actual = String::from_utf8(buf).unwrap();
        let OutlookMessage {
            internet_message_id,
            sent_date_time,
            from,
            web_link,
            body,
            ..
        } = example_message;
        let expected_lines = [
            format!("Message-ID: {}\n", internet_message_id),
            format!("Date: {}\n", sent_date_time.format(&Rfc2822).unwrap()),
            format!("From: {}\n", from.unwrap()),
            format!("X-Web-Link: {}\n", web_link),
        ];
        for expected_line in expected_lines {
            assert!(actual.contains(&expected_line));
        }
        assert!(actual.ends_with(&format!("\n\n{}\n", body.content)))
    }

    #[fixture]
    fn example_message(examples_dir: PathBuf) -> OutlookMessage {
        let file = File::open(examples_dir.join("message.json")).unwrap();
        let reader = BufReader::new(file);
        serde_json::from_reader(reader).unwrap()
    }

    #[fixture]
    fn examples_dir() -> PathBuf {
        Path::new(env!("CARGO_MANIFEST_DIR")).join("testdata")
    }
}