package com.zegoggles.smssync.mail; import com.fsck.k9.mail.ssl.DefaultTrustedSocketFactory; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import static com.zegoggles.smssync.mail.BackupImapStore.isValidImapFolder; import static com.zegoggles.smssync.mail.BackupImapStore.isValidUri; import static org.fest.assertions.api.Assertions.assertThat; @RunWith(RobolectricTestRunner.class) public class BackupImapStoreTest { @Test public void shouldTestForValidUri() throws Exception { assertThat(isValidUri("imap+ssl+://xoauth:foooo@imap.gmail.com:993")).isTrue(); assertThat(isValidUri("imap://xoauth:foooo@imap.gmail.com")).isTrue(); assertThat(isValidUri("imap+ssl+://xoauth:user:token@:993")).isFalse(); assertThat(isValidUri("imap+ssl://user%40domain:password@imap.gmail.com:993")).isTrue(); assertThat(isValidUri("imap+tls+://user:password@imap.gmail.com:993")).isTrue(); assertThat(isValidUri("imap+tls://user:password@imap.gmail.com:993")).isTrue(); assertThat(isValidUri("imap://user:password@imap.gmail.com:993")).isTrue(); assertThat(isValidUri("http://xoauth:foooo@imap.gmail.com:993")).isFalse(); } @Test public void shouldTestForValidFolder() throws Exception { assertThat(isValidImapFolder(null)).isFalse(); assertThat(isValidImapFolder("")).isFalse(); assertThat(isValidImapFolder("foo")).isTrue(); assertThat(isValidImapFolder("foo bar")).isTrue(); assertThat(isValidImapFolder(" foo")).isFalse(); assertThat(isValidImapFolder("foo ")).isFalse(); assertThat(isValidImapFolder("foo/nested")).isTrue(); assertThat(isValidImapFolder("/foo/nested")).isFalse(); } @Test public void testAccountHasStoreUri() throws Exception { String uri = "imap://xoauth:foooo@imap.gmail.com"; BackupImapStore store = new BackupImapStore(Robolectric.application, uri); assertThat(store.getStoreUri()).isEqualTo(uri); } @Test public void testShouldCreateCorrectTrustFactoryForTrustedSSLUrl() throws Exception { String uri = "imap+ssl+://xoauth:foooo@imap.gmail.com"; BackupImapStore store = new BackupImapStore(Robolectric.application, uri); assertThat(store.getTrustedSocketFactory()).isInstanceOf(DefaultTrustedSocketFactory.class); } @Test public void testShouldCreateCorrectTrustFactoryForTrustAllSSLUrl() throws Exception { String uri = "imap+ssl://xoauth:foooo@imap.gmail.com"; BackupImapStore store = new BackupImapStore(Robolectric.application, uri); assertThat(store.getTrustedSocketFactory()).isInstanceOf(AllTrustedSocketFactory.class); } @Test public void testShouldCreateCorrectTrustFactoryForTrustedTLSUrl() throws Exception { String uri = "imap+tls+://xoauth:foooo@imap.gmail.com"; BackupImapStore store = new BackupImapStore(Robolectric.application, uri); assertThat(store.getTrustedSocketFactory()).isInstanceOf(DefaultTrustedSocketFactory.class); } @Test public void testShouldCreateCorrectTrustFactoryForTrustAllTLSUrl() throws Exception { String uri = "imap+tls://xoauth:foooo@imap.gmail.com"; BackupImapStore store = new BackupImapStore(Robolectric.application, uri); assertThat(store.getTrustedSocketFactory()).isInstanceOf(AllTrustedSocketFactory.class); } @Test public void shouldHaveToStringWithObfuscatedStoreURI() throws Exception { BackupImapStore store = new BackupImapStore(Robolectric.application, "imap://xoauth:foooo@imap.gmail.com"); assertThat(store.getStoreUriForLogging()).isEqualTo("imap://xoauth:XXXXX@imap.gmail.com"); } @Test public void shouldHaveToStringWithObfuscatedStoreURIWithPort() throws Exception { BackupImapStore store = new BackupImapStore(Robolectric.application, "imap://xoauth:foooo@imap.gmail.com:456"); assertThat(store.getStoreUriForLogging()).isEqualTo("imap://xoauth:XXXXX@imap.gmail.com:456"); } @Test public void shouldHaveToStringWithObfuscatedStoreURIWithoutUserInfo() throws Exception { BackupImapStore store = new BackupImapStore(Robolectric.application, "imap://imap.gmail.com:1234"); assertThat(store.getStoreUriForLogging()).isEqualTo("imap://imap.gmail.com:1234"); } @Test public void shouldHaveToStringWithStoreUriForLogging() throws Exception { BackupImapStore store = new BackupImapStore(Robolectric.application, "imap://xoauth:foooo@imap.gmail.com"); assertThat(store.toString()).isEqualTo("BackupImapStore{uri=imap://xoauth:XXXXX@imap.gmail.com}"); } }