blob: d171335cd7dfb9e2bc01c126bb8ca07a1440b782 [file] [log] [blame]
/*
* 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.Account;
import com.android.emailcommon.provider.EmailContent.AccountColumns;
import com.android.emailcommon.provider.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);
}
public void testNoopRemover() {
final Map<String, String> protocolMap = Maps.newHashMap();
protocolMap.put("imap", "imap");
protocolMap.put("pop3", "gPop3");
EmailBroadcastProcessorService.removeNoopUpgrades(protocolMap);
final Map<String, String> protocolMapExpected = Maps.newHashMap();
protocolMapExpected.put("pop3", "gPop3");
assertEquals(protocolMap, protocolMapExpected);
}
}