diff options
Diffstat (limited to 'tests/common/fragments.rs')
-rw-r--r-- | tests/common/fragments.rs | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/tests/common/fragments.rs b/tests/common/fragments.rs index f9ad87e..7f7967a 100644 --- a/tests/common/fragments.rs +++ b/tests/common/fragments.rs @@ -36,6 +36,7 @@ pub enum Extension { Move, Condstore, LiteralPlus, + Idle, } pub enum Enable { @@ -114,6 +115,7 @@ pub fn capability(imap: &mut TcpStream, ext: Extension) -> Result<()> { Extension::Move => Some("MOVE"), Extension::Condstore => Some("CONDSTORE"), Extension::LiteralPlus => Some("LITERAL+"), + Extension::Idle => Some("IDLE"), }; let mut buffer: [u8; 6000] = [0; 6000]; @@ -286,7 +288,12 @@ pub fn noop_exists(imap: &mut TcpStream, must_exists: u32) -> Result<()> { } } -pub fn fetch(imap: &mut TcpStream, selection: Selection, kind: FetchKind, modifier: FetchMod) -> Result<String> { +pub fn fetch( + imap: &mut TcpStream, + selection: Selection, + kind: FetchKind, + modifier: FetchMod, +) -> Result<String> { let mut buffer: [u8; 65535] = [0; 65535]; let sel_str = match selection { @@ -363,11 +370,11 @@ pub fn search(imap: &mut TcpStream, sk: SearchKind) -> Result<String> { } pub fn store( - imap: &mut TcpStream, - sel: Selection, + imap: &mut TcpStream, + sel: Selection, flag: Flag, action: StoreAction, - modifier: StoreMod + modifier: StoreMod, ) -> Result<String> { let mut buffer: [u8; 6000] = [0; 6000]; @@ -491,6 +498,22 @@ pub fn enable(imap: &mut TcpStream, ask: Enable, done: Option<Enable>) -> Result Ok(()) } +pub fn start_idle(imap: &mut TcpStream) -> Result<()> { + let mut buffer: [u8; 1500] = [0; 1500]; + imap.write(&b"98 IDLE\r\n"[..])?; + let read = read_lines(imap, &mut buffer, None)?; + assert_eq!(read[0], b'+'); + Ok(()) +} + +pub fn stop_idle(imap: &mut TcpStream) -> Result<String> { + let mut buffer: [u8; 16536] = [0; 16536]; + imap.write(&b"DONE\r\n"[..])?; + let read = read_lines(imap, &mut buffer, Some(&b"98 OK"[..]))?; + let srv_msg = std::str::from_utf8(read)?; + Ok(srv_msg.to_string()) +} + pub fn logout(imap: &mut TcpStream) -> Result<()> { imap.write(&b"99 logout\r\n"[..])?; let mut buffer: [u8; 1500] = [0; 1500]; |