139 lines
5.6 KiB
Java
139 lines
5.6 KiB
Java
/*
|
|
* Copyright (C) 2011 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.service;
|
|
|
|
import com.android.email.AccountTestCase;
|
|
import com.android.email.provider.ProviderTestUtils;
|
|
import com.android.emailcommon.provider.EmailContent.Account;
|
|
import com.android.emailcommon.provider.EmailContent.AccountColumns;
|
|
import com.android.emailcommon.provider.EmailContent.HostAuth;
|
|
import com.android.emailcommon.utility.Utility;
|
|
|
|
import android.content.ContentUris;
|
|
import android.content.Context;
|
|
import android.net.Uri;
|
|
|
|
import java.util.NoSuchElementException;
|
|
|
|
/**
|
|
* Tests of the Email provider.
|
|
*
|
|
* You can run this entire test case with:
|
|
* runtest -c com.android.email.service.EmailBroadcastProcessorServiceTests email
|
|
*/
|
|
public class EmailBroadcastProcessorServiceTests extends AccountTestCase {
|
|
|
|
Context mMockContext;
|
|
|
|
public EmailBroadcastProcessorServiceTests() {
|
|
super();
|
|
}
|
|
|
|
@Override
|
|
public void setUp() throws Exception {
|
|
super.setUp();
|
|
mMockContext = getMockContext();
|
|
}
|
|
|
|
@Override
|
|
public void tearDown() throws Exception {
|
|
super.tearDown();
|
|
}
|
|
|
|
/**
|
|
* Create a simple HostAuth with protocol
|
|
*/
|
|
private HostAuth setupSimpleHostAuth(String protocol) {
|
|
HostAuth hostAuth = ProviderTestUtils.setupHostAuth(protocol, "name", false, mContext);
|
|
hostAuth.mProtocol = protocol;
|
|
return hostAuth;
|
|
}
|
|
|
|
/**
|
|
* Returns the flags for the specified account. Throws an exception if the account cannot
|
|
* be found.
|
|
*/
|
|
private int getAccountFlags(long accountId) throws NoSuchElementException {
|
|
Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, accountId);
|
|
Integer flags = Utility.getFirstRowInt(mMockContext, uri,
|
|
new String[] { AccountColumns.FLAGS }, null, null, null, 0);
|
|
if (flags == null) {
|
|
throw new NoSuchElementException("No cursor");
|
|
}
|
|
return flags;
|
|
}
|
|
|
|
/**
|
|
* Initial testing on setupSyncReportsLocked, making sure that EAS accounts aren't scheduled
|
|
*/
|
|
public void testSetImapDeletePolicy() {
|
|
// Setup accounts of each type, all with manual sync at different intervals
|
|
Account account1 = ProviderTestUtils.setupAccount("eas-account1", false, mMockContext);
|
|
account1.mHostAuthRecv = setupSimpleHostAuth("eas");
|
|
account1.mHostAuthSend = account1.mHostAuthRecv;
|
|
account1.save(mMockContext);
|
|
long accountId1 = account1.mId;
|
|
Account account2 = ProviderTestUtils.setupAccount("pop-account1", false, mMockContext);
|
|
account2.mHostAuthRecv = setupSimpleHostAuth("pop3");
|
|
account2.mHostAuthSend = setupSimpleHostAuth("smtp");
|
|
account2.mFlags = 0x08; // set delete policy
|
|
account2.save(mMockContext);
|
|
long accountId2 = account2.mId;
|
|
Account account3 = ProviderTestUtils.setupAccount("pop-account2", false, mMockContext);
|
|
account3.mHostAuthRecv = setupSimpleHostAuth("pop3");
|
|
account3.mHostAuthSend = setupSimpleHostAuth("smtp");
|
|
account3.save(mMockContext);
|
|
long accountId3 = account3.mId;
|
|
Account account4 = ProviderTestUtils.setupAccount("imap-account1", false, mMockContext);
|
|
account4.mHostAuthRecv = setupSimpleHostAuth("imap");
|
|
account4.mHostAuthSend = setupSimpleHostAuth("smtp");
|
|
account4.mFlags = 0xa5a5a5a5; // Alternating bits; includes bad delete policy
|
|
account4.save(mMockContext);
|
|
long accountId4 = account4.mId;
|
|
Account account5 = ProviderTestUtils.setupAccount("imap-account2", false, mMockContext);
|
|
account5.mHostAuthRecv = setupSimpleHostAuth("imap");
|
|
account5.mHostAuthSend = setupSimpleHostAuth("smtp");
|
|
account5.mFlags = 0x0c; // All delete policy bits set
|
|
account5.save(mMockContext);
|
|
long accountId5 = account5.mId;
|
|
Account account6 = ProviderTestUtils.setupAccount("imap-account3", false, mMockContext);
|
|
account6.mHostAuthRecv = setupSimpleHostAuth("imap");
|
|
account6.mHostAuthSend = setupSimpleHostAuth("smtp");
|
|
account6.mFlags = 0; // No delete policy bits set
|
|
account6.save(mMockContext);
|
|
long accountId6 = account6.mId;
|
|
|
|
// Run the account migration
|
|
EmailBroadcastProcessorService.setImapDeletePolicy(mMockContext);
|
|
|
|
// Test the results
|
|
int accountFlags1 = getAccountFlags(accountId1);
|
|
assertEquals(4, accountFlags1); // not IMAP; no changes
|
|
int accountFlags2 = getAccountFlags(accountId2);
|
|
assertEquals(8, accountFlags2); // not IMAP; no changes
|
|
int accountFlags3 = getAccountFlags(accountId3);
|
|
assertEquals(4, accountFlags3); // not IMAP; no changes
|
|
int accountFlags4 = getAccountFlags(accountId4);
|
|
assertEquals(0xa5a5a5a9, accountFlags4); // Only update delete policy bits
|
|
int accountFlags5 = getAccountFlags(accountId5);
|
|
assertEquals(0x00000008, accountFlags5);
|
|
int accountFlags6 = getAccountFlags(accountId6);
|
|
assertEquals(0x00000008, accountFlags6);
|
|
}
|
|
|
|
}
|