package com.fsck.k9.mail.store; import java.util.HashMap; import java.util.Map; import com.fsck.k9.mail.ConnectionSecurity; import com.fsck.k9.mail.ServerSettings; import com.fsck.k9.mail.Store; import com.fsck.k9.mail.store.ImapStore; import junit.framework.TestCase; public class ImapStoreUriTest extends TestCase { public void testDecodeStoreUriImapAllExtras() { String uri = "imap://PLAIN:user:pass@server:143/0%7CcustomPathPrefix"; ServerSettings settings = Store.decodeStoreUri(uri); assertEquals("PLAIN", settings.authenticationType); assertEquals("user", settings.username); assertEquals("pass", settings.password); assertEquals("server", settings.host); assertEquals(143, settings.port); assertEquals("false", settings.getExtra().get("autoDetectNamespace")); assertEquals("customPathPrefix", settings.getExtra().get("pathPrefix")); } public void testDecodeStoreUriImapNoExtras() { String uri = "imap://PLAIN:user:pass@server:143/"; ServerSettings settings = Store.decodeStoreUri(uri); assertEquals("PLAIN", settings.authenticationType); assertEquals("user", settings.username); assertEquals("pass", settings.password); assertEquals("server", settings.host); assertEquals(143, settings.port); assertEquals("true", settings.getExtra().get("autoDetectNamespace")); } public void testDecodeStoreUriImapPrefixOnly() { String uri = "imap://PLAIN:user:pass@server:143/customPathPrefix"; ServerSettings settings = Store.decodeStoreUri(uri); assertEquals("PLAIN", settings.authenticationType); assertEquals("user", settings.username); assertEquals("pass", settings.password); assertEquals("server", settings.host); assertEquals(143, settings.port); assertEquals("false", settings.getExtra().get("autoDetectNamespace")); assertEquals("customPathPrefix", settings.getExtra().get("pathPrefix")); } public void testDecodeStoreUriImapEmptyPrefix() { String uri = "imap://PLAIN:user:pass@server:143/0%7C"; ServerSettings settings = Store.decodeStoreUri(uri); assertEquals("PLAIN", settings.authenticationType); assertEquals("user", settings.username); assertEquals("pass", settings.password); assertEquals("server", settings.host); assertEquals(143, settings.port); assertEquals("false", settings.getExtra().get("autoDetectNamespace")); assertEquals("", settings.getExtra().get("pathPrefix")); } public void testDecodeStoreUriImapAutodetectAndPrefix() { String uri = "imap://PLAIN:user:pass@server:143/1%7CcustomPathPrefix"; ServerSettings settings = Store.decodeStoreUri(uri); assertEquals("PLAIN", settings.authenticationType); assertEquals("user", settings.username); assertEquals("pass", settings.password); assertEquals("server", settings.host); assertEquals(143, settings.port); assertEquals("true", settings.getExtra().get("autoDetectNamespace")); assertNull(settings.getExtra().get("pathPrefix")); } public void testCreateStoreUriImapPrefix() { Map<String, String> extra = new HashMap<String, String>(); extra.put("autoDetectNamespace", "false"); extra.put("pathPrefix", "customPathPrefix"); ServerSettings settings = new ServerSettings(ImapStore.STORE_TYPE, "server", 143, ConnectionSecurity.NONE, "PLAIN", "user", "pass", extra); String uri = Store.createStoreUri(settings); assertEquals("imap://PLAIN:user:pass@server:143/0%7CcustomPathPrefix", uri); } public void testCreateStoreUriImapEmptyPrefix() { Map<String, String> extra = new HashMap<String, String>(); extra.put("autoDetectNamespace", "false"); extra.put("pathPrefix", ""); ServerSettings settings = new ServerSettings(ImapStore.STORE_TYPE, "server", 143, ConnectionSecurity.NONE, "PLAIN", "user", "pass", extra); String uri = Store.createStoreUri(settings); assertEquals("imap://PLAIN:user:pass@server:143/0%7C", uri); } public void testCreateStoreUriImapNoExtra() { ServerSettings settings = new ServerSettings(ImapStore.STORE_TYPE, "server", 143, ConnectionSecurity.NONE, "PLAIN", "user", "pass"); String uri = Store.createStoreUri(settings); assertEquals("imap://PLAIN:user:pass@server:143/1%7C", uri); } public void testCreateStoreUriImapAutoDetectNamespace() { Map<String, String> extra = new HashMap<String, String>(); extra.put("autoDetectNamespace", "true"); ServerSettings settings = new ServerSettings(ImapStore.STORE_TYPE, "server", 143, ConnectionSecurity.NONE, "PLAIN", "user", "pass", extra); String uri = Store.createStoreUri(settings); assertEquals("imap://PLAIN:user:pass@server:143/1%7C", uri); } }