2009-03-04 03:32:22 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2008 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.email;
|
|
|
|
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.test.AndroidTestCase;
|
2009-06-18 19:16:28 +00:00
|
|
|
import android.test.suitebuilder.annotation.MediumTest;
|
2009-03-04 03:32:22 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This is a series of unit tests for the Account class.
|
|
|
|
*
|
|
|
|
* Technically these are functional because they use the underlying preferences framework.
|
|
|
|
*/
|
2009-06-18 19:16:28 +00:00
|
|
|
@MediumTest
|
2009-03-04 03:32:22 +00:00
|
|
|
public class AccountUnitTests extends AndroidTestCase {
|
|
|
|
|
|
|
|
private Preferences mPreferences;
|
|
|
|
|
|
|
|
private String mUuid;
|
|
|
|
private Account mAccount;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void setUp() throws Exception {
|
|
|
|
super.setUp();
|
|
|
|
|
|
|
|
mPreferences = Preferences.getPreferences(getContext());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Delete any dummy accounts we set up for this test
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
protected void tearDown() throws Exception {
|
|
|
|
super.tearDown();
|
|
|
|
|
|
|
|
if (mAccount != null && mPreferences != null) {
|
|
|
|
mAccount.delete(mPreferences);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test the update path from .transportUri to .senderUri
|
|
|
|
*/
|
|
|
|
public void testTransportToSenderUpdate() {
|
|
|
|
|
|
|
|
final String TEST_VALUE = "This Is The Sender Uri";
|
|
|
|
|
|
|
|
// Create a dummy account
|
|
|
|
createTestAccount();
|
|
|
|
|
|
|
|
// Tweak it to look like an old account (with ".transportUri")
|
|
|
|
SharedPreferences.Editor editor = mPreferences.mSharedPreferences.edit();
|
|
|
|
editor.remove(mUuid + ".senderUri");
|
|
|
|
editor.putString(mUuid + ".transportUri", Utility.base64Encode(TEST_VALUE));
|
|
|
|
editor.commit();
|
|
|
|
|
|
|
|
// Read it, see if we get back the string as a sender string
|
|
|
|
mAccount.refresh(mPreferences);
|
|
|
|
assertEquals(TEST_VALUE, mAccount.getSenderUri());
|
|
|
|
|
|
|
|
// Update it - this will automatically convert it to the newer name
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
|
|
|
|
// Confirm that the field was replaced with the new form
|
|
|
|
String newString = mPreferences.mSharedPreferences.getString(mUuid + ".senderUri", null);
|
|
|
|
assertEquals(TEST_VALUE, Utility.base64Decode(newString));
|
|
|
|
String oldString = mPreferences.mSharedPreferences.getString(mUuid + ".transportUri", null);
|
|
|
|
assertNull(oldString);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test the update path for old IMAP accounts that didn't have DELETE_POLICY_ON_DELETE
|
|
|
|
* properly preset.
|
|
|
|
*/
|
|
|
|
public void testImapDeletePolicyUpdate() {
|
|
|
|
|
|
|
|
final String STORE_URI_IMAP = "imap://user:pass@imap-server.com";
|
|
|
|
final String STORE_URI_POP3 = "pop3://user:pass@pop3-server.com";
|
|
|
|
|
|
|
|
// Test 1: try it with a POP3 account - no update should occur
|
|
|
|
|
|
|
|
// create a dummy account
|
|
|
|
createTestAccount();
|
|
|
|
|
|
|
|
// set up a minimal POP3 account with default value
|
|
|
|
SharedPreferences.Editor editor = mPreferences.mSharedPreferences.edit();
|
|
|
|
editor.putString(mUuid + ".storeUri", Utility.base64Encode(STORE_URI_POP3));
|
|
|
|
editor.putInt(mUuid + ".deletePolicy", Account.DELETE_POLICY_NEVER);
|
|
|
|
editor.commit();
|
|
|
|
|
|
|
|
// read it in and confirm that we get the default value
|
|
|
|
mAccount.refresh(mPreferences);
|
|
|
|
assertEquals(Account.DELETE_POLICY_NEVER, mAccount.getDeletePolicy());
|
|
|
|
|
|
|
|
// flush it and confirm that we don't change the database
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
int storedPolicy = mPreferences.mSharedPreferences.getInt(mUuid + ".deletePolicy", -1);
|
|
|
|
assertEquals(Account.DELETE_POLICY_NEVER, storedPolicy);
|
|
|
|
|
|
|
|
// Test 2: try it with an IMAP account - this time we should see an auto-update
|
|
|
|
|
|
|
|
// create a dummy account
|
|
|
|
mAccount.delete(mPreferences);
|
|
|
|
createTestAccount();
|
|
|
|
|
|
|
|
// tweak it to have the wrong settings - this is what IMAP accounts look like
|
|
|
|
// with manual setup, in earlier versions
|
|
|
|
editor = mPreferences.mSharedPreferences.edit();
|
|
|
|
editor.putString(mUuid + ".storeUri", Utility.base64Encode(STORE_URI_IMAP));
|
|
|
|
editor.putInt(mUuid + ".deletePolicy", Account.DELETE_POLICY_NEVER);
|
|
|
|
editor.commit();
|
|
|
|
|
|
|
|
// Now read it in and confirm that we get the properly updated value
|
|
|
|
mAccount.refresh(mPreferences);
|
|
|
|
assertEquals(Account.DELETE_POLICY_ON_DELETE, mAccount.getDeletePolicy());
|
|
|
|
|
|
|
|
// Now flush it and confirm that we fixed the database
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
storedPolicy = mPreferences.mSharedPreferences.getInt(mUuid + ".deletePolicy", -1);
|
|
|
|
assertEquals(Account.DELETE_POLICY_ON_DELETE, storedPolicy);
|
|
|
|
}
|
2010-01-20 09:36:01 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Test new flags field (added only for backups - not used by real/legacy accounts)
|
|
|
|
*/
|
|
|
|
public void testFlagsField() {
|
|
|
|
createTestAccount();
|
|
|
|
assertEquals(0, mAccount.mBackupFlags);
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
mAccount.mBackupFlags = -1;
|
|
|
|
mAccount.refresh(mPreferences);
|
|
|
|
assertEquals(0, mAccount.mBackupFlags);
|
|
|
|
|
|
|
|
mAccount.mBackupFlags = Account.BACKUP_FLAGS_IS_BACKUP;
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
mAccount.mBackupFlags = -1;
|
|
|
|
mAccount.refresh(mPreferences);
|
|
|
|
assertEquals(Account.BACKUP_FLAGS_IS_BACKUP, mAccount.mBackupFlags);
|
|
|
|
|
|
|
|
mAccount.mBackupFlags = Account.BACKUP_FLAGS_SYNC_CONTACTS;
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
mAccount.mBackupFlags = -1;
|
|
|
|
mAccount.refresh(mPreferences);
|
|
|
|
assertEquals(Account.BACKUP_FLAGS_SYNC_CONTACTS, mAccount.mBackupFlags);
|
|
|
|
|
|
|
|
mAccount.mBackupFlags = Account.BACKUP_FLAGS_IS_DEFAULT;
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
mAccount.mBackupFlags = -1;
|
|
|
|
mAccount.refresh(mPreferences);
|
|
|
|
assertEquals(Account.BACKUP_FLAGS_IS_DEFAULT, mAccount.mBackupFlags);
|
|
|
|
}
|
|
|
|
|
2009-03-04 03:32:22 +00:00
|
|
|
/**
|
|
|
|
* Create a dummy account with minimal fields
|
|
|
|
*/
|
|
|
|
private void createTestAccount() {
|
|
|
|
mAccount = new Account(getContext());
|
|
|
|
mAccount.save(mPreferences);
|
|
|
|
|
|
|
|
mUuid = mAccount.getUuid();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|