blob: 6b30b1d2d9551ef077a9644fbb64c0650e372bea [file] [log] [blame]
/*
* Copyright (C) 2009 Marc Blank
* Licensed to 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.exchange;
import android.test.suitebuilder.annotation.MediumTest;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.Mailbox;
import com.android.exchange.ExchangeService.SyncError;
import com.android.exchange.provider.EmailContentSetupUtils;
import com.android.exchange.utility.ExchangeTestCase;
import java.util.concurrent.ConcurrentHashMap;
/**
* You can run this entire test case with:
* runtest -c com.android.exchange.ExchangeServiceAccountTests exchange
*/
@MediumTest
public class ExchangeServiceAccountTests extends ExchangeTestCase {
public ExchangeServiceAccountTests() {
super();
}
public void testReleaseSyncHolds() {
ExchangeService exchangeService = new ExchangeService();
SyncError securityErrorAccount1 =
exchangeService.new SyncError(AbstractSyncService.EXIT_SECURITY_FAILURE, false);
SyncError ioError =
exchangeService.new SyncError(AbstractSyncService.EXIT_IO_ERROR, false);
SyncError securityErrorAccount2 =
exchangeService.new SyncError(AbstractSyncService.EXIT_SECURITY_FAILURE, false);
// Create account and two mailboxes
Account acct1 = setupTestAccount("acct1", true);
Mailbox box1 = EmailContentSetupUtils.setupMailbox("box1", acct1.mId, true,
mProviderContext);
Mailbox box2 = EmailContentSetupUtils.setupMailbox("box2", acct1.mId, true,
mProviderContext);
Account acct2 = setupTestAccount("acct2", true);
Mailbox box3 = EmailContentSetupUtils.setupMailbox("box3", acct2.mId, true,
mProviderContext);
Mailbox box4 = EmailContentSetupUtils.setupMailbox("box4", acct2.mId, true,
mProviderContext);
ConcurrentHashMap<Long, SyncError> errorMap = exchangeService.mSyncErrorMap;
// Add errors into the map
errorMap.put(box1.mId, securityErrorAccount1);
errorMap.put(box2.mId, ioError);
errorMap.put(box3.mId, securityErrorAccount2);
errorMap.put(box4.mId, securityErrorAccount2);
// We should have 4
assertEquals(4, errorMap.keySet().size());
// Release the holds on acct2 (there are two of them)
assertTrue(exchangeService.releaseSyncHolds(mProviderContext,
AbstractSyncService.EXIT_SECURITY_FAILURE, acct2));
// There should be two left
assertEquals(2, errorMap.keySet().size());
// And these are the two...
assertNotNull(errorMap.get(box2.mId));
assertNotNull(errorMap.get(box1.mId));
// Put the two back
errorMap.put(box3.mId, securityErrorAccount2);
errorMap.put(box4.mId, securityErrorAccount2);
// We should have 4 again
assertEquals(4, errorMap.keySet().size());
// Release all of the security holds
assertTrue(exchangeService.releaseSyncHolds(mProviderContext,
AbstractSyncService.EXIT_SECURITY_FAILURE, null));
// There should be one left
assertEquals(1, errorMap.keySet().size());
// And this is the one
assertNotNull(errorMap.get(box2.mId));
// Release the i/o holds on account 2 (there aren't any)
assertFalse(exchangeService.releaseSyncHolds(mProviderContext,
AbstractSyncService.EXIT_IO_ERROR, acct2));
// There should still be one left
assertEquals(1, errorMap.keySet().size());
// Release the i/o holds on account 1 (there's one)
assertTrue(exchangeService.releaseSyncHolds(mProviderContext,
AbstractSyncService.EXIT_IO_ERROR, acct1));
// There should still be one left
assertEquals(0, errorMap.keySet().size());
}
public void testIsSyncable() {
Account acct1 = setupTestAccount("acct1", true);
Mailbox box1 = EmailContentSetupUtils.setupMailbox("box1", acct1.mId, true,
mProviderContext, Mailbox.TYPE_DRAFTS);
Mailbox box2 = EmailContentSetupUtils.setupMailbox("box2", acct1.mId, true,
mProviderContext, Mailbox.TYPE_OUTBOX);
Mailbox box3 = EmailContentSetupUtils.setupMailbox("box2", acct1.mId, true,
mProviderContext, Mailbox.TYPE_ATTACHMENT);
Mailbox box4 = EmailContentSetupUtils.setupMailbox("box2", acct1.mId, true,
mProviderContext, Mailbox.TYPE_NOT_SYNCABLE + 64);
Mailbox box5 = EmailContentSetupUtils.setupMailbox("box2", acct1.mId, true,
mProviderContext, Mailbox.TYPE_MAIL);
assertFalse(ExchangeService.isSyncable(box1));
assertFalse(ExchangeService.isSyncable(box2));
assertFalse(ExchangeService.isSyncable(box3));
assertFalse(ExchangeService.isSyncable(box4));
assertTrue(ExchangeService.isSyncable(box5));
}
}