package com.fsck.k9.mail.store.imap;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;
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;
public class NamespaceResponseTest {
@Test
public void parse_withProperNamespaceResponse() throws Exception {
NamespaceResponse result = parse("* NAMESPACE ((\"\" \"/\")) NIL NIL");
assertNotNull(result);
assertEquals("", result.getPrefix());
assertEquals("/", result.getHierarchyDelimiter());
}
@Test
public void parse_withoutNamespaceResponse_shouldReturnNull() throws Exception {
NamespaceResponse result = parse("* OK Some text here");
assertNull(result);
}
@Test
public void parse_withTooShortNamespaceResponse_shouldReturnNull() throws Exception {
NamespaceResponse result = parse("* NAMESPACE NIL NIL");
assertNull(result);
}
@Test
public void parse_withPersonalNamespacesNotPresent_shouldReturnNull() throws Exception {
NamespaceResponse result = parse("* NAMESPACE NIL NIL NIL");
assertNull(result);
}
@Test
public void parse_withEmptyListForPersonalNamespaces_shouldReturnNull() throws Exception {
NamespaceResponse result = parse("* NAMESPACE () NIL NIL");
assertNull(result);
}
@Test
public void parse_withEmptyListForFirstPersonalNamespace_shouldReturnNull() throws Exception {
NamespaceResponse result = parse("* NAMESPACE (()) NIL NIL");
assertNull(result);
}
@Test
public void parse_withIncompleteFirstPersonalNamespace_shouldReturnNull() throws Exception {
NamespaceResponse result = parse("* NAMESPACE ((\"\")) NIL NIL");
assertNull(result);
}
@Test
public void parse_withEmptyResponseList() throws Exception {
NamespaceResponse result = NamespaceResponse.parse(Collections.<ImapResponse>emptyList());
assertNull(result);
}
@Test
public void parse_withSingleItemInResponseList() throws Exception {
ImapResponse imapResponse = createImapResponse("* NAMESPACE ((\"\" \"/\")) NIL NIL");
NamespaceResponse result = NamespaceResponse.parse(Collections.singletonList(imapResponse));
assertNotNull(result);
assertEquals("", result.getPrefix());
assertEquals("/", result.getHierarchyDelimiter());
}
@Test
public void parse_withResponseList() throws Exception {
ImapResponse imapResponseOne = createImapResponse("* OK");
ImapResponse imapResponseTwo = createImapResponse("* NAMESPACE ((\"INBOX\" \".\")) NIL NIL");
NamespaceResponse result = NamespaceResponse.parse(Arrays.asList(imapResponseOne, imapResponseTwo));
assertNotNull(result);
assertEquals("INBOX", result.getPrefix());
assertEquals(".", result.getHierarchyDelimiter());
}
private NamespaceResponse parse(String response) throws IOException {
ImapResponse imapResponse = createImapResponse(response);
return NamespaceResponse.parse(imapResponse);
}
}