ipsservices/tsrc/profiletester/src/popimapprofiletesterBlocks.cpp
branchRCL_3
changeset 70 968773a0b6ef
child 80 726fba06891a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/tsrc/profiletester/src/popimapprofiletesterBlocks.cpp	Tue Sep 14 20:48:24 2010 +0300
@@ -0,0 +1,1347 @@
+/* ============================================================================
+ *  Name        :  popimapprofiletesterBlocks.cpp
+ *  Part of     :  ipsservices / profiletester 
+ *  Description :: STIF test cases
+ *  Version     : %version: 1 % << Don't touch! Updated by Synergy at check-out.
+ *
+ *  Copyright © 2010-2010 Nokia and/or its subsidiary(-ies).  All rights reserved.
+ *  This material, including documentation and any related computer
+ *  programs, is protected by copyright controlled by Nokia.  All
+ *  rights are reserved.  Copying, including reproducing, storing,
+ *  adapting or translating, any or all of this material requires the
+ *  prior written consent of Nokia.  This material also contains
+ *  confidential information which may not be disclosed to others
+ *  without the prior written consent of Nokia.
+ * ============================================================================
+ */
+
+//--INCLUDE FILES-- 
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include <e32math.h>
+#include <msvids.h>
+#include "popimapprofiletester.h"
+_LIT( KPopImapProfileTester, "c:\\TestFramework\\TestFramework_ips.ini" );
+_LIT( KStifEmailSubject, "STIF Basic Operations test" );
+_LIT( KStifEmailSubjectDes,"STIF_");
+_LIT( KStifEmailBodyText, "This is a temporary STIF test message");
+_LIT( KStifEmailSubjectAttHandling, "STIF Attachment Handling Test" );
+_LIT( KStifEmailToRec1, "dummyTo1@empty.com" );
+_LIT( KStifEmailCcRec1, "dummyCc1@empty.com" );
+_LIT( KStifEmailCcRec2, "dummyCc2@empty.com" );
+_LIT( KStifEmailBccRec1, "dummyBcc1@empty.com" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CPopImapProfileTester::Delete()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::RunMethodL(CStifItemParser& aItem)
+    {
+    static TStifFunctionInfo const
+            KFunctions[] =
+                {
+                        // Copy this line for every implemented function.
+                        // First string is the function name used in TestScripter script file.
+                        // Second is the actual implementation member function. 
+                        ENTRY( "SetupAccount", CPopImapProfileTester::SetupAccountL ),
+                        ENTRY( "GoOnline", CPopImapProfileTester::GoOnlineL ),
+                        ENTRY( "GoOffline", CPopImapProfileTester::GoOfflineL ),
+                        ENTRY( "RefreshNow", CPopImapProfileTester::RefreshNowL ),
+                        ENTRY( "CancelSync", CPopImapProfileTester::CancelSyncL ),
+                        ENTRY( "ListStandardFolders", CPopImapProfileTester::ListStandardFoldersL ),
+                        ENTRY( "ListFolders", CPopImapProfileTester::ListFoldersL ),
+                        ENTRY( "ListMessages", CPopImapProfileTester::ListMessagesL ),
+                        ENTRY( "FetchMessages", CPopImapProfileTester::FetchMessagesL ),
+                        ENTRY( "SendMessage", CPopImapProfileTester::SendMessageL ),
+                        ENTRY( "BasicMsgOperations", CPopImapProfileTester::BasicMsgOperationsL ),
+                        ENTRY( "CopyMoveMsgs", CPopImapProfileTester::CopyMoveMsgsL ),
+                        ENTRY( "Search", CPopImapProfileTester::SearchL ),
+                        ENTRY( "AttachmentHandling", CPopImapProfileTester::AttachmentHandlingL ),
+                        ENTRY( "Branding", CPopImapProfileTester::BrandingL ),
+                        ENTRY( "DeleteMsgs", CPopImapProfileTester::DeleteMsgsL ),
+                        ENTRY( "RemoveAccount", CPopImapProfileTester::RemoveAccountL ),
+                };
+
+    const TInt count = sizeof(KFunctions) / sizeof(TStifFunctionInfo);
+
+    InitMailboxL();
+    return RunInternalL(KFunctions, count, aItem);
+    }
+
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester:: SetupAccountL
+// Method used to create an imap or pop account, depends on .cfg file
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::SetupAccountL(CStifItemParser& /* aItem */)
+    {
+    //I.Check if mail client exists
+    if (NULL == iMailClient)
+        {
+        iLog->Log(_L( "Error: Failed to create test instance(No Memory)." ));
+        return KErrNoMemory;
+        }
+    TInt err(KErrNone);
+
+    // II. Check if imap/pop profile already exists
+
+    if (NULL != iIPSMailbox)
+        {
+        iLog->Log(_L("Error: There is IMAP/POP profile alredy existed"));
+        return KErrAlreadyExists;
+        }
+
+    iLog->Log(_L( "== SetupAccount Begins ==" ));
+    TAccountSetting settings;
+    // III. Read settings and write to CR
+    ReadAccountSettings(settings);
+    err = WriteToWizardCRL(settings);
+    iLog->Log(_L( "== WriteToWizardCR Ends err=%d" ), err);
+    iLog->Log(_L( "== End a transaction in SetupAccount ==" ));
+
+    // IV. Create mailbox through WizardDataAvailableL()
+    err = iMailClient->WizardDataAvailableL();
+    if (KErrNone == err)
+        WaitForEvent(TFSEventNewMailbox, NULL, NULL, KTenSecondsTime);
+    err = InitMailboxL();
+    if ((KErrNone == err) && NULL != iIPSMailbox)
+        err = KErrNone;
+    else
+        err = KErrGeneral;
+
+    iLog->Log(_L( "== SetupAccount Ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester:: GoOnlineL
+// Method used to let phone online
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::GoOnlineL(CStifItemParser& /* aItem */)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+
+    iLog->Log(_L( "== GoOnline Begins ==" ));
+
+    // check current mailbox status
+    TBuf<10> statusDes;
+    TFSMailBoxStatus status = iIPSMailbox->GetMailBoxStatus();
+    if (status == EFSMailBoxOffline)
+        {
+        statusDes.Copy(_L("offline"));
+        }
+    else if (status == EFSMailBoxOnline)
+        {
+        statusDes.Copy(_L("online"));
+        iLog->Log(_L("Mailbox has been Online, go offline firstly"));
+        iLog->Log(_L( "== GoOnline ends err=%d" ), err);
+        return KErrGeneral;
+        }
+    else
+        {
+        statusDes.Copy(_L("unknown"));
+        }
+
+    iLog->Log(_L("Going online (from %S)..."), &statusDes);
+    TSSMailSyncState syncstatus = iIPSMailbox->CurrentSyncState();
+    // call function to go online
+    iEventSynchronousCall = ETrue;
+    iIPSMailbox->GoOnlineL();
+    syncstatus = iIPSMailbox->CurrentSyncState();
+    // we should likely base on TFSEventMailboxOnline, but this does not come always (?)
+    err = WaitForEvent(TFSEventMailboxOnline, NULL, NULL, KOneMinuteTime);
+
+    syncstatus = iIPSMailbox->CurrentSyncState();
+
+    //check status of current mailbox again
+    status = iIPSMailbox->GetMailBoxStatus();
+
+    if (status == EFSMailBoxOnline)
+        {
+        err = KErrNone;
+        iLog->Log(_L("Success: mailbox online"));
+        }
+    else
+        {
+        err = KErrGeneral;
+        iLog->Log(_L("Failed: mailbox status- %S"), &statusDes);
+        }
+
+    iLog->Log(_L( "== GoOnline ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester:: GoOfflineL
+// Method used to let phone offline
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::GoOfflineL(CStifItemParser& /* aItem */)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+
+    iLog->Log(_L( "== GoOffline Begins ==" ));
+    TBuf<10> statusDes;
+    TFSMailBoxStatus status = iIPSMailbox->GetMailBoxStatus();
+    if (status == EFSMailBoxOffline)
+        {
+        statusDes.Copy(_L("offline"));
+        iLog->Log(_L("Mailbox has been Offline, go online firstly"));
+        iLog->Log(_L( "== GoOffline ends err=%d" ), err);
+        return KErrGeneral;
+        }
+    else if (status == EFSMailBoxOnline)
+        {
+        statusDes.Copy(_L("online"));
+        }
+    else
+        {
+        statusDes.Copy(_L("unknown"));
+        }
+
+    iLog->Log(_L("Going offline (from %S)..."), &statusDes);
+
+    // call function to go offline
+    iEventSynchronousCall = ETrue;
+    TSSMailSyncState syncstatus = iIPSMailbox->CurrentSyncState();
+    iIPSMailbox->GoOfflineL();
+    syncstatus = iIPSMailbox->CurrentSyncState();
+    err = WaitForEvent(TFSEventMailboxOffline, NULL, NULL, KOneMinuteTime);
+    syncstatus = iIPSMailbox->CurrentSyncState();
+    //check status of current mailbox again
+    status = iIPSMailbox->GetMailBoxStatus();
+
+    if (status == EFSMailBoxOffline)
+        {
+        iLog->Log(_L("Success: mailbox offline"));
+        }
+    else
+        {
+        err = KErrGeneral;
+        iLog->Log(_L("Failed: mailbox status- %S"), &statusDes);
+        }
+
+    iLog->Log(_L( "GoOffline ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester:: RefreshNowL
+// Method used to let phone refresh
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::RefreshNowL(CStifItemParser& /* aItem */)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+    iLog->Log(_L( "RefreshNow begins" ));
+    TInt reqId = iIPSMailbox->RefreshNowL(*this);
+    iLog->Log(_L("Request Id -> %d"), reqId);
+    TSSMailSyncState syncstatus = iIPSMailbox->CurrentSyncState();
+    if ((StartingSync == syncstatus) || (EmailSyncing == syncstatus))
+        err = WaitForEvent(TFSEventMailboxOnline);
+    else
+        err = KErrGeneral;
+    if (err == KErrNone)
+        {
+        WaitForResponse(TFSProgress::EFSStatus_RequestComplete, KOneMinuteTime*3);
+        syncstatus = iIPSMailbox->CurrentSyncState();
+        }
+    iLog->Log(_L( "RefreshNow ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester:: CancelSyncL
+// Method used to cancle action of Sync.
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::CancelSyncL(CStifItemParser& /* aItem */)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+    iLog->Log(_L( "CancelSync begins" ));
+    iIPSMailbox->RefreshNowL(*this);
+    err = WaitForEvent(TFSEventMailboxOnline);
+    if (KErrNone == err)
+        {
+        iIPSMailbox->CancelSyncL();
+        err = WaitForEvent(TFSEventMailboxOffline);
+        TSSMailSyncState syncstatus = iIPSMailbox->CurrentSyncState();
+        if ((err != KErrNone) || (Idle != syncstatus))
+        	{
+            err = KErrGeneral;
+        	}
+        }
+    iLog->Log(_L( "CancelSync ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::ListStandardFoldersL
+// Method used to list standard folders
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::ListStandardFoldersL(CStifItemParser& /* aItem */)
+    {
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+
+    TInt err(KErrNone);
+    iLog->Log(_L( "ListStandardFolders begins" ));
+
+    // list all root folders
+    RPointerArray<CFSMailFolder> rootFolders;
+    iIPSMailbox->ListFolders(TFSMailMsgId(), rootFolders);
+
+    // how many root folders we have
+    TInt rootFolderCount = rootFolders.Count();
+
+    /* Standard folders are:
+     * EFSInbox, EFSOutbox, EFSDraftsFolder, EFSSentFolder, EFSDeleted
+     * IMAP/POP may not have 'EFSDeleted'? Four only?
+     */
+
+    // check if all standard folders are present among root folders
+    TFSMailMsgId folderId = TFSMailMsgId();
+    iLog->Log(_L("== List of Standard Folders == "));
+    for (TInt i = 1; i < EFSDeleted; ++i)
+        {
+        folderId = iIPSMailbox->GetStandardFolderId((TFSFolderType) i);
+        TBool folderPresent = EFalse;
+        for (TInt ii = 0; ii < rootFolderCount; ++ii)
+            {
+            if (rootFolders[ii]->GetFolderId() == folderId)
+                {
+                iLog->Log(_L("   %S"), &rootFolders[ii]->GetFolderName());
+                folderPresent = ETrue;
+                break;
+                }
+            }
+        if (NULL == folderPresent)
+            {
+            iLog->Log(_L("  Error: folder of id %d is missing"), i);
+            err = KErrNotFound;
+            }
+        }
+    rootFolders.ResetAndDestroy();
+
+    iLog->Log(_L( "ListStandardFolders ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::ListFoldersL
+// Method used to list all folders
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::ListFoldersL(CStifItemParser& aItem)
+    {
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+    /**
+     * 1. Check subfolders of given folder - use ListFolders(FSMailMsgId, RPointerArray<CFSMailFolder>&)
+     * 2. List all folders and compare check cout of listed folders - use ListFolders()
+     * 
+     */
+    TInt paramErr(KErrNone);
+    TInt err(KErrNone);
+    iLog->Log(_L( "ListFoldersL begins" ));
+    iLog->Log(_L( "Mailbox's Id: %x"), iIPSMailbox->GetId().Id());
+
+    RPointerArray<CFSMailFolder>& folders = iIPSMailbox->ListFolders();
+    //.. 
+    // 1. subfolders check
+    TPtrC parentFolderS, subfolderSetS, subfolderS;
+
+    //get parent folder name  
+    paramErr = aItem.GetString(_L("_parentFolder:"), parentFolderS);
+    TFSMailMsgId parentFolderId = GetFolderIdFromName(parentFolderS);
+
+    if (!parentFolderId.IsNullId())
+        {
+        iLog->Log(_L("Testing folder hierachy"));
+        iLog->Log(_L("Parent folder found; id: %x"), parentFolderId.Id());
+
+        RPointerArray<CFSMailFolder> subfolders;
+        iIPSMailbox->ListFolders(parentFolderId, subfolders);
+
+        TInt subfolderErr(KErrNone);
+        //there should be at least one subfolder defined  
+        paramErr &= aItem.GetString(_L("_subfolders:"), subfolderSetS);
+
+        TInt idx(0);
+        do
+            {
+            idx = subfolderSetS.Locate(',');
+            if (idx > 0)
+                {
+                // extract next subfolder
+                subfolderS.Set(subfolderSetS.Left(idx));
+                // skip current subfolder
+                subfolderSetS.Set(subfolderSetS.Mid(idx + 1));
+                }
+            else
+                {
+                subfolderS.Set(subfolderSetS);
+                }
+
+            // check subfolder 
+            subfolderErr = KErrNotFound;
+            for (TInt i = 0; (i < folders.Count() && !paramErr); i++)
+                {
+                if (folders[i]->GetFolderName().Compare(subfolderS) == 0)
+                    {
+                    subfolderErr = KErrNone;
+                    iLog->Log(
+                            _L("Subfolder %S of parent folder %S found; id: %x"),
+                            &(folders[i]->GetFolderName()), &parentFolderS,
+                            folders[i]->GetFolderId().Id());
+                    break;
+                    }
+                }
+
+            }
+        while (!subfolderErr && idx >= 0);
+
+        //set global err value - zeroes err if OK 
+        err &= subfolderErr;
+        subfolders.ResetAndDestroy();
+        }//end if '!parentFolderId.IsNullId()'
+
+    //parse params - we have to know what actualy we are testing
+    TInt foldersCount(0);
+    paramErr &= aItem.GetInt(_L("_expectedFoldersCount:"), foldersCount);
+    //.. 
+    // 2. total number of folders
+    if (foldersCount > 0)
+        {
+        (folders.Count() == foldersCount) ? err = KErrNone : err = KErrGeneral;
+        iLog->Log(_L("Actual folders count: %d vs. %d expected"),
+                folders.Count(), foldersCount);
+        }
+    //..
+
+    if (paramErr != 0)
+        {
+        iLog->Log(_L("  Error: Invalid test case parameters!"));
+        }
+
+    iLog->Log(_L( "ListFolders ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::ListMessagesL
+// Method used to list messages in a specific folder
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::ListMessagesL(CStifItemParser& aItem)
+    {
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+
+    TInt err(KErrNone);
+    iLog->Log(_L( "ListMessagesL begins" ));
+
+    // I. get test case params
+    TPtrC folderName;
+    TInt msgCount(0);
+
+    // since folder name might consists of more than one word
+    // lets use quote parsing for param
+    aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing);
+    if (aItem.GetString(_L("_folder:"), folderName))
+        {
+        iLog->Log(_L("Error: test case argument is missing"));
+        err = KErrArgument;
+        }
+    else
+        {
+        // II. Get folder of given name and list its emails
+        CFSMailFolder* folder = FindFolder(folderName);
+        if (NULL != folder)
+            {
+            RPointerArray<CFSMailMessage> messages;
+            TInt gotMsgs = GetMessagesFromFolderL(messages, folder,
+                    EFSMsgDataSubject, EFSMailSortByDate, msgCount);
+            if (gotMsgs > 0)
+                {
+                iLog->Log(_L("  Listing first %d emails:"), gotMsgs);
+                }
+            for (TInt i = 0; i < messages.Count(); ++i)
+                {
+                iLog->Log(_L("    %d. %S"), i + 1, &messages[i]->GetSubject());
+                }
+            if (gotMsgs != messages.Count())
+                { // warning, NextL() returned fewer entries than expected
+                TInt diff = gotMsgs > messages.Count() ? gotMsgs
+                        - messages.Count() : messages.Count() - gotMsgs;
+                iLog->Log(_L("Warning: %d entries are still not be listed."),
+                        diff);
+                err = KErrNotFound;
+                }
+            messages.ResetAndDestroy();
+            }//end if 'folder'
+        else
+            {
+            iLog->Log(_L("Error: %S folder not found"), &folderName);
+            err = KErrNotFound;
+            }
+        }//end if 'folderName'
+
+    iLog->Log(_L( "ListMessages ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::FetchMessagesL
+// Method used to fetch messages in a specific folder
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::FetchMessagesL(CStifItemParser& aItem)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrGeneral;
+        }
+    iLog->Log(_L( "FetchMessages begins" ));
+
+    /**
+     * Params:
+     * - folder name; Inbox if not provided 
+     */
+    TFSMailMsgId msgFolderId;
+    TPtrC folderS;
+
+    //get folder name  
+    if (aItem.GetString(_L("_messageFolder:"), folderS) == KErrNone)
+        {
+        RPointerArray<CFSMailFolder>& folders = iIPSMailbox->ListFolders();
+        // find and get folder id
+        for (TInt i = 0; i < folders.Count(); i++)
+            {
+            if (folders[i]->GetFolderName().Compare(folderS) == 0)
+                {
+                msgFolderId = folders[i]->GetFolderId();
+                iLog->Log(_L("Message will be fetched from %S folder"),
+                        &folderS);
+                break;
+                }
+            }
+        }
+    if (msgFolderId.IsNullId())
+        {
+        iLog->Log(
+                _L("Proper message folder not provided, Inbox folder will be used instead"));
+        msgFolderId = iIPSMailbox->GetStandardFolderId(EFSInbox);
+        }
+    CFSMailFolder* folder = NULL;
+    // get message folder
+    TRAPD(trapErr, folder = iMailClient->GetFolderByUidL(iIPSMailbox->GetId(),msgFolderId));
+    CleanupStack::PushL(folder);
+
+    if (KErrNone == trapErr)
+        {
+        //to get messages from folder
+        RPointerArray<CFSMailMessage> allMessages;
+        GetMessagesFromFolderL(allMessages, folder, EFSMsgDataIdOnly,
+                EFSMailSortByDate, folder->GetMessageCount());
+
+        if (allMessages.Count() > 0)
+            {
+            RArray<TFSMailMsgId> messages;
+            CleanupClosePushL(messages);
+            messages.Append(allMessages[0]->GetMessageId());
+
+            // not used in function
+            TFSMailDetails ruleToFetch = EFSMsgDataEnvelope;
+
+            TRAP(err,folder->FetchMessagesL(messages,ruleToFetch,*this));
+            WaitForResponse(TFSProgress::EFSStatus_RequestComplete,
+                    KOneMinuteTime);
+            if (KErrNone == err)
+                {
+                iLog->Log(_L("Messages fetched successfuly"));
+                }
+            else
+                {
+                iLog->Log(_L("Messages fetching failed"));
+                }
+            CleanupStack::PopAndDestroy(&messages);
+            }//end if 'allMessages'
+        else
+            {
+            iLog->Log(_L("No message in %S folder"), &folder->GetFolderName());
+            err = KErrNotFound;
+            }
+        allMessages.ResetAndDestroy();
+        }//end 'trapErr'
+    else
+        {
+        iLog->Log(_L("Message folder could not be created"));
+        }
+    CleanupStack::PopAndDestroy(folder);
+
+    iLog->Log(_L( "FetchMessages ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::SendMessagesL
+// Method used to send messages
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::SendMessageL(CStifItemParser& /* aItem*/)
+    {
+    TInt err(KErrNone);
+    TBuf<20> buf;
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrNotFound;
+        }
+    iLog->Log(_L( "SendMessageL begins" ));
+
+    // Step01: Create a message subject
+    buf.Append(KStifEmailSubjectDes);
+    buf.AppendNum(Math::Random());
+    TPtrC subject = buf.Mid(0);
+    iLog->Log(_L("Message is to be sent(Subject:%S)"), &subject);
+
+    // Step02: Create default msg
+    CFSMailMessage* newMsg = CreatePlainTextMsgL(subject, KStifEmailBodyText());
+
+    //Step03: To send message and check it
+    if (NULL != newMsg)
+        {
+        iLog->Log(_L("Tested message with subject '%S' was created"), &subject);
+        CleanupStack::PushL(newMsg);
+        TFSMailMsgId newMsgId = TFSMailMsgId();
+        iLog->Log(_L("Message is to be sent..."));
+        err = SendMsgL(*newMsg, subject, newMsgId); //sending message..
+
+        if (KErrNone == err)
+            iLog->Log(_L("Message was sent successfully"));
+        else
+            iLog->Log(_L("Failed to send message with error (ID:%d)"), err);
+
+        CleanupStack::PopAndDestroy(newMsg);
+        }
+    else
+        {
+        iLog->Log(_L("Error: Tested message was NOT created"));
+        err = KErrNoMemory;
+        }
+    iLog->Log(_L( "SendMessageL ends: %d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::BasicMsgOperationsL
+// Method used to test basic operations of messages
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::BasicMsgOperationsL(CStifItemParser& /* aItem */)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrNotFound;
+        }
+
+    iLog->Log(_L( "BasicMsgOperationsL begins" ));
+    // I. Prepare test message to send, using basic operations to set msg details
+    CFSMailMessage* newMsg = CreatePlainTextMsgL(KStifEmailSubject,
+            KStifEmailBodyText);
+    CleanupStack::PushL(newMsg);
+
+    // update msg details, add one more recipient in 'To' field (first is own mail address)
+    CFSMailAddress* rec = CFSMailAddress::NewL();
+    rec->SetEmailAddress(KStifEmailToRec1);
+    newMsg->AppendToRecipient(rec);
+
+    // add some recipients to 'Cc' filed
+    rec = CFSMailAddress::NewL();
+    rec->SetEmailAddress(KStifEmailCcRec1);
+    newMsg->AppendCCRecipient(rec);
+
+    rec = CFSMailAddress::NewL();
+    rec->SetEmailAddress(KStifEmailCcRec2);
+    newMsg->AppendCCRecipient(rec);
+
+    // add one recipient in 'Bcc' filed
+    rec = CFSMailAddress::NewL();
+    rec->SetEmailAddress(KStifEmailBccRec1);
+    newMsg->AppendBCCRecipient(rec);
+    rec = NULL;
+
+    // set low priority flag
+    newMsg->SetFlag(EFSMsgFlag_Low);
+
+    // save all changes
+    newMsg->SaveMessageL();
+
+    // II. Send test message
+    TFSMailMsgId newMsgId = TFSMailMsgId();
+    err = SendMsgL(*newMsg, KStifEmailSubject, newMsgId);
+    CleanupStack::PopAndDestroy(newMsg);
+    newMsg = NULL;
+    TFSMailMsgId msgFolderId = iIPSMailbox->GetStandardFolderId(EFSInbox);
+    CFSMailFolder* pFolder = NULL;
+    // get message folder
+    TRAPD(trapErr, pFolder = iMailClient->GetFolderByUidL(iIPSMailbox->GetId(),msgFolderId));
+    CleanupStack::PushL(pFolder);
+
+    if (KErrNone == trapErr)
+        {
+        TFSMailDetails dymmy = EFSMsgDataEnvelope;
+        RArray<TFSMailMsgId> messages;
+        CleanupClosePushL(messages);
+        messages.Append(newMsgId);
+        TRAP(err,pFolder->FetchMessagesL(messages,dymmy,*this));
+        err = WaitForResponse(TFSProgress::EFSStatus_RequestComplete,
+                KOneMinuteTime);
+        if (KErrNone == err)
+            {
+            iLog->Log(_L("Messages fetched successfuly"));
+            }
+        else
+            {
+            iLog->Log(_L("Messages fetching failed"));
+            }
+        CleanupStack::PopAndDestroy(&messages);
+        }
+    CleanupStack::PopAndDestroy(pFolder);
+
+    // III. Check message details, using basic operations to read msg details
+    if (KErrNone == err)
+        {
+        // Test message successfully received
+        // pass null id, not used by BasePlugin anyway
+        newMsg = iMailClient->GetMessageByUidL(iIPSMailbox->GetId(),
+                TFSMailMsgId(), newMsgId, EFSMsgDataEnvelope);
+        if (NULL != newMsg)
+            {
+            CleanupStack::PushL(newMsg);
+            iLog->Log(_L("   Checking message details:"));
+
+            // check sender
+            CFSMailAddress* sender = newMsg->GetSender();
+            TPtrC senderAddr = sender->GetEmailAddress();
+            if (senderAddr.Compare(
+                    iIPSMailbox->OwnMailAddress().GetEmailAddress()))
+                {
+                iLog->Log(_L("   Error: Sender '%S' does not match"),
+                        &senderAddr);
+                err = KErrGeneral;
+                }
+
+            // check subject
+            TPtrC subject = newMsg->GetSubject();
+            if (subject.Compare(KStifEmailSubject()))
+                {
+                iLog->Log(_L("   Error: Subject '%S' does not match"), &subject);
+                err = KErrGeneral;
+                }
+
+            // check To recipients
+            RPointerArray<CFSMailAddress>& toRecipients =
+                    newMsg->GetToRecipients();
+            TInt toRec = toRecipients.Count();
+            if (toRec != 2)
+                {
+                iLog->Log(_L("   Error: Got %d 'To' recipients, expected 2"),
+                        toRec);
+                err = KErrGeneral;
+                }
+            else
+                {
+                TPtrC recMail = toRecipients[0]->GetEmailAddress();
+                if (recMail.Compare(
+                        iIPSMailbox->OwnMailAddress().GetEmailAddress()))
+                    {
+                    iLog->Log(_L("   Error: 1. 'To' recipient does not match"));
+                    err = KErrGeneral;
+                    }
+                recMail.Set(toRecipients[1]->GetEmailAddress());
+                if (recMail.Compare(KStifEmailToRec1))
+                    {
+                    iLog->Log(_L("   Error: 2. 'To' recipient does not match"));
+                    err = KErrGeneral;
+                    }
+                }
+            toRecipients.ResetAndDestroy();
+            // check Cc recipients
+            RPointerArray<CFSMailAddress>& ccRecipients =
+                    newMsg->GetCCRecipients();
+            TInt ccRec = ccRecipients.Count();
+            if (ccRec != 2)
+                {
+                iLog->Log(_L("   Error: Got %d 'Cc' recipients, expected 2"),
+                        ccRec);
+                err = KErrGeneral;
+                }
+            else
+                {
+                TPtrC recMail = ccRecipients[0]->GetEmailAddress();
+                if (recMail.Compare(KStifEmailCcRec1))
+                    {
+                    iLog->Log(_L("   Error: 1. 'Cc' recipient does not match"));
+                    err = KErrGeneral;
+                    }
+                recMail.Set(ccRecipients[1]->GetEmailAddress());
+                if (recMail.Compare(KStifEmailCcRec2))
+                    {
+                    iLog->Log(_L("   Error: 2. 'Cc' recipient does not match"));
+                    err = KErrGeneral;
+                    }
+                }
+            ccRecipients.ResetAndDestroy();
+            // check Bcc recipients, should be 0
+            RPointerArray<CFSMailAddress>& bccRecipients =
+                    newMsg->GetBCCRecipients();
+            TInt bccRec = bccRecipients.Count();
+            if (bccRec != 0)
+                {
+                iLog->Log(_L("   Error: Got %d 'Bcc' recipients, expected 0"),
+                        bccRec);
+                err = KErrGeneral;
+                }
+
+            // check priority
+            if (!(newMsg->GetFlags() & EFSMsgFlag_Low))
+                {
+                iLog->Log(_L("   Error: Priority not set to low" ));
+                err = KErrGeneral;
+                }
+
+            // check msg's mailboxId
+            if (newMsg->GetMailBoxId() != iIPSMailbox->GetId())
+                {
+                iLog->Log(_L("  Error: Msg's mailboxId not correct"));
+                err = KErrGeneral;
+                }
+
+            // check test msg's folderId
+            if (newMsg->GetFolderId() != iIPSMailbox->GetStandardFolderId(
+                    EFSInbox))
+                {
+                iLog->Log(_L("  Error: Msg's folderId not correct"));
+                err = KErrGeneral;
+                }
+            if (!err)
+                {
+                iLog->Log(_L("   Message details all ok"));
+                }
+            bccRecipients.ResetAndDestroy();
+            CleanupStack::PopAndDestroy(newMsg);
+            }
+        }
+    else
+        {
+        // some problems with sending or receiving came up
+        iLog->Log(_L("  Error: Sending/Receiving failed"));
+        }
+
+    iLog->Log(_L( "BasicMsgOperationsL ends: %d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::CopyMoveMsgsL
+// Method used to copy and move messages from 'Inbox' to a specific folder
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::CopyMoveMsgsL(CStifItemParser& /* aItem */)
+    {
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrNotFound;
+        }
+    iLog->Log(_L( "CopyMoveMsgs begins" ));
+    TInt err(KErrNone);
+    TInt errMove(KErrNone);
+
+    if (iPluginId.PluginId() == TUid::Uid(KIPSSosPop3PluginUid))
+        {
+        //POP plugin not support Move And Copy message functionality.
+        iLog->Log(
+                _L( "POP plugin not support Move And Copy message functionality." ));
+        iLog->Log(_L( "CopyMoveMsgs ends err=%d(Move)" ), errMove);
+        return err;
+        }
+
+    TFSMailMsgId newMsgId = TFSMailMsgId();
+    TFSMailMsgId inboxFolderId = iIPSMailbox->GetStandardFolderId(EFSInbox);
+    TFSMailMsgId draftsFolderId = iIPSMailbox->GetStandardFolderId(
+            EFSDraftsFolder);
+    TFSMailMsgId sentFolderId = iIPSMailbox->GetStandardFolderId(EFSSentFolder);
+
+    CFSMailFolder* folder = iMailClient->GetFolderByUidL(iIPSMailbox->GetId(),
+            inboxFolderId);
+
+    if (NULL != folder)
+        {
+        CleanupStack::PushL(folder);
+        RPointerArray<CFSMailMessage> messages;
+        TInt msgCount(0);
+        TInt gotMsgs = GetMessagesFromFolderL(messages, folder,
+                EFSMsgDataSubject, EFSMailSortByDate, msgCount);
+        RArray<TFSMailMsgId> originalArray;
+        CleanupClosePushL(originalArray);
+        /*
+         * CIpsPlgSosBasePlugin::CopyMessagesL() is empty.
+         * So, it can't test this function
+         */
+        //Moving tested messages from 'Inbox' to 'Sent Items'
+        if (gotMsgs > 0)
+            {
+            iLog->Log(_L("  Listing %d messages:"), gotMsgs);
+            for (TInt i = 0; i < messages.Count(); i++)
+                {
+                iLog->Log(_L("%d.ID:,Subject: %S"), i + 1,
+                        &messages[i]->GetSubject());
+                originalArray.Append(messages[i]->GetMessageId());
+                }//end loop: 'for'
+            // Note: Messages cannot be moved from Deleted Items, Drafts, Outbox folders
+
+            //Different between 'IMAP' and  'POP'
+            iLog->Log(_L("IMAP: Moving from 'Inbox' to 'Sent'..."));
+            iIPSMailbox->MoveMessagesL(originalArray, inboxFolderId,
+                    sentFolderId);
+            originalArray.Reset();
+
+            // there is no TFSEventMailMoved or TFSEventMailCopied event coming, just TFSEventMailDeleted?
+            errMove = WaitForEvent(TFSEventMailDeleted);
+            }// end of 'gotMsgs > 0'
+        else
+            {
+            iLog->Log(_L("No message in %S folder"), &folder->GetFolderName());
+            errMove = KErrNotFound;
+            }
+        if (KErrNone == errMove)
+            {
+            iLog->Log(_L("Successfully move messages."));
+            }
+        else
+            {
+            iLog->Log(_L("Failed to move with error(ID:%d)"), errMove);
+            err = errMove;
+            }
+        CleanupStack::PopAndDestroy(&originalArray);
+        messages.ResetAndDestroy();
+        CleanupStack::PopAndDestroy(folder);
+        }//end if: 'NULL!=Folder'
+    else
+        {
+        iLog->Log(_L(" Folder is NOT found.(Error's ID:%d)"), err);
+        }
+    iLog->Log(_L( "CopyMoveMsgs ends err=%d(Move)" ), errMove);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::SearchL
+// Method used to test searching functionality
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::SearchL(CStifItemParser& /* aItem */)
+    {
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrNotFound;
+        }
+
+    TInt err(KErrNone);
+    iLog->Log(_L( "Search begins" ));
+
+    // Step01: to prepare testing msg
+    HBufC* bufSubject = HBufC::NewL(30);
+    HBufC* bufBody = HBufC::NewL(128);
+    TPtr subject = bufSubject->Des();
+    TPtr body = bufBody->Des();
+    subject.Append(KStifEmailSubjectDes);
+    body.Append(KStifEmailBodyText);
+
+    TUint randomNum = Math::Random();
+    subject.AppendNum(randomNum);
+    body.Append(_L("-"));
+    body.AppendNum(randomNum);
+
+    iLog->Log(_L("==Testing Email=="));
+    iLog->Log(_L("=Subject is:%S"), &subject);
+    iLog->Log(_L("=Body is:%S"), &body);
+
+    // Step02: Send testing msg to own mail address
+    CFSMailMessage* newMsg = CreatePlainTextMsgL(subject, body);
+    if (NULL != newMsg)
+        {
+        CleanupStack::PushL(newMsg);
+        TFSMailMsgId newMsgId = TFSMailMsgId();
+        err = SendMsgL(*newMsg, subject, newMsgId);
+        if (KErrNone == err)
+            {
+            // Step03: to setup searchL params
+            TFSMailSortCriteria criteria;
+            criteria.iField = EFSMailSortByDate;
+            criteria.iOrder = EFSMailDescending;
+            RPointerArray<TDesC> searchStrings;
+            // Step04: to perform 'Subject' search
+            searchStrings.Append(bufSubject);
+            err = DoSearch(searchStrings, criteria, KOneMinuteTime);
+
+            // Check results for subject Search
+            if (KErrNone == err && iSearchMatches > 0)
+                {
+                iLog->Log(_L("Success: Subject search passed"));
+                }
+            else
+                {
+                iLog->Log(_L("Failed: 'Subject' search with error(%d)"), err);
+                err = KErrNotFound;
+                }
+
+            // Step05: to perform 'Body' search
+            searchStrings.ResetAndDestroy();
+            searchStrings.Append(bufBody);
+
+            //Check results for body Search
+            err = DoSearch(searchStrings, criteria, KOneMinuteTime);
+            if (KErrNone == err && iSearchMatches > 0)
+                {
+                iLog->Log(_L("Success:Body search passed"));
+                }
+            else
+                {
+                iLog->Log(_L("Failed to 'Body' search with error(%d)"), err);
+                err = KErrNotFound;
+                }
+            searchStrings.ResetAndDestroy();
+            }//end if 'KErrNone == err'(sent 'msg' with KErrNone)
+        else
+            {
+            iLog->Log(_L(" Failed to sent message with error(ID:%d)"), err);
+            }
+        CleanupStack::PopAndDestroy(newMsg);
+        }//end if 'NULL != newMsg'
+    else
+        {
+        iLog->Log(_L("Error: tested message was NOT created"));
+        err = KErrGeneral;
+        }
+    iLog->Log(_L( "Search ends err=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::AttachmentHandlingL
+// Method used to test functionality of hanlding attachments
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::AttachmentHandlingL(CStifItemParser& /* aItem */)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrNotFound;
+        }
+
+    iLog->Log(_L( "AttachmentHandlingL begins" ));
+
+    // Create default msg in 'Drafts' folder
+    CFSMailMessage* newMsg = CreatePlainTextMsgL(KStifEmailSubjectAttHandling,
+            KStifEmailBodyText);
+
+    if (NULL != newMsg)
+        {
+        CleanupStack::PushL(newMsg);
+        iLog->Log(_L("Test Email created"));
+        TFSMailMsgId dummyId = TFSMailMsgId();
+
+        //add attachment
+        TFSMailMsgId aInsertBefore;
+        CFSMailMessagePart* msgPart = NULL;
+        TRAP(err,msgPart = newMsg->AddNewAttachmentL(KPopImapProfileTester,aInsertBefore));
+        CleanupStack::PushL(msgPart);
+
+        if (KErrNone != err)
+            {
+            iLog->Log(_L("Adding attachment failed. Error: %d"), err);
+            }
+        else
+            {
+            iLog->Log(_L("New attachment added."));
+            newMsg->SaveMessageL();
+
+            //check if attachment was added
+            RPointerArray<CFSMailMessagePart> attParts;
+            TRAP( err,newMsg->AttachmentListL(attParts) );
+
+            if (KErrNone != err)
+                {
+                iLog->Log(_L("Unable to take attachment list. Error %d"), err);
+                }
+            else
+                {
+                if (attParts.Count() > 0)
+                    {
+                    TPtrC filename(KPopImapProfileTester);
+                    filename.Set(filename.Mid(filename.LocateReverse('\\') + 1));
+                    err = attParts[0]->AttachmentNameL().Compare(filename);
+                    iLog->Log(
+                            _L("Attachment's names comparison: %S (attached file name) vs.  %S (expected). Result: %d"),
+                            &(attParts[0]->AttachmentNameL()), &filename, err);
+                    }
+                }//end if 'KErrNone!=err'
+            attParts.ResetAndDestroy();
+            }//end if 'KErrNone!=err'
+        CleanupStack::PopAndDestroy(msgPart);
+        CleanupStack::PopAndDestroy(newMsg);
+        }//end if 'newMsg'
+    else
+        {
+        iLog->Log(_L("Error: Test Email not created"));
+        err = KErrNoMemory;
+        }
+
+    iLog->Log(_L( "AttachmentHandlingL ends: %d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::BrandingL
+// Method used to test functionality of branding
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::BrandingL(CStifItemParser& aItem)
+    {
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L("Error: IMAP/POP profile does NOT exist"));
+        return KErrNotFound;
+        }
+
+    iLog->Log(_L( "== Branding begins ==" ));
+
+    // get brand manager
+    MFSMailBrandManager* brandManager = NULL;
+
+    TRAP( err, brandManager = &iMailClient->GetBrandManagerL() );
+
+    //to check brand manager
+    if (KErrNone != err)
+        {
+        iLog->Log(
+                _L("Error: CFSMailClient::GetBrandManagerL() leaved with %d"),
+                err);
+        }
+    else if (NULL == brandManager)
+        {
+        iLog->Log(_L("Error: CFSMailClient::GetBrandManagerL() returns NULL"));
+        err = KErrGeneral;
+        }
+    else
+        {
+        // test updating mailbox names with real mailbox id
+        TRAP( err, brandManager->UpdateMailboxNamesL( iIPSMailbox->GetId() ) );
+        if (KErrNone != err)
+            {
+            iLog->Log(
+                    _L("Error: MFSMailBrandManager::UpdateMailboxNamesL() leaved with %d"),
+                    err);
+            }
+        else
+            {
+            // get param regarding expected branding status 
+            TBool brand = EFalse;
+            TPtrC expectBrandS;
+            aItem.GetString(_L("_isBranded:"), expectBrandS);
+
+            if (expectBrandS.Compare(_L("true")) == 0)
+                {
+                iLog->Log(_L("Branding expected..."));
+                brand = ETrue;
+                }
+            else
+                {
+                iLog->Log(_L("Branding not expected..."));
+                }
+
+            // check mailbox name branding
+            TPtrC textBrand;
+            TRAP( err, textBrand.Set( brandManager->GetTextL( EFSMailboxName, iIPSMailbox->GetId() ) ) );
+            if (KErrNone != err)
+                {
+                iLog->Log(
+                        _L("Error: MFSMailBrandManager::GetTextL() leaved with %d"),
+                        err);
+                }
+            TBool textBranded = textBrand.Length() != 0 ? ETrue : EFalse;
+            if (textBranded)
+                {
+                iLog->Log(_L("Mailbox's name (%S) branded."), &textBrand);
+                }
+            else
+                {
+                iLog->Log(_L("Mailbox's name (%S) was not branded."),
+                        &textBrand);
+                }
+            //to check whether it is expected?
+            if (brand == textBranded)
+                {
+                iLog->Log(_L("Successfully test, it was a expected retult."));
+                err = KErrNone;
+                }
+            else
+                {
+                iLog->Log(_L("Failed to test, it was NOT a expected retult."));
+                err = KErrGeneral;
+                }
+            } // end if 'UpdateMailboxNames'
+        } //end if 'BrandManager'
+
+    iLog->Log(_L( "Branding ends ret=%d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::DeleteMsgsL
+// Method used to delete messages
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::DeleteMsgsL(CStifItemParser& aItem)
+    {
+    TInt err(KErrNone);
+    iLog->Log(_L( "DeleteMessagesL begins" ));
+
+    // Step 01: To refresh mailbox
+    iLog->Log(_L(" Step 01: To synchronize mailbox"));
+    TInt reqId = iIPSMailbox->RefreshNowL(*this);
+    err = WaitForEvent(TFSEventMailboxOnline);
+    WaitForResponse(TFSProgress::EFSStatus_RequestComplete, KOneMinuteTime);
+    if (KErrNone == err)
+        {
+        // Step 02: To delete tested messages
+        iLog->Log(_L(" Step 02: To delete tested messages"));
+        TPtrC folderName;
+        // We intended to delete messages in a folder only. Here, it is 'Inbox' folder. 
+        aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing);
+        if (aItem.GetString(_L("_folder:"), folderName))
+            {
+            iLog->Log(_L("Error: test case argument is missing"));
+            err = KErrArgument;
+            }
+        else
+            err = DeleteTestMsgL(folderName);
+
+        if (KErrNone == err)
+            {
+            //Step 03: To check whether tested messages were sucessfully deleted
+            iLog->Log(_L(" Step 03: To tested if messages really deleted"));
+            err = DeleteTestMsgL(folderName);
+
+            if (err == KErrNotFound)
+                {
+                iLog->Log(_L("Succesfully deleted tested messages"));
+                err = KErrNone;
+                }
+            else
+                {
+                iLog->Log(_L("Failed to delete tested messages"));
+                err = KErrGeneral;
+                }
+            }//end if 'KErrNone == err'
+        else
+            {
+            iLog->Log(_L(" Warning: No tested messages to delete"));
+            }
+        }//end outer if
+    else
+        {
+        iLog->Log(_L(" Warning: synchronize mailbox failed!"));
+        err = KErrGeneral;
+        }
+    iLog->Log(_L( "DeleteMessagesL ends: %d" ), err);
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// CPopImapProfileTester::RemoveAccountL
+// Method used to remove an imap or pop account
+// -----------------------------------------------------------------------------
+//
+TInt CPopImapProfileTester::RemoveAccountL(CStifItemParser& /* aItem */)
+    {
+    iLog->Log(_L( "RemoveAccount begins" ));
+    TInt err(KErrNone);
+    if (NULL == iIPSMailbox)
+        {
+        iLog->Log(_L( " Error: IMAP/POP profile does NOT exist" ));
+        err = KErrNotFound;
+        }
+    else
+        {
+        iLog->Log(_L( "Mailbox Id: %x"), iIPSMailbox->GetId().Id());
+        // start test case
+        TInt reqId = iMailClient->DeleteMailBoxByUidL(iIPSMailbox->GetId(),
+                *this);
+        // end test case
+        iLog->Log(_L("-->ReqResp: %d"), reqId);
+
+        // Check if mailbox is really deleted
+        RPointerArray<CFSMailBox> mailboxes;
+        iMailClient->ListMailBoxes(iIPSMailbox->GetId(), mailboxes);
+        if (mailboxes.Count() > 0)
+            {
+            iLog->Log(_L( " Failed: Mailbox was not deleted" ));
+            err = KErrGeneral;
+            }
+        else
+            {
+            iLog->Log(_L( " Success: Mailbox was deleted" ));
+            iMailClient->UnsubscribeMailboxEvents(iIPSMailbox->GetId(), *this);
+            DELANDNULL(iIPSMailbox);
+            err = KErrNone;
+            }
+        mailboxes.ResetAndDestroy();
+        }//end if 'count'
+
+    iLog->Log(_L( "RemoveAccount ends err=%d" ), err);
+    return err;
+    }
+
+//  End of File