package com.zegoggles.smssync.preferences;
import com.fsck.k9.mail.AuthType;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import static org.fest.assertions.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
@RunWith(RobolectricTestRunner.class)
public class AuthPreferencesTest {
private AuthPreferences authPreferences;
private @Mock ServerPreferences serverPreferences;
@Before public void before() {
initMocks(this);
authPreferences = new AuthPreferences(Robolectric.application, serverPreferences);
}
@Test public void testStoreUri() throws Exception {
when(serverPreferences.getServerAddress()).thenReturn("foo.com:993");
when(serverPreferences.getServerProtocol()).thenReturn("+ssl+");
authPreferences.setImapUser("a:user");
authPreferences.setImapPassword("password:has:colons");
assertThat(authPreferences.getStoreUri()).isEqualTo("imap+ssl+://PLAIN:a%253Auser:password%253Ahas%253Acolons@foo.com:993");
}
@Test public void testStoreUriWithXOAuth2() throws Exception {
when(serverPreferences.getServerAddress()).thenReturn(ServerPreferences.Defaults.SERVER_ADDRESS);
when(serverPreferences.isGmail()).thenReturn(true);
authPreferences.setOauth2Token("user", "token", null);
authPreferences.setServerAuthMode(AuthType.XOAUTH2);
assertThat(authPreferences.getStoreUri()).isEqualTo("imap+ssl+://XOAUTH2:user:dXNlcj11c2VyAWF1dGg9QmVhcmVyIHRva2VuAQE%253D@imap.gmail.com:993");
}
}