protected AuthPreferences getAuthPreferences() { return new AuthPreferences(this); }
public void refreshOAuth2Token() throws TokenRefreshException{ final String token = authPreferences.getOauth2Token(); final String refreshToken = authPreferences.getOauth2RefreshToken(); final String name = authPreferences.getOauth2Username(); if (isEmpty(token)) { throw new TokenRefreshException("no current token set"); } if (!isEmpty(refreshToken)) { // user authenticated using webflow refreshUsingOAuth2Client(name, refreshToken); } else { refreshUsingAccountManager(token, name); } }
private String getConnectedSummary(TwoStatePreference connected) { final String username = authPreferences.getOauth2Username(); if (connected.isEnabled()) { return connected.isChecked() && !TextUtils.isEmpty(username) ? getString(R.string.gmail_already_connected, username) : getString(R.string.gmail_needs_connecting); } else if (authPreferences.isLoginInformationSet()) { return getString(R.string.custom_imap, authPreferences.getImapUsername() + "@" + authPreferences.getServername()); } else { return getString(R.string.custom_imap_not_configured); } }
public String getUserEmail() { switch (getAuthMode()) { case XOAUTH: return getOauth2Username(); default: return getImapUsername(); } }
public boolean hasOAuth2Tokens() { return getOauth2Username() != null && getOauth2Token() != null; }
public void migrate() { new AuthPreferences(context).migrate(); }
public String getStoreUri() { if (useXOAuth()) { if (hasOAuth2Tokens()) { return formatUri( AuthType.XOAUTH2, DEFAULT_SERVER_PROTOCOL, getOauth2Username(), generateXOAuth2Token(), DEFAULT_SERVER_ADDRESS); } else { Log.w(TAG, "No valid xoauth2 tokens"); return null; } } else { return formatUri(AuthType.PLAIN, getServerProtocol(), getImapUsername(), getImapPassword(), getServerAddress()); } }
@Test public void shouldUseOAuth2ClientWhenRefreshTokenIsPresent() throws Exception { when(authPreferences.getOauth2Token()).thenReturn("token"); when(authPreferences.getOauth2RefreshToken()).thenReturn("refresh"); when(authPreferences.getOauth2Username()).thenReturn("username"); when(oauth2Client.refreshToken("refresh")).thenReturn(new OAuth2Token("newToken", "type", null, 0, null)); refresher.refreshOAuth2Token(); verify(authPreferences).setOauth2Token("username", "newToken", "refresh"); }
@Test public void shouldSetNewTokenAfterRefresh() throws Exception { when(authPreferences.getOauth2Token()).thenReturn("token"); when(authPreferences.getOauth2Username()).thenReturn("username"); AccountManagerFuture<Bundle> future = mock(AccountManagerFuture.class); when(accountManager.getAuthToken( new Account("username", GOOGLE_TYPE), AUTH_TOKEN_TYPE, null,true, null, null) ).thenReturn(future); Bundle bundle = new Bundle(); bundle.putString(AccountManager.KEY_AUTHTOKEN, "newToken"); when(future.getResult()).thenReturn(bundle); refresher.refreshOAuth2Token(); verify(authPreferences).setOauth2Token("username", "newToken", null); }
@Test public void testStoreUri() throws Exception { PreferenceManager .getDefaultSharedPreferences(RuntimeEnvironment.application) .edit() .putString("server_address", "foo.com:993") .putString("server_protocol", "+ssl+") .putString("server_authentication", "plain") .commit(); authPreferences.setImapUser("a:user"); authPreferences.setImapPassword("password:has:colons"); assertThat(authPreferences.getStoreUri()).isEqualTo("imap+ssl+://PLAIN:a%253Auser:password%253Ahas%253Acolons@foo.com:993"); }
private void checkCredentials() throws RequiresLoginException { if (!getAuthPreferences().isLoginInformationSet()) { throw new RequiresLoginException(); } }
public void clearOauth2Data() { final String oauth2token = getOauth2Token(); preferences.edit() .remove(OAUTH2_USER) .commit(); getCredentials().edit() .remove(OAUTH2_TOKEN) .remove(OAUTH2_REFRESH_TOKEN) .commit(); if (!TextUtils.isEmpty(oauth2token)) { new TokenRefresher(context, new OAuth2Client(getOAuth2ClientId()), this).invalidateToken(oauth2token); } }
@Test public void testStoreUriWithXOAuth2() throws Exception { PreferenceManager .getDefaultSharedPreferences(RuntimeEnvironment.application) .edit() .putString("server_address", "imap.gmail.com:993") .putString("server_protocol", "+ssl+") .putString("server_authentication", "xoauth") .commit(); authPreferences.setOauth2Token("user", "token", null); assertThat(authPreferences.getStoreUri()).isEqualTo("imap+ssl+://XOAUTH2:user:dXNlcj11c2VyAWF1dGg9QmVhcmVyIHRva2VuAQE%253D@imap.gmail.com:993"); } }
@Before public void before() { initMocks(this); sentNotifications = new ArrayList<NotificationCompat.Builder>(); service = new SmsBackupService() { @Override public Context getApplicationContext() { return RuntimeEnvironment.application; } @Override public Resources getResources() { return getApplicationContext().getResources(); } @Override protected BackupTask getBackupTask() { return backupTask; } @Override protected BackupJobs getBackupJobs() { return backupJobs; } @Override protected Preferences getPreferences() { return preferences; } @Override public int checkPermission(String permission, int pid, int uid) { return PERMISSION_GRANTED; } @Override protected AuthPreferences getAuthPreferences() { return authPreferences; } @Override protected void notifyUser(int icon, NotificationCompat.Builder builder) { sentNotifications.add(builder); } }; shadowConnectivityManager = shadowOf(service.getConnectivityManager()); shadowWifiManager = shadowOf(service.getWifiManager()); service.onCreate(); when(authPreferences.getStoreUri()).thenReturn("imap+ssl+://xoauth:foooo@imap.gmail.com:993"); when(authPreferences.isLoginInformationSet()).thenReturn(true); when(preferences.getBackupContactGroup()).thenReturn(ContactGroup.EVERYBODY); when(preferences.isUseOldScheduler()).thenReturn(true); when(preferences.getDataTypePreferences()).thenReturn(dataTypePreferences); when(dataTypePreferences.enabled()).thenReturn(EnumSet.of(DataType.SMS)); }
getAuthPreferences().getUserEmail(), new PersonLookup(getContentResolver()), new ContactAccessor() final AuthPreferences authPreferences = new AuthPreferences(this); new RestoreTask(this, converter, getContentResolver(), new TokenRefresher(service, new OAuth2Client(authPreferences.getOAuth2ClientId()), authPreferences)).execute(config);
private void handleAccountManagerAuth(@NonNull Intent data) { final String token = data.getStringExtra(EXTRA_TOKEN); final String account = data.getStringExtra(EXTRA_ACCOUNT); if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(account)) { authPreferences.setOauth2Token(account, token, null); onAuthenticated(); } else { String error = data.getStringExtra(AccountManagerAuthActivity.EXTRA_ERROR); if (!TextUtils.isEmpty(error)) { showDialog(ACCOUNT_MANAGER_TOKEN_ERROR); } } }
private void onAuthFailed() { statusLabel.setText(R.string.status_auth_failure); if (new AuthPreferences(getContext()).useXOAuth()) { syncDetailsLabel.setText(R.string.status_auth_failure_details_xoauth); } else { syncDetailsLabel.setText(R.string.status_auth_failure_details_plain); } }
protected BackupImapStore getBackupImapStore() throws MessagingException { final String uri = getAuthPreferences().getStoreUri(); if (!BackupImapStore.isValidUri(uri)) { throw new MessagingException("No valid IMAP URI: "+uri); } return new BackupImapStore(getApplicationContext(), uri, getAuthPreferences().isTrustAllCertificates()); }
@Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportFragmentManager().addOnBackStackChangedListener(this); authPreferences = new AuthPreferences(this); oauth2Client = new OAuth2Client(authPreferences.getOAuth2ClientId()); fallbackAuthIntent = new Intent(this, OAuth2WebAuthActivity.class).setData(oauth2Client.requestUrl()); changeDefaultPackageIntent = new Intent(ACTION_CHANGE_DEFAULT).putExtra(EXTRA_PACKAGE_NAME, getPackageName()); preferenceTitles = new PreferenceTitles(getResources(), R.xml.preferences); preferences = new Preferences(this); if (bundle == null) { showFragment(new MainSettings(), null); } if (preferences.shouldShowAboutDialog()) { showDialog(ABOUT); } checkDefaultSmsApp(); requestPermissionsIfNeeded(); }
@Test public void shouldCheckForValidStore() throws Exception { when(authPreferences.getStoreUri()).thenReturn("invalid"); Intent intent = new Intent(MANUAL.name()); service.handleIntent(intent); verifyZeroInteractions(backupTask); assertThat(service.getState().exception).isInstanceOf(MessagingException.class); }