diff -r e3e31170f643 -r 147b85a37c23 email/email/pop/src/t_cpop3clientmtm.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/email/pop/src/t_cpop3clientmtm.cpp Fri Mar 05 11:15:10 2010 +0000 @@ -0,0 +1,507 @@ +// Copyright (c) 2008-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: +// [TestStep Name] +// UnitTestCPop3ClientMtm +// [Paramaters] +// [TestStep Description] +// Invokes the API of the class CPop3ClientMtm for improving code coverage. +// +// + +#include "t_cpop3clientmtm.h" + +#include +#include +//#include +#include +#include + +/* Literals Used */ +_LIT(KAccountName,"ImapAccountName"); +_LIT8(KConfigFileName, "ImapConfigFileName"); +_LIT(KDataComponentFilename, "c:\\system\\mtm\\testsmtm.dat"); +_LIT(KDummyRealAddress,"test001@msexchange01.closedtest.intra"); +_LIT(KDummyAlliasAddress,"subbutest"); +const TInt KTempId = 10; + +const TUid KUidTestServerMtmType={0x10001304}; +/** + Function : CT_CPop3ClientMtm + Description : Constructor + @param : aSharedDataIMAP Reference to CT_MsgSharedDataImap + @return : N/A +*/ +CT_CPop3ClientMtm::CT_CPop3ClientMtm(CT_MsgSharedDataPop& aSharedDataPOP) +: CT_MsgSyncStepPOP(aSharedDataPOP) + { + SetTestStepName(KUnitTestCPop3ClientMtm); + } + +/** + Function : ~CT_CPop3ClientMtm + Description : Destructor + @return : N/A +*/ +CT_CPop3ClientMtm::~CT_CPop3ClientMtm() + { + } + +void CT_CPop3ClientMtm::TestValidateMessageL() + { + TInt error = KErrGeneral; + INFO_PRINTF1(_L("Testing: Validate Message -- started")); + + TRAP(error, iSession = CMsvSession::OpenSyncL(*this)); + TEST(error == KErrNone); + + CClientMtmRegistry *theClientRegistry=CClientMtmRegistry::NewL(*iSession,KMsvDefaultTimeoutMicroSeconds32); + TEST(theClientRegistry != NULL); + TEST(theClientRegistry->IsPresent(KUidMsgTypePOP3)); + CleanupStack::PushL(theClientRegistry); + + CMsvEntry* cEntry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId, TMsvSelectionOrdering()); + CleanupStack::PushL(cEntry); + + CPop3ClientMtm *theClientMtm=(CPop3ClientMtm*)theClientRegistry->NewMtmL(KUidMsgTypePOP3); + + CMsvEntrySelection* selection = new(ELeave)CMsvEntrySelection; + CleanupStack::PushL(selection); + + cEntry->SetEntryL(KMsvRootIndexEntryId); + TMsvEntry service; + service.iType=KUidMsvServiceEntry; + service.iMtm = KUidTestServerMtmType; + cEntry->CreateL(service); + cEntry->SetEntryL(service.Id()); + selection->AppendL(service.Id()); + CleanupStack::PopAndDestroy(selection); + CleanupStack::Pop(cEntry); + + theClientMtm->SetCurrentEntryL(cEntry); + theClientMtm->SaveMessageL(); + INFO_PRINTF1(_L("Testing ValidateMessage with KMsvMessagePartRecipient")); + theClientMtm->ValidateMessage(KMsvMessagePartRecipient); + INFO_PRINTF1(_L("Testing ValidateMessage with KMsvMessagePartOriginator")); + theClientMtm->ValidateMessage(KMsvMessagePartOriginator); + CleanupStack::Pop(theClientRegistry); + delete iSession; + INFO_PRINTF1(_L("Testing: Validate Message -- ended")); + } + +void CT_CPop3ClientMtm::TestKErrNotSupportedAPI() +{ + TInt error = KErrGeneral; + INFO_PRINTF1(_L("Testing: Validate Message -- started")); + + CMsvOperationWait *active = CMsvOperationWait::NewLC(); + TRAP(error, iSession = CMsvSession::OpenSyncL(*this)); + TEST(error == KErrNone); + + CClientMtmRegistry *theClientRegistry=CClientMtmRegistry::NewL(*iSession,KMsvDefaultTimeoutMicroSeconds32); + TEST(theClientRegistry != NULL); + TEST(theClientRegistry->IsPresent(KUidMsgTypePOP3)); + CleanupStack::PushL(theClientRegistry); + + CMsvEntry* cEntry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId, TMsvSelectionOrdering()); + CleanupStack::PushL(cEntry); + + CPop3ClientMtm *theClientMtm=(CPop3ClientMtm*)theClientRegistry->NewMtmL(KUidMsgTypePOP3); + + CMsvEntrySelection* selection = new(ELeave)CMsvEntrySelection; + CleanupStack::PushL(selection); + + cEntry->SetEntryL(KMsvRootIndexEntryId); + TMsvEntry service; + service.iType=KUidMsvServiceEntry; + service.iMtm = KUidTestServerMtmType; + cEntry->CreateL(service); + cEntry->SetEntryL(service.Id()); + selection->AppendL(service.Id()); + CleanupStack::PopAndDestroy(selection); + CleanupStack::Pop(cEntry); + + theClientMtm->SetCurrentEntryL(cEntry); + theClientMtm->SaveMessageL(); + INFO_PRINTF1(_L("Testing: API - AddAttachmentL : started")); + TRAP(error, theClientMtm->AddAttachmentL(KAccountName,KConfigFileName, KTempId, active->iStatus)); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - AddAttachmentL : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - AddAttachmentL with FileSession : started")); + RFile *tempFile = NULL; + TRAP(error, theClientMtm->AddAttachmentL(*tempFile,KConfigFileName, KTempId, active->iStatus)); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - AddAttachmentL with FileSession : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - AddLinkedAttachmentL : started")); + TRAP(error, theClientMtm->AddLinkedAttachmentL(KAccountName,KConfigFileName, KTempId, active->iStatus)); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - AddLinkedAttachmentL : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - AddEntryAsAttachmentL : started")); + TRAP(error, theClientMtm->AddEntryAsAttachmentL(KTempId, active->iStatus)); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - AddEntryAsAttachmentL : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - CreateAttachmentL : started")); + TRAP(error, theClientMtm->CreateAttachmentL(KAccountName, *tempFile, KConfigFileName, KTempId, active->iStatus)); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - CreateAttachmentL : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - CreateMessageL : started")); + TRAP(error, theClientMtm->CreateMessageL(KTempId)); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - CreateMessageL : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - DefaultServiceL : started")); + TRAP(error, theClientMtm->DefaultServiceL()); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - DefaultServiceL : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - RemoveDefaultServiceL : started")); + TRAP(error, theClientMtm->RemoveDefaultServiceL()); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - RemoveDefaultServiceL : ended")); + error = KErrGeneral; + INFO_PRINTF1(_L("Testing: API - ChangeDefaultServiceL : started")); + TRAP(error, theClientMtm->ChangeDefaultServiceL(KTempId)); + TEST(error == KErrNotSupported); + INFO_PRINTF1(_L("Testing: API - ChangeDefaultServiceL : ended")); + + CleanupStack::Pop(theClientRegistry); + CleanupStack::PopAndDestroy(active); + delete iSession; +} + +void CT_CPop3ClientMtm::TestReplyL() + { + TInt error = KErrGeneral; + INFO_PRINTF1(_L("Testing: ReplyL -- started")); + + TRAP(error, iSession = CMsvSession::OpenSyncL(*this)); + TEST(error == KErrNone); + + CMsvOperationWait* active = CMsvOperationWait::NewLC(); + + CClientMtmRegistry *theClientRegistry=CClientMtmRegistry::NewL(*iSession,KMsvDefaultTimeoutMicroSeconds32); + TEST(theClientRegistry != NULL); + TEST(theClientRegistry->IsPresent(KUidMsgTypePOP3)); + CleanupStack::PushL(theClientRegistry); + + CMsvEntry* cEntry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId, TMsvSelectionOrdering()); + CleanupStack::PushL(cEntry); + + CPop3ClientMtm *theClientMtm=(CPop3ClientMtm*)theClientRegistry->NewMtmL(KUidMsgTypePOP3); + + CMsvEntrySelection* selection = new(ELeave)CMsvEntrySelection; + CleanupStack::PushL(selection); + + cEntry->SetEntryL(KMsvRootIndexEntryId); + TMsvEntry service; + service.iType=KUidMsvServiceEntry; + service.iMtm = KUidTestServerMtmType; + cEntry->CreateL(service); + cEntry->SetEntryL(service.Id()); + selection->AppendL(service.Id()); + CleanupStack::PopAndDestroy(selection); + CleanupStack::Pop(cEntry); + TMsvPartList partList = KMsvMessagePartBody | KMsvMessagePartAttachments | KMsvMessagePartDescription | KMsvMessagePartOriginator; + + theClientMtm->SetCurrentEntryL(cEntry); + CMsvOperation* operation = NULL; + active->Start(); + operation = theClientMtm->ReplyL(KMsvDraftEntryId, partList, active->iStatus); + CActiveScheduler::Start(); + TEST(operation->iStatus.Int()==KErrNone); + delete operation; + CleanupStack::Pop(theClientRegistry); + CleanupStack::Pop(active); + delete iSession; + INFO_PRINTF1(_L("Testing: ReplyL -- ended")); + } + +void CT_CPop3ClientMtm::TestAddAddresseeL() +{ + TInt error = KErrGeneral; + INFO_PRINTF1(_L("Testing: TestAddAddresseeL -- started")); + + CMsvOperationWait *active = CMsvOperationWait::NewLC(); + TRAP(error, iSession = CMsvSession::OpenSyncL(*this)); + TEST(error == KErrNone); + + CClientMtmRegistry *theClientRegistry=CClientMtmRegistry::NewL(*iSession,KMsvDefaultTimeoutMicroSeconds32); + TEST(theClientRegistry != NULL); + TEST(theClientRegistry->IsPresent(KUidMsgTypePOP3)); + CleanupStack::PushL(theClientRegistry); + + CMsvEntry* cEntry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId, TMsvSelectionOrdering()); + CleanupStack::PushL(cEntry); + + CPop3ClientMtm *theClientMtm=(CPop3ClientMtm*)theClientRegistry->NewMtmL(KUidMsgTypePOP3); + + CMsvEntrySelection* selection = new(ELeave)CMsvEntrySelection; + CleanupStack::PushL(selection); + + cEntry->SetEntryL(KMsvRootIndexEntryId); + TMsvEntry service; + service.iType=KUidMsvServiceEntry; + service.iMtm = KUidTestServerMtmType; + cEntry->CreateL(service); + cEntry->SetEntryL(service.Id()); + selection->AppendL(service.Id()); + CleanupStack::PopAndDestroy(selection); + CleanupStack::Pop(cEntry); + + theClientMtm->SetCurrentEntryL(cEntry); + theClientMtm->SaveMessageL(); + INFO_PRINTF1(_L("Testing: API - TestAddAddresseeL with realaddress")); + theClientMtm->AddAddresseeL(KDummyRealAddress); + INFO_PRINTF1(_L("Testing: API - TestAddAddresseeL with realaddress")); + theClientMtm->AddAddresseeL(KDummyRealAddress, KDummyAlliasAddress); + INFO_PRINTF1(_L("Testing: API - TestAddAddresseeL -- ended")); + + CleanupStack::Pop(theClientRegistry); + CleanupStack::PopAndDestroy(active); + delete iSession; +} + +void CT_CPop3ClientMtm::TestRemoveAddresseeL() +{ + TInt error = KErrGeneral; + INFO_PRINTF1(_L("Testing: TestAddAddresseeL -- started")); + + CMsvOperationWait *active = CMsvOperationWait::NewLC(); + TRAP(error, iSession = CMsvSession::OpenSyncL(*this)); + TEST(error == KErrNone); + + CClientMtmRegistry *theClientRegistry=CClientMtmRegistry::NewL(*iSession,KMsvDefaultTimeoutMicroSeconds32); + TEST(theClientRegistry != NULL); + TEST(theClientRegistry->IsPresent(KUidMsgTypePOP3)); + CleanupStack::PushL(theClientRegistry); + + CMsvEntry* cEntry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId, TMsvSelectionOrdering()); + CleanupStack::PushL(cEntry); + + CPop3ClientMtm *theClientMtm=(CPop3ClientMtm*)theClientRegistry->NewMtmL(KUidMsgTypePOP3); + + CMsvEntrySelection* selection = new(ELeave)CMsvEntrySelection; + CleanupStack::PushL(selection); + + cEntry->SetEntryL(KMsvRootIndexEntryId); + TMsvEntry service; + service.iType=KUidMsvServiceEntry; + service.iMtm = KUidTestServerMtmType; + cEntry->CreateL(service); + cEntry->SetEntryL(service.Id()); + selection->AppendL(service.Id()); + CleanupStack::PopAndDestroy(selection); + CleanupStack::Pop(cEntry); + + theClientMtm->SetCurrentEntryL(cEntry); + theClientMtm->SaveMessageL(); + theClientMtm->AddAddresseeL(KDummyRealAddress); + INFO_PRINTF1(_L("Testing: API - RemoveAddressee with realaddress")); + TInt firstAddress = 0; + theClientMtm->RemoveAddressee(firstAddress); + INFO_PRINTF1(_L("Testing: API - TestAddAddresseeL -- ended")); + + CleanupStack::Pop(theClientRegistry); + CleanupStack::PopAndDestroy(active); + delete iSession; +} + +void CT_CPop3ClientMtm::HandleSessionEventL(TMsvSessionEvent aEvent, TAny*, TAny*, TAny*) + { + INFO_PRINTF1(_L("Entered Handlesession EventL")); + switch(aEvent) + { + case EMsvEntriesCreated: + INFO_PRINTF1(_L("Entries created")); + break; + case EMsvEntriesChanged: + INFO_PRINTF1(_L("Entries Changed")); + break; + case EMsvEntriesDeleted: + INFO_PRINTF1(_L("Entried Deleted")); + break; + case EMsvEntriesMoved: + INFO_PRINTF1(_L("Entried Moved")); + break; + case EMsvMtmGroupInstalled: + INFO_PRINTF1(_L("Mtm Group Installed")); + break; + case EMsvMtmGroupDeInstalled: + INFO_PRINTF1(_L("Mtm Group De-installed")); + break; + case EMsvGeneralError: + INFO_PRINTF1(_L("General Error occured")); + break; + case EMsvCloseSession: + INFO_PRINTF1(_L("Session Closed")); + break; + case EMsvServerReady: + INFO_PRINTF1(_L("Server Ready")); + break; + case EMsvServerFailedToStart: + INFO_PRINTF1(_L("Failed to start")); + break; + case EMsvCorruptedIndexRebuilt: + INFO_PRINTF1(_L("Corrupted Intex rebuilt")); + break; + case EMsvServerTerminated: + INFO_PRINTF1(_L("Server terminated")); + break; + case EMsvMediaChanged: + INFO_PRINTF1(_L("Media Changed")); + break; + EMsvMediaUnavailable: + INFO_PRINTF1(_L("Media Unavailable")); + break; + case EMsvMediaAvailable: + INFO_PRINTF1(_L("Media Available")); + break; + case EMsvMediaIncorrect: + INFO_PRINTF1(_L("Media Incorrect")); + break; + case EMsvCorruptedIndexRebuilding: + INFO_PRINTF1(_L("Corrupted Index Rebuilding")); + break; + } + INFO_PRINTF1(_L("Exited Handlesession EventL")); + } + +/*TMsvId CT_CPop3ClientMtm::CreateMessageL() + { + // Handle command line arguments + //CCommandLineArguments* cmdLineArg=CCommandLineArguments::NewLC(); + //TInt count = cmdLineArg->Count(); + //TBool isCmdLine=FALSE; + //if (count>2) // Command line arguments? +// { +// if ((!(cmdLineArg->Arg(EArgTestParams).Compare(KTestParams))) && count==EArgEnd) +// isCmdLine=TRUE; +// } + +// testUtils->TestStart(testNo++); +// CTestActive* testActive = new (ELeave) CTestActive(); +// CleanupStack::PushL(testActive); + + TRAP(error, iSession = CMsvSession::OpenSyncL(*this)); + TEST(error == KErrNone); + + TMsvPartList partList = KMsvMessagePartBody | KMsvMessagePartAttachments | KMsvMessagePartDescription | KMsvMessagePartOriginator; + TMsvEmailTypeList msvEmailTypeList = 0; + + + CMsvOperationWait* active = CMsvOperationWait::NewLC(); + active->Start(); + CImEmailOperation* emailOperation = CImEmailOperation::CreateNewL(active->iStatus, *iSession, KMsvGlobalOutBoxIndexEntryId, partList, msvEmailTypeList, KUidMsgTypeSMTP); + CleanupStack::PushL(emailOperation); + +// TestUiTimer* testUiTimer = TestUiTimer::NewLC(test.Console(), emailOperation); +// testActive->StartL(); +// testUiTimer->IssueRequest(); + CActiveScheduler::Start(); + + TMsvId temp; + TPckgC paramPack(temp); + const TDesC8& progBuf = emailOperation->ProgressL(); + paramPack.Set(progBuf); + TMsvId messageId=paramPack(); + TInt error = emailOperation->iStatus.Int(); + CleanupStack::PopAndDestroy(emailOperation); + CleanupStack::PopAndDestroy(active); + //CleanupStack::PopAndDestroy(3, testActive); // testActive, emailOperation, testUiTimer + //testUtils->TestFinish(testNo-1, error); + //log->AppendComment(_L8(" Messages created in the outbox")); + + // fill in details for email message + testUtils->iMsvEntry->SetEntryL(messageId); + CMsvStore* store = testUtils->iMsvEntry->EditStoreL(); + CleanupStack::PushL(store); + CImHeader* header = CImHeader::NewLC(); + header->RestoreL(*store); + + if (isCmdLine) + { + TBuf<100> buf; + TLex lex(cmdLineArg->Arg(EArgEmail)); + buf=lex.NextToken(); + header->ToRecipients().AppendL(buf); + } + else + header->ToRecipients().AppendL(_L("t_smtc@lon-msgtest06.intra")); + + header->SetSubjectL(_L("Message from T_SMTC Typhoon!!")); + header->StoreL(*store); + store->CommitL(); + CleanupStack::PopAndDestroy(3, cmdLineArg); // cmdLineArg, header, store + + //store some body text!! + CParaFormatLayer* paraFormatLayer=CParaFormatLayer::NewL(); + CleanupStack::PushL(paraFormatLayer); + + CCharFormatLayer* charFormatLayer=CCharFormatLayer::NewL(); + CleanupStack::PushL(charFormatLayer); + + CRichText* bodyText=CRichText::NewL(paraFormatLayer, charFormatLayer, CEditableText::EFlatStorage, 256); + CleanupStack::PushL(bodyText); + + TBuf<100> bodyContents = _L("Test body contents so that we can test the store body text code."); + bodyText->InsertL(0, bodyContents); + + // store the body text + testActive = new (ELeave) CTestActive(); + CleanupStack::PushL(testActive); + + CImEmailMessage* imEmailMessage = CImEmailMessage::NewLC(*(testUtils->iMsvEntry)); + imEmailMessage->StoreBodyTextL(messageId, *bodyText, testActive->iStatus); + testActive->StartL(); + CActiveScheduler::Start(); // wait for the asynch operation to complete + CleanupStack::PopAndDestroy(5, paraFormatLayer); // imEmailMessage, testActive, bodyText, charFormatLayer, paraFormatLayer + + // Add an attachment + testActive = new (ELeave) CTestActive(); + CleanupStack::PushL(testActive); + + imEmailMessage = CImEmailMessage::NewLC(*(testUtils->iMsvEntry)); + CMsvAttachment* attachmentInfo = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); + CleanupStack::PushL(attachmentInfo); + imEmailMessage->AttachmentManager().AddAttachmentL(KAttachment1,attachmentInfo,testActive->iStatus); + CleanupStack::Pop(attachmentInfo); + testActive->StartL(); + CActiveScheduler::Start(); // wait for the asynch operation to complete + CleanupStack::PopAndDestroy(2, testActive); + + return messageId; + }*/ + +/** + Function : doTestStepL + Description : + @return : TVerdict - Test step result + @leave : KMsvNullIndexEntryId Invalid IMAP account name specified +*/ +TVerdict CT_CPop3ClientMtm::doTestStepL() + { + INFO_PRINTF1(_L("Test Step : CPop3ClientMtm Started")); + TestValidateMessageL(); + //TestReplyL(); + TestKErrNotSupportedAPI(); + TestAddAddresseeL(); + TestRemoveAddresseeL(); + INFO_PRINTF1(_L("Test Step : CPop3ClientMtm Ended")); + + return TestStepResult(); + }