diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/clientmtms/test/src/T_CImPruneMessage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/clientmtms/test/src/T_CImPruneMessage.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,206 @@ +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Test for CImPruneMessage class. +// This class removes body text and attachment data from messages, leaving the message structure intact +// +// + +#include "emailtestutils.h" +#include +#include +#include + +_LIT(K_PLAIN_MSG, "c:\\mailtest\\rfc822\\plain_text.txt"); +_LIT(K_HTML_ATTACHMENT_MSG, "c:\\mailtest\\rfc822\\html_with_attachment.txt" ); +_LIT(K_TEST_INFO, "T_CImPruneMessage Test"); +_LIT(K_DESCRIPTION, "Testing pruning of messages containing text and attachment."); +_LIT(K_MSG_NOT_PRUNED,"\nWarning email not pruned\n* BODY text or attachment data still exists!*---Message entry id: %d--"); +_LIT(K_MSG_PRUNED,"\nSuccess: email pruned! Message entry id: %d "); +#define KErrMsgNotPruned 5601 + +RTest test(K_TEST_INFO); +LOCAL_D TMsvId pop3Service; +LOCAL_D CTrapCleanup* theCleanup; +LOCAL_D CEmailTestUtils* testUtils; +LOCAL_D TInt globalError = KErrNone; + + +LOCAL_C void InitL() + { + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CActiveScheduler::Install(scheduler); + CleanupStack::PushL(scheduler); + + testUtils = CEmailTestUtils::NewLC(test); + testUtils->CreateAllTestDirectories(); + + testUtils->WriteComment(K_TEST_INFO); + + testUtils->FileSession().SetSessionPath(_L("C:\\")); + testUtils->CleanMessageFolderL(); + testUtils->ClearEmailAccountsL(); + testUtils->GoServerSideL(); + } + +LOCAL_C void Closedown() + { + CleanupStack::PopAndDestroy(2); //testUtils, scheduler + } + +LOCAL_C void TestMessagePartsL(CMsvEntry& aEntry) + { + CMsvEntrySelection* sel = aEntry.ChildrenL(); + CleanupStack::PushL(sel); + + TInt count = sel->Count(); + for(TInt ii=0; iiCount(); ++ii) + { + aEntry.SetEntryL(sel->At(ii)); + + CMsvStore* store = aEntry.ReadStoreL(); + CleanupStack::PushL(store); + if (store->IsPresentL(KMsvEntryRichTextBody)) + { + // body text exist + globalError = KErrMsgNotPruned; + } + + MMsvAttachmentManager& attachmentMgr = store->AttachmentManagerL(); + if(attachmentMgr.AttachmentCount() > 0) + { + CMsvAttachment* attachmentInfo = attachmentMgr.GetAttachmentInfoL(0); + CleanupStack::PushL(attachmentInfo); + + if ((attachmentInfo->Type() == CMsvAttachment::EMsvFile) && (attachmentInfo->Size() != 0)) + { + // attachment data exist + globalError = KErrMsgNotPruned; + } + CleanupStack::PopAndDestroy(attachmentInfo); + } + CleanupStack::PopAndDestroy(store); + + + // recursively test other message parts + TestMessagePartsL(aEntry); + } + CleanupStack::PopAndDestroy(sel); + } + +LOCAL_C void doMainL() + { + // CImPruneMessage class removes body text and attachment data from messages, + // leaving the message structure intact + + InitL(); + + testUtils->FileSession().SetSessionPath(_L("c:\\")); + + testUtils->GoClientSideL(); + pop3Service = testUtils->CreatePopServiceL(); + + testUtils->GoServerSideL(); + + testUtils->CreateMessageL(K_PLAIN_MSG, pop3Service, pop3Service); + testUtils->CreateMessageL(K_HTML_ATTACHMENT_MSG, pop3Service, pop3Service); + testUtils->CreateMessageL(K_PLAIN_MSG, pop3Service, pop3Service); + testUtils->CreateMessageL(K_HTML_ATTACHMENT_MSG, pop3Service, pop3Service); + + test.Printf(_L("\nPerforming Prune Message Tests\n")); + + testUtils->GoClientSideL(); + + testUtils->iMsvEntry->SetEntryL(pop3Service); + TMsvEntry entry = testUtils->iMsvEntry->Entry(); + entry.SetVisible(ETrue); + testUtils->iMsvEntry->ChangeL(entry); + + CImPruneMessage* pruneMessage = CImPruneMessage::NewL(*testUtils->iMsvEntry, testUtils->FileSession()); + CleanupStack::PushL(pruneMessage); + CTestActive* testActive = new (ELeave) CTestActive(); + CleanupStack::PushL(testActive); + + testActive->StartL(); + + testUtils->TestStart(0, K_DESCRIPTION); + + pruneMessage->StartL(pop3Service, testActive->iStatus); + + CActiveScheduler::Start(); + + + // Get a list of pop messages (created above) + testUtils->iMsvEntry->SetEntryL(pop3Service); + CMsvEntrySelection* popMessages = testUtils->iMsvEntry->ChildrenL(); + CleanupStack::PushL(popMessages); + + TInt messageCount = popMessages->Count(); + TMsvId msgId; + TBuf<128> msgFail; + TBuf<128> msgPass; + + for(TInt ii=0; iiAt(ii); + testUtils->iMsvEntry->SetEntryL(msgId); + + // Go through the message parts and check that body text and attachment data are removed + TestMessagePartsL(*testUtils->iMsvEntry); + + if (globalError == KErrNone) + { + //email successfully prunned + msgPass.Format(K_MSG_PRUNED,msgId); + testUtils->WriteComment(msgPass); + } + else + { + msgFail.Format(K_MSG_NOT_PRUNED,msgId); + testUtils->WriteComment(msgFail); + break; + } + } + + testUtils->TestFinish(0, globalError); + + if (globalError == KErrNone) + { + testUtils->TestHarnessCompleted(); + } + else + { + testUtils->TestHarnessFailed(globalError); + } + + CleanupStack::PopAndDestroy(3,pruneMessage); // pruneMessage, testActive, popMessages + + Closedown(); + } + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + test.Start(_L("T_CImPruneMessage Test\n")); + theCleanup=CTrapCleanup::New(); + TRAPD(ret,doMainL()); + test(ret==KErrNone); + delete theCleanup; + test.End(); + test.Close(); + __UHEAP_MARKEND; + User::Heap().Check(); + return(KErrNone); + } +