/* * Copyright (C) 2009 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.mail; import android.content.Context; import android.test.ProviderTestCase2; import android.test.suitebuilder.annotation.MediumTest; import com.android.email.provider.EmailProvider; import com.android.email.provider.ProviderTestUtils; import com.android.emailcommon.mail.MessagingException; import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.EmailContent; import com.android.emailcommon.provider.HostAuth; import com.android.emailcommon.provider.Mailbox; /** * Tests of StoreInfo & Store lookup in the Store abstract class * * You can run this entire test case with: * runtest -c com.android.email.mail.store.StoreTests email * */ @MediumTest public class StoreTests extends ProviderTestCase2<EmailProvider> { private Context mMockContext; @Override public void setUp() throws Exception { super.setUp(); mMockContext = getMockContext(); Store.sStores.clear(); } public StoreTests(Class<EmailProvider> providerClass, String providerAuthority) { super(EmailProvider.class, EmailContent.AUTHORITY); } public void testGetInstance() throws MessagingException { Store testStore; // POP3 Account testAccount = ProviderTestUtils.setupAccount("pop", false, mMockContext); HostAuth testAuth = new HostAuth(); testAccount.mHostAuthRecv = testAuth; testAuth.mAddress = "pop3.google.com"; testAuth.mProtocol = "pop3"; testAccount.save(mMockContext); testStore = Store.getInstance(testAccount, getContext()); assertEquals(1, Store.sStores.size()); assertSame(testStore, Store.sStores.get(testAccount.mId)); Store.sStores.clear(); // IMAP testAccount = ProviderTestUtils.setupAccount("pop", false, mMockContext); testAuth = new HostAuth(); testAccount.mHostAuthRecv = testAuth; testAuth.mAddress = "imap.google.com"; testAuth.mProtocol = "imap"; testAccount.save(mMockContext); testStore = Store.getInstance(testAccount, getContext()); assertEquals(1, Store.sStores.size()); assertSame(testStore, Store.sStores.get(testAccount.mId)); Store.sStores.clear(); // Unknown testAccount = ProviderTestUtils.setupAccount("unknown", false, mMockContext); testAuth = new HostAuth(); testAuth.mAddress = "unknown.google.com"; testAuth.mProtocol = "unknown"; try { testStore = Store.getInstance(testAccount, getContext()); fail("Store#getInstance() should have thrown an exception"); } catch (MessagingException expected) { } assertEquals(0, Store.sStores.size()); } public void testUpdateMailbox() { Mailbox testMailbox = new Mailbox(); Store.updateMailbox(testMailbox, 1L, "inbox", '/', true, Mailbox.TYPE_MAIL); assertEquals(1L, testMailbox.mAccountKey); assertEquals("inbox", testMailbox.mDisplayName); assertEquals("inbox", testMailbox.mServerId); assertEquals('/', testMailbox.mDelimiter); Store.updateMailbox(testMailbox, 2L, "inbox/a", '/', true, Mailbox.TYPE_MAIL); assertEquals(2L, testMailbox.mAccountKey); assertEquals("a", testMailbox.mDisplayName); assertEquals("inbox/a", testMailbox.mServerId); assertEquals('/', testMailbox.mDelimiter); Store.updateMailbox(testMailbox, 3L, "inbox/a/b/c/d", '/', true, Mailbox.TYPE_MAIL); assertEquals(3L, testMailbox.mAccountKey); assertEquals("d", testMailbox.mDisplayName); assertEquals("inbox/a/b/c/d", testMailbox.mServerId); assertEquals('/', testMailbox.mDelimiter); Store.updateMailbox(testMailbox, 4L, "inbox/a/b/c", '\0', true, Mailbox.TYPE_MAIL); assertEquals(4L, testMailbox.mAccountKey); assertEquals("inbox/a/b/c", testMailbox.mDisplayName); assertEquals("inbox/a/b/c", testMailbox.mServerId); assertEquals('\0', testMailbox.mDelimiter); } }