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