diff options
author | 2014-09-22 16:45:05 -0700 | |
---|---|---|
committer | 2014-09-24 13:10:54 -0700 | |
commit | d4aec65f65baf0122cd3d59155307d1ba326f803 (patch) | |
tree | 6a07db3c8797319bf97b53ce2c43a0bb60412fb5 /tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java | |
parent | 5a20827fc7ea9425d6a1d336681e1b1cc1c7d0a3 (diff) | |
download | latinime-d4aec65f65baf0122cd3d59155307d1ba326f803.tar.gz latinime-d4aec65f65baf0122cd3d59155307d1ba326f803.tar.xz latinime-d4aec65f65baf0122cd3d59155307d1ba326f803.zip |
Add account change receiver to handle account removal
Also cleanup the manifest to group similar components together.
Moving LoginAccountUtils to its own package
Bug: 17464068
Change-Id: Iad7928855531d58334b1e4039bb45b97dde75462
Diffstat (limited to 'tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java')
-rw-r--r-- | tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java b/tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java new file mode 100644 index 000000000..3319eec3b --- /dev/null +++ b/tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.latin.accounts; + +import android.accounts.AccountManager; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import android.test.AndroidTestCase; + +import com.android.inputmethod.latin.settings.Settings; + +/** + * Tests for {@link AccountsChangedReceiver}. + */ +public class AccountsChangedReceiverTests extends AndroidTestCase { + private static final String ACCOUNT_1 = "account1@example.com"; + private static final String ACCOUNT_2 = "account2@example.com"; + + private SharedPreferences mPrefs; + + @Override + protected void setUp() throws Exception { + super.setUp(); + mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + // Remove all preferences before the next test. + mPrefs.edit().clear(); + } + + public void testUnknownIntent() { + updateAccountName(ACCOUNT_1); + AccountsChangedReceiver reciever = new AccountsChangedReceiver(); + reciever.onReceive(getContext(), new Intent("some-random-action")); + // Account should *not* be removed from preferences. + assertAccountName(ACCOUNT_1); + } + + public void testAccountRemoved() { + updateAccountName(ACCOUNT_1); + AccountsChangedReceiver reciever = new AccountsChangedReceiver() { + @Override + protected String[] getAccountsForLogin(Context context) { + return new String[] {ACCOUNT_2}; + } + }; + reciever.onReceive(getContext(), new Intent(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION)); + // Account should be removed from preferences. + assertAccountName(null); + } + + public void testAccountRemoved_noAccounts() { + updateAccountName(ACCOUNT_2); + AccountsChangedReceiver reciever = new AccountsChangedReceiver() { + @Override + protected String[] getAccountsForLogin(Context context) { + return new String[0]; + } + }; + reciever.onReceive(getContext(), new Intent(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION)); + // Account should be removed from preferences. + assertAccountName(null); + } + + public void testAccountNotRemoved() { + updateAccountName(ACCOUNT_2); + AccountsChangedReceiver reciever = new AccountsChangedReceiver() { + @Override + protected String[] getAccountsForLogin(Context context) { + return new String[] {ACCOUNT_1, ACCOUNT_2}; + } + }; + reciever.onReceive(getContext(), new Intent(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION)); + // Account should *not* be removed from preferences. + assertAccountName(ACCOUNT_2); + } + + private void updateAccountName(String accountName) { + mPrefs.edit() + .putString(Settings.PREF_ACCOUNT_NAME, accountName) + .commit(); + } + + private void assertAccountName(String expectedAccountName) { + assertEquals(expectedAccountName, mPrefs.getString(Settings.PREF_ACCOUNT_NAME, null)); + } +} |