package com.fsck.k9.mail.store.imap; import org.junit.Test; import static com.fsck.k9.mail.Folder.OPEN_MODE_RO; import static com.fsck.k9.mail.Folder.OPEN_MODE_RW; import static com.fsck.k9.mail.store.imap.ImapResponseHelper.createImapResponse; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; public class SelectOrExamineResponseTest { @Test public void parse_withSelectResponse_shouldReturnOpenModeReadWrite() throws Exception { ImapResponse imapResponse = createImapResponse("x OK [READ-WRITE] Select completed."); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNotNull(result); assertEquals(true, result.hasOpenMode()); assertEquals(OPEN_MODE_RW, result.getOpenMode()); } @Test public void parse_withExamineResponse_shouldReturnOpenModeReadOnly() throws Exception { ImapResponse imapResponse = createImapResponse("x OK [READ-ONLY] Examine completed."); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNotNull(result); assertEquals(true, result.hasOpenMode()); assertEquals(OPEN_MODE_RO, result.getOpenMode()); } @Test public void parse_withoutResponseCode_shouldReturnHasOpenModeFalse() throws Exception { ImapResponse imapResponse = createImapResponse("x OK Select completed."); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNotNull(result); assertEquals(false, result.hasOpenMode()); } @Test public void getOpenMode_withoutResponseCode_shouldThrow() throws Exception { ImapResponse imapResponse = createImapResponse("x OK Select completed."); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNotNull(result); try { result.getOpenMode(); fail("Expected exception"); } catch (IllegalStateException ignored) { } } @Test public void parse_withInvalidResponseText_shouldReturnHasOpenModeFalse() throws Exception { ImapResponse imapResponse = createImapResponse("x OK [()] Examine completed."); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNotNull(result); assertEquals(false, result.hasOpenMode()); } @Test public void parse_withUnknownResponseText_shouldReturnHasOpenModeFalse() throws Exception { ImapResponse imapResponse = createImapResponse("x OK [FUNKY] Examine completed."); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNotNull(result); assertEquals(false, result.hasOpenMode()); } @Test public void parse_withUntaggedResponse_shouldReturnNull() throws Exception { ImapResponse imapResponse = createImapResponse("* OK [READ-WRITE] Select completed."); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNull(result); } @Test public void parse_withoutOkResponse_shouldReturnNull() throws Exception { ImapResponse imapResponse = createImapResponse("x BYE"); SelectOrExamineResponse result = SelectOrExamineResponse.parse(imapResponse); assertNull(result); } }