--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imap4mtm/imapservermtm/test/src/ctestimapservermtmbase.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,248 @@
+// 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:
+//
+
+#include "cactivewaiter.h"
+#include "ctestimapservermtmbase.h"
+#include <iapprefs.h>
+#include <cemailaccounts.h>
+
+// For loading the serial comms device drivers
+#if defined (__WINS__)
+ #define PDD_NAME _L("ECDRV")
+ #define LDD_NAME _L("ECOMM")
+#else
+ #define PDD_NAME _L("EUART1")
+ #define LDD_NAME _L("ECOMM")
+#endif
+
+_LIT( KLoopbackAddress, "127.0.0.1" );
+//_LIT( KLoopbackAddress, "10.22.64.6" ); // Used for online testing
+
+const TInt KImapPort = 143;
+
+//RTest test( _L( "IMPS.dll Unit Test" ) );
+
+CTestImapServerMtmBase::CTestImapServerMtmBase( ) :
+ iTestUtils( NULL ),
+ iImapServerMtm( NULL ),
+ iSpoofServer( NULL ),
+ iAccounts( NULL ),
+ iActiveWaiter( NULL ),
+ iSelection( NULL ),
+ iTest( _L( "IMPS.dll Unit Test" ) )
+ {
+
+ }
+
+CTestImapServerMtmBase::~CTestImapServerMtmBase( )
+ {
+ delete iAccounts;
+ delete iSpoofServer;
+ delete iImapSettings;
+ delete iTestUtils;
+ delete iActiveWaiter;
+ delete iSelection;
+
+ }
+
+
+/**
+Set up environment
+*/
+void CTestImapServerMtmBase::SetupL( )
+ {
+ DoLoadDriversL( );
+
+ // Load Server MTM (Can this be in the TEFUnit server?)
+// iTestUtils = CEmailTestUtils::NewL( test );
+ iTestUtils = CEmailTestUtils::NewL( iTest );
+ iTestUtils->FileSession( ).SetSessionPath( _L( "C:\\" ) );
+
+// TODO: How to clean the message folders or close the messaging server without a PANIC ????
+
+// iTestUtils->CleanMessageFolderL( );
+ iTestUtils->ClearEmailAccountsL( );
+
+ iTestUtils->CreateAllTestDirectories( );
+ iTestUtils->FileSession( ).SetSessionPath( _L( "C:\\" ) );
+
+ iTestUtils->GoServerSideL( );
+ iTestUtils->InstantiateImapServerMtmL( );
+ iImapServerMtm = iTestUtils->iImapServerMtm;
+
+ // Create an account
+ iTestUtils->GoClientSideL( );
+ iAccounts = CEmailAccounts::NewL( );
+ DoCreateImapAccountL( );
+
+ // Delete iAccounts to make sure that CMsvServer is closed and
+ // we can go to the serverSide
+ delete iAccounts;
+ iAccounts = NULL;
+
+ iTestUtils->GoServerSideL( );
+
+ iEntry = iTestUtils->iServerEntry;
+
+ iServiceId = iImapAccount.iImapService;
+ iTestUtils->InstantiateImapServerMtmL( );
+ iImapServerMtm = iTestUtils->iImapServerMtm;
+
+ // Creata active waiter
+ iActiveWaiter = new ( ELeave ) CActiveWaiter( );
+
+ iEntry = iTestUtils->iServerEntry;
+
+ iImapSettings = CImapSettings::NewL(*iEntry);
+ iImapSettings->LoadSettingsL(iServiceId);
+ // and CMsvSelection
+ iSelection = new ( ELeave ) CMsvEntrySelection( );
+ }
+
+/**
+Tear down environment
+*/
+void CTestImapServerMtmBase::TearDownL( )
+ {
+ // tear Down
+ delete iAccounts;
+ iAccounts = NULL;
+
+ delete iSpoofServer;
+ iSpoofServer = NULL;
+
+// TODO: cleanup
+// iTestUtils->GoClientSideL( );
+// iTestUtils->iMsvSession->CloseMessageServer( );
+// iTestUtils->Reset( );
+
+ _LIT(KMsvServerPattern, "!MsvServer*");
+ TFindProcess findprocess(KMsvServerPattern);
+ TFullName name;
+
+ // wait for the server to close before continuing
+// for(;;)
+// {
+// TFindServer find(KMsvServerPattern);
+// if (find.Next(name) != KErrNone)
+// break;
+// User::After(100000);
+// }
+
+ delete iTestUtils;
+ iTestUtils = NULL;
+
+ delete iActiveWaiter;
+ iActiveWaiter = NULL;
+
+ delete iSelection;
+ iSelection = NULL;
+
+ }
+
+void CTestImapServerMtmBase::DoConnectL( )
+ {
+ INFO_PRINTF1( _L("Connecting...") );
+ iSelection->Reset( );
+ iSelection->AppendL( iImapAccount.iImapService );
+
+ iImapServerMtm->StartCommandL( *iSelection,
+ KIMAP4MTMConnect,
+ KNullDesC8,
+ iActiveWaiter->iStatus );
+
+ iActiveWaiter->WaitActive( );
+
+ }
+
+void CTestImapServerMtmBase::DoDisconnectL( )
+ {
+ INFO_PRINTF1( _L("Disconnecting...") );
+ iSelection->Reset( );
+ iImapServerMtm->StartCommandL( *iSelection,
+ KIMAP4MTMDisconnect,
+ KNullDesC8,
+ iActiveWaiter->iStatus );
+
+ iActiveWaiter->WaitActive( );
+
+ }
+
+void CTestImapServerMtmBase::DoCreateImapAccountL( )
+ {
+ INFO_PRINTF1( _L("Create IMAP account") );
+ //create objects and initialise with the defaults
+ CImImap4Settings* imap4Settings = new ( ELeave ) CImImap4Settings;
+ CleanupStack::PushL( imap4Settings );
+
+ CImSmtpSettings* smtpSettings = new ( ELeave ) CImSmtpSettings;
+ CleanupStack::PushL( smtpSettings );
+
+ CImIAPPreferences* imapIap = CImIAPPreferences::NewLC( );
+ CImIAPPreferences* smtpIap = CImIAPPreferences::NewLC( );
+
+ iAccounts->PopulateDefaultImapSettingsL( *imap4Settings, *imapIap );
+ iAccounts->PopulateDefaultSmtpSettingsL( *smtpSettings, *smtpIap );
+
+ //override some of the defaults
+ imap4Settings->SetPasswordL( _L8( "prakash" ) );
+ imap4Settings->SetLoginNameL( _L8( "prakash" ) );
+ imap4Settings->SetServerAddressL( KLoopbackAddress );
+ imap4Settings->SetFolderPathL( _L8( "" ) );
+ imap4Settings->SetSynchronise( EUseLocal );
+
+ //create the account
+ iImapAccount = iAccounts->CreateImapAccountL( _L( "TestAccount" ), *imap4Settings, *imapIap, EFalse );
+ //clean up
+ CleanupStack::PopAndDestroy( 4,imap4Settings );
+
+ INFO_PRINTF1( _L("IMAP account created") );
+ }
+
+void CTestImapServerMtmBase::DoLoadDriversL( )
+ {
+ // Load the serial comms device drivers. If this is not done,
+ // connecting via NT-RAS returns KErrNotFound (-1).
+ TInt driverErr;
+ driverErr=User::LoadPhysicalDevice(PDD_NAME);
+ if (driverErr!=KErrNone && driverErr!=KErrAlreadyExists)
+ User::Leave(driverErr);
+ driverErr=User::LoadLogicalDevice(LDD_NAME);
+ if (driverErr!=KErrNone && driverErr!=KErrAlreadyExists)
+ User::Leave(driverErr);
+ }
+
+
+
+void CTestImapServerMtmBase::DoStartSpoofServerL( const TDesC& aScriptSection )
+ {
+ // Start Spoof Server
+ INFO_PRINTF2( _L( "Loading spoofscript: " ), aScriptSection );
+ TPtrC spoofScript;
+ User::LeaveIfError( iConfig.GetString( aScriptSection,
+ _L( "ScriptFile" ),
+ spoofScript ) );
+
+ INFO_PRINTF1( _L( "Starting spoofserver" ) );
+ iSpoofServer = CSpoofServer::NewL( *this, spoofScript );
+ iSpoofServer->StartL( KImapPort );
+ INFO_PRINTF1( _L( "Spoofserver started" ) );
+
+ }
+
+void CTestImapServerMtmBase::TestComplete( TInt /*aErrorCode*/ )
+ {
+ // TODO
+ }