From 3fec0de70db9a1f1d76612cc1818aeef05553cdc Mon Sep 17 00:00:00 2001 From: Jan Christian Kaessens Date: Thu, 18 Jan 2018 10:46:13 +0100 Subject: [PATCH] add NOTIFY test --- src/client.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/client.rs b/src/client.rs index a8d29a3f..8a12677b 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1039,6 +1039,43 @@ mod tests { ); } + #[test] + fn notify_status() { + let response = b"* STATUS Spam (MESSAGES 42 UIDNEXT 1234 UIDVALIDITY 1224144230 UNSEEN 42)\r\n\ + * STATUS Trash (MESSAGES 420 UIDNEXT 10234 UIDVALIDITY 1224144231 UNSEEN 23)\r\n\ + * NO [SERVERBUG] Internal error occured. Refer to server log for more information.\r\n\ + * STATUS RustNews (MESSAGES 1 UIDNEXT 2 UIDVALIDITY 1224144232 UNSEEN 1)\r\n\ + a1 OK NOTIFY completed.\r\n" + .to_vec(); + + let expected_mailboxes: HashMap = + [("Spam".to_owned(), Mailbox { exists: 42, uid_next: Some(1234), uid_validity: Some(1224144230), unseen: Some(42), flags: vec![], permanent_flags: vec![], recent: 0}), + ("Trash".to_owned(), Mailbox { exists: 420, uid_next: Some(10234), uid_validity: Some(1224144231), unseen: Some(23), flags: vec![], permanent_flags: vec![], recent: 0}), + ("RustNews".to_owned(), Mailbox { exists: 1, uid_next: Some(2), uid_validity: Some(1224144232), unseen: Some(1), flags: vec![], permanent_flags: vec![], recent: 0}), + ].iter().cloned().collect(); + + let mock_stream = MockStream::new(response); + let mut client = Client::new(mock_stream); + let mut notify = client.notify().unwrap(); + + let op = NotifyOp::new() + .add_mailbox("Spam", &["MessageNew"]) + .add_mailbox("Trash", &["MessageNew", "MessageExpunge"]) + .add_mailbox("SomeBug", &["MessageNew"]) + .add_mailbox("RustNews", &["MessageNew", "MessageExpunge"]); + + let mailboxes = notify.set_status(op).unwrap(); + + assert_eq!(mailboxes.len(), 3); // not 4 + assert!(mailboxes.contains_key("Spam")); + assert!(mailboxes.contains_key("Trash")); + assert!(mailboxes.contains_key("RustNews")); + + for (k, v) in mailboxes { + assert_eq!(v, *expected_mailboxes.get(&k).unwrap()); + } + } + #[test] fn store() { generic_store(" ", |c, set, query| c.store(set, query));