package com.google.sitebricks.mail.imap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.util.List; import java.util.Set; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; /** * Test StoreFlagsResponseExtractorTest and StoreLabelsResponseExtractorTest classes. * * @author jochen@pedesis.org (Jochen Bekmann) */ public class StoreResponseExtractorTest { private static final List<String> BAD_RESPONSE = ImmutableList.of("66 BAD stupid stuff."); private static final List<String> NO_RESPONSE = ImmutableList.of("66 NO meh, you can't"); private StoreFlagsResponseExtractor flagsExtractor; private StoreLabelsResponseExtractor labelsExtractor; @BeforeTest public final void setup() { flagsExtractor = new StoreFlagsResponseExtractor(); labelsExtractor = new StoreLabelsResponseExtractor(); } @Test public final void testBadResponse() { try { flagsExtractor.extract(BAD_RESPONSE); fail("Expected BAD response to fail."); } catch (ExtractionException ee) { // expected. } try { labelsExtractor.extract(BAD_RESPONSE); fail("Expected BAD response to fail."); } catch (ExtractionException ee) { // expected. } } @Test public final void testNoResponse() { try { flagsExtractor.extract(NO_RESPONSE); fail("Expected NO response to fail."); } catch (ExtractionException ee) { // expected. } try { labelsExtractor.extract(NO_RESPONSE); fail("Expected NO response to fail."); } catch (ExtractionException ee) { // expected. } } @Test public final void testOkFlagsEmptyResponse() throws ExtractionException { List<String> OK_RESPONSE = ImmutableList.of("* 4 FETCH (FLAGS () UID 6)", "66 OK STORE_FLAGS completed"); assertEquals(flagsExtractor.extract(OK_RESPONSE), ImmutableSet.of()); } @Test public final void testOkFlagsWithResponse() throws ExtractionException { List<String> OK_RESPONSE = ImmutableList.of("* 4 FETCH (FLAGS (\\Deleted \\Flagged " + "\\Seen) UID 6)", "66 OK STORE_FLAGS completed"); assertEquals(flagsExtractor.extract(OK_RESPONSE), ImmutableSet.of(Flag.SEEN, Flag.DELETED, Flag.FLAGGED)); } @Test public final void testFlagsStingifier() { Set<Flag> testSet = ImmutableSet.of(Flag.SEEN, Flag.DELETED, Flag.FLAGGED); assertEquals(Flag.toImap(testSet), "FLAGS (\\Seen \\Deleted \\Flagged)"); } @Test public final void testOkLabelsEmptyResponse() throws ExtractionException { List<String> OK_RESPONSE = ImmutableList.of("* 4 FETCH (X-GM-LABELS () UID 6)", "66 OK STORE_FLAGS completed"); assertEquals(labelsExtractor.extract(OK_RESPONSE), ImmutableSet.of()); } @Test public final void testOkLabelsWithResponse() throws ExtractionException { List<String> OK_RESPONSE = ImmutableList.of("* 4 FETCH (X-GM-LABELS (\\Foo \\Bar " + "Baz) UID 6)", "66 OK all good, captain."); assertTrue(ImmutableSet.of("Baz", "\\Foo", "\\Bar").equals(labelsExtractor.extract(OK_RESPONSE))); } @Test public final void testOkQuotedLabelsWithResponse() throws ExtractionException { List<String> OK_RESPONSE = ImmutableList.of("* 4 FETCH (X-GM-LABELS (\"\\\\Foo\" \"\\\\Bar\" " + "\"Baz\") UID 6)", "66 OK all good, captain."); assertTrue(ImmutableSet.of("\"Baz\"", "\"\\Foo\"", "\"\\Bar\"").equals(labelsExtractor.extract(OK_RESPONSE))); } }