1d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank/* 2d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Copyright (C) 2011 The Android Open Source Project 3d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * 4d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Licensed under the Apache License, Version 2.0 (the "License"); 5d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * you may not use this file except in compliance with the License. 6d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * You may obtain a copy of the License at 7d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * 8d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * http://www.apache.org/licenses/LICENSE-2.0 9d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * 10d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Unless required by applicable law or agreed to in writing, software 11d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * distributed under the License is distributed on an "AS IS" BASIS, 12d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * See the License for the specific language governing permissions and 14d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * limitations under the License. 15d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank */ 16d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 17d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankpackage com.android.exchange.utility; 18d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 19d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport com.android.emailcommon.provider.Account; 20d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport com.android.exchange.provider.EmailContentSetupUtils; 21d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 22d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.content.ContentResolver; 23d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.content.ContentUris; 24d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.content.Context; 25d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport android.test.AndroidTestCase; 26d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 27d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankimport java.util.ArrayList; 28d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 29d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blankpublic abstract class ExchangeTestCase extends AndroidTestCase { 30d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank private final ArrayList<Long> mCreatedAccountIds = new ArrayList<Long>(); 31d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank protected Context mProviderContext; 32d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 33d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank @Override 34d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank public void setUp() throws Exception { 35d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank super.setUp(); 36d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank mContext = getContext(); 37d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank // Could use MockContext here if we switch over 38d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank mProviderContext = mContext; 39d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 40d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 41d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank @Override 42d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank public void tearDown() throws Exception { 43d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank super.tearDown(); 44d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank ContentResolver resolver = mProviderContext.getContentResolver(); 45d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank for (Long accountId: mCreatedAccountIds) { 46d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank resolver.delete(ContentUris.withAppendedId(Account.CONTENT_URI, accountId), null, 47d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank null); 48d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 49d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 50d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 51d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank /** 52d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Add an account to our list of test accounts; we'll delete it automatically in tearDown() 53d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * @param account the account to be added to our list of test accounts 54d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank */ 55d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank protected void addTestAccount(Account account) { 56d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank if (account.mId > 0) { 57d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank mCreatedAccountIds.add(account.mId); 58d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 59d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 60d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank 61d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank /** 62d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * Create a test account that will be automatically deleted when the test is finished 63d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * @param name the name of the account 64d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * @param saveIt whether or not to save the account in EmailProvider 65d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank * @return the account created 66d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank */ 67d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank protected Account setupTestAccount(String name, boolean saveIt) { 68d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank Account account = EmailContentSetupUtils.setupAccount(name, saveIt, mProviderContext); 69d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank addTestAccount(account); 70d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank return account; 71d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank } 72d2e4d4675d04e78591ebd38fd084fc2cdbe144a0Marc Blank} 73