diff -r 000000000000 -r 8e480a14352b messagingfw/wappushfw/tpush/pushtests.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/tpush/pushtests.h Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,591 @@ +// Copyright (c) 2000-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: +// + +#ifndef __PUSHTESTS_H__ +#define __PUSHTESTS_H__ + +#include "t_wappush.h" +#include +#include +#include "dummywapstack.h" // MDummyWapStackObserver + +#include // for test engine Rfs/Cwatcherlog +#include "ConnMan.h" // for connection manager +#include +#include + +//const TInt KBufferSize = 256; // imitates KReceiveBufferSize from CLWatcher +//const TInt KBufferSize = 1024; +const TInt KBufferSize = 2048; + +class MWapPushLog; +class CWapPushMsgGen; + +class MTimeoutCallback + { +public: + virtual void Timeout() = 0; + }; + +class CTestTimer : public CTimer + { +public: + static CTestTimer* NewL(MTimeoutCallback* callback) + { + CTestTimer* self = new(ELeave) CTestTimer(callback); + CleanupStack::PushL(self); + self->ConstructL(); // CTimer + CActiveScheduler::Add(self); + CleanupStack::Pop(); + return self; + } + +protected: + virtual void RunL() + { + iCallback->Timeout(); + } +private: + CTestTimer(MTimeoutCallback* callback): CTimer(EPriorityLow), iCallback(callback) + {}; + + MTimeoutCallback* iCallback; + }; + + +/** + * Derived test case class which implementation the stack observer + * to allow communication with the stack + * + * This class has been made abstract to allow different derived classes + * to implement creating multiple test messages via PrepareTestMessageL() + * and the support of NumberTestCasesToRun() + * BOTH must be implimented in any derived class. + * ConfirmMessagesSavedL provides confirmation of message storage and + * reports on number of messages found in store. + */ +class CWapPushBaseMessageTest : public CWapPushTest, public MDummyWapStackObserver + { +public: + virtual ~CWapPushBaseMessageTest(); + virtual void RunL(); + virtual TInt RunError(TInt aError); + virtual void DoCancel(); + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase) = 0; // abstract class now!!! + virtual TBool ConfirmMessagesSavedL() = 0; + + // from MDummyWapStackObserver + virtual void DWSOUnitWaitPushL(CDummyWSPCLConn& aDummyCLConn); + virtual void DWSOCancelUnitWaitPush(CDummyWSPCLConn& aDummyCLConn); + virtual void DWSOServerShutDown(); + virtual void DWSOError(const TDesC& aDes, TInt aLineNum); + virtual void DWSOConnect(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOGetEventL(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOCancelGetEvent(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOAckTransaction(CDummyWSPCOTrans& aDummyCOTrans); +protected: + void MoveToNextState(); + void CompleteOwnRequest(); + + void InitialiseMsgService(); + +protected: + enum TState + { + EInitialisation, + EWaitForPush, + EFinished + }; +protected: + TState iState; + + TBuf8 iBodyBuf; + TBuf8 iHeadersBuf; + HBufC8* iBody; + HBufC8* iHeaders; + + CDummyWapStack* iWapStack; + CConnectionManager* iConnMan; + TBool iHasMsgBeenCompleted; + TBool iHasTestBeenCompleted; + + TInt iNumberOfTestCases; + TInt iCurrentTestCase; + + }; + +/** SL derived test case */ +class CWapPushSLMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + }; + +/** SLC derived test case */ +class CWapPushSLCMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName (); + virtual void NumberTestCasesToRun (); + virtual void PrepareTestMessageL ( TInt aCurrentTestCase ); + virtual TBool ConfirmMessagesSavedL(); + }; + +/** SI derived test case */ +class CWapPushSIMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + +private: + void PrepareApostropheTestMessageL(); + }; + +/** SIC derived test case */ +class CWapPushSICMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + private: + TBool TestMessageL ( const TDesC& aUri, const TDesC8& aText ); + }; + +/** Invalid DTD test case */ +class CInvalidWAPDTDMessages : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName (); + virtual void NumberTestCasesToRun (); + virtual void PrepareTestMessageL (TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL (); + virtual TInt RunError(TInt aError); + }; + +/** Test case for INC081489,INC081568, INC082189, INC082190, INC082191 */ +class CINC081489 : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + }; + + +/** Multipart-Mixed derived test case */ +class CWapPushMMMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + }; + +/** Multipart-Related derived test case */ +class CWapPushMRMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + }; + +/** Multipart-Alternative derived test case */ +class CWapPushMAMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + }; + +/** Unknown Handler derived test case */ +class CWapPushUnkMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + void TestAndPrint(const TDesC& aTestCase, const TDesC& aFilename, const TDesC& aLocalFilename); + }; + +/** + * SIA Handler derived test case + */ +class CWapPushSIAMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + + virtual TBool ConfirmMessagesSavedL(); + void SetupAddressL(); + }; + + +/** SL derived test case */ +class CWapPushCorruptMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); +private: + void SetHeaderBuffer(TUint aTestCase); + + enum TWapPushCorruptMsgType { + //-- Test SI Corrupt Msgs -- + ECorruptSiMsg1=0, // 'href' - Optinal data missing + ECorruptSiMsg2, // 'si-id' - Optianl data missing + ECorruptSiMsg3, // 'created' - Mandatory data missing + ECorruptSiMsg4, // 'si-expires' - Mandatory data missing + ECorruptSiMsg5, // 'action' - Optional data missing + ECorruptSiMsg6, // Mandatory data missing - The INFO Element- + ECorruptSiMsg7, // Missing Body + ECorruptSicMsg1, // Missing Body + //-- Test SL Corrupt Msgs -- + ECorruptSlMsg1, // + ECorruptSlMsg2, // Header - Content type SLC instead of SL + ECorruptSlMsg3, // Missing Body + ECorruptSlMsg4, // Unsupported XML version - 2.0 + ECorruptSlMsg5, // Corrupt XML body - incorrect DTD + ECorruptSlMsg6, // Corrupt XML body - invalid tag in XML header + ECorruptSlMsg7, // Corrupt XML body - unknown tags in XML content + ECorruptSlMsg8, // Corrupt XML body - "hreg" not "href" + ECorruptSlMsg9, // Corrupt XML body - "adtion" not "action" + ECorruptSlMsg10, // Missing Href + ECorruptSlMsg11, // Missing Action + + //-- Test SLC Corrupt Msgs -- + ECorruptSlcMsg1, // Header - wrong App ID + ECorruptSlcMsg2, // Header - Content type SL instead of SLC + ECorruptSlcMsg3, // WMLC - body has corrupt bit + ECorruptSlcMsg4, // WMLC - body has been abruptly ended - invalid termination + ECorruptSlcMsg5, // WMLC - missing Body + ECorruptSlcMsg6, // WMLC - body contains only a single Null character + ECorruptSlcMsg7, // WMLC - missing Href + ECorruptSlcMsg8, // WMLC - missing Action + + //-- Test SIA Corrupt Msgs -- + ECorruptSiaMsg1, // Corrupt Body + ECorruptSiaMsg2, // Corrupt CO/Ack + ECorruptSiaMsg3, // Corrupt CO/no Ack + ECorruptSiaMsg4, // SIA doesn't accept a connection, the test harness should time out + + //-- Test Multi-Part/Mixed Corrupt Msgs -- + ECorruptMultiMixedMsg1, //Corrupt first part + ECorruptMultiMixedMsg2, //Corrupt 2nd multipart + ECorruptMultiMixedMsg3, // Corrupt Header + ECorruptMultiMixedMsg4, // 1st Part Hdr - header length value too small + ECorruptMultiMixedMsg5, // 2nd Part Hdr - header length value too small + ECorruptMultiMixedMsg6, // 1st Part Hdr - header length value too large + ECorruptMultiMixedMsg7, // 2nd Part Hdr - header length value too large + ECorruptMultiMixedMsg8, // 1st Part Hdr - part body length value too small + ECorruptMultiMixedMsg9, // 2nd Part Hdr - part body length value too small + ECorruptMultiMixedMsg10, // 1st Part Hdr - part body length value too large + ECorruptMultiMixedMsg11, // 2nd Part Hdr - part body length value too large + ECorruptMultiMixedMsg12, // 1st Part Body - part body shorter than header length value + ECorruptMultiMixedMsg13, // 2nd Part Body - part body shorter than header length value + ECorruptMultiMixedMsg14, // 1st Part Body - part body longer than header length value + ECorruptMultiMixedMsg15, // 2nd Part Body - part body longer than header length value + ECorruptMultiMixedMsg16, // Multipart header incorrectly specifies 3 parts when there's 2 + ECorruptMultiMixedMsg17, // Multipart header incorrectly specifies 2 parts when there's 3 + ECorruptMultiMixedMsg18, // Corrupt Wrong App Id - UnknownAppHandler + ECorruptMultiMixedMsg19, // No binary data - WAP Push message body is empty + ECorruptMultiMixedMsg20, // WAP Push message body contains only a single null value + ECorruptMultiMixedMsg21, // Message body is full of junk - no proper WAP Multipart headers + + //-- Test Multi-Part/Related Corrupt Msgs -- + ECorruptMultiRelatedMsg1, //Corrupt first part + ECorruptMultiRelatedMsg2, //Corrupt 2nd multipart + ECorruptMultiRelatedMsg3, // Corrupt Header + ECorruptMultiRelatedMsg4, // 1st Part Hdr - header length value too small + ECorruptMultiRelatedMsg5, // 2nd Part Hdr - header length value too small + ECorruptMultiRelatedMsg6, // 1st Part Hdr - header length value too large + ECorruptMultiRelatedMsg7, // 2nd Part Hdr - header length value too large + ECorruptMultiRelatedMsg8, // 1st Part Hdr - part body length value too small + ECorruptMultiRelatedMsg9, // 2nd Part Hdr - part body length value too small + ECorruptMultiRelatedMsg10, // 1st Part Hdr - part body length value too large + ECorruptMultiRelatedMsg11, // 2nd Part Hdr - part body length value too large + ECorruptMultiRelatedMsg12, // 1st Part Body - part body shorter than header length value + ECorruptMultiRelatedMsg13, // 2nd Part Body - part body shorter than header length value + ECorruptMultiRelatedMsg14, // 1st Part Body - part body longer than header length value + ECorruptMultiRelatedMsg15, // 2nd Part Body - part body longer than header length value + ECorruptMultiRelatedMsg16, // Multipart header incorrectly specifies 3 parts when there's 2 + ECorruptMultiRelatedMsg17, // Multipart header incorrectly specifies 2 parts when there's 3 + ECorruptMultiRelatedMsg18, // Corrupt Wrong App Id - UnknownAppHandler + ECorruptMultiRelatedMsg19, // No binary data - WAP Push message body is empty + ECorruptMultiRelatedMsg20, // WAP Push message body contains only a single null value + ECorruptMultiRelatedMsg21, // Message body is full of junk - no proper WAP Multipart headers + + //-- Test Multi-Part/Alternative Corrupt Msgs -- + ECorruptMultiAlternativeMsg1, //Corrupt 1st multipart + ECorruptMultiAlternativeMsg2, //Corrupt 2nd multipart + ECorruptMultiAlternativeMsg3, // Corrupt Header + ECorruptMultiAlternativeMsg4, // 1st Part Hdr - header length value too small + ECorruptMultiAlternativeMsg5, // 2nd Part Hdr - header length value too small + ECorruptMultiAlternativeMsg6, // 1st Part Hdr - header length value too large + ECorruptMultiAlternativeMsg7, // 2nd Part Hdr - header length value too large + ECorruptMultiAlternativeMsg8, // 1st Part Hdr - part body length value too small + ECorruptMultiAlternativeMsg9, // 2nd Part Hdr - part body length value too small + ECorruptMultiAlternativeMsg10, // 1st Part Hdr - part body length value too large + ECorruptMultiAlternativeMsg11, // 2nd Part Hdr - part body length value too large + ECorruptMultiAlternativeMsg12, // 1st Part Body - part body shorter than header length value + ECorruptMultiAlternativeMsg13, // 2nd Part Body - part body shorter than header length value + ECorruptMultiAlternativeMsg14, // 1st Part Body - part body longer than header length value + ECorruptMultiAlternativeMsg15, // 2nd Part Body - part body longer than header length value + ECorruptMultiAlternativeMsg16, // Multipart header incorrectly specifies 3 parts when there's 2 + ECorruptMultiAlternativeMsg17, // Multipart header incorrectly specifies 2 parts when there's 3 + ECorruptMultiAlternativeMsg18, // Corrupt Wrong App Id - UnknownAppHandler + ECorruptMultiAlternativeMsg19, // No binary data - WAP Push message body is empty + ECorruptMultiAlternativeMsg20, // WAP Push message body contains only a single null value + ECorruptMultiAlternativeMsg21 // Message body is full of junk - no proper WAP Multipart headers + }; +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS + /** + WAP Push Message status value. + */ + enum TPushMsgStatus + { + /** Message is corrupt. */ + EPushMsgStatusCorrupt = 3 + }; +#endif//SYMBIAN_ENABLE_SPLIT_HEADERS + + }; + + + + + + +#ifdef XXXX + + +/** + * Tests the following use case + * 'secure confirmed multipart/mixed containing SI and SL using WAP plug-in + * interface' + */ +class CWapPushR2Test : public CWapPushTest, public MDummyWapStackObserver + { +public: + ~CWapPushR2Test(); + virtual void RunL(); + virtual void DoCancel(); + virtual const TDesC& TestName(); + + // from MDummyWapStackObserver + virtual void DWSOUnitWaitPushL(CDummyWSPCLConn& aDummyCLConn); + virtual void DWSOCancelUnitWaitPush(CDummyWSPCLConn& aDummyCLConn); + virtual void DWSOServerShutDown(); + virtual void DWSOError(const TDesC& aDes, TInt aLineNum); + virtual void DWSOConnect(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOGetEventL(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOCancelGetEvent(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOAckTransaction(CDummyWSPCOTrans& aDummyCOTrans); +private: + void MoveToNextState(); + void CompleteOwnRequest(); + void CreatePushMsg(); + void CreateMultiMixedPushMsg(); +private: + enum TState + { + EInitialisation, + ESendSIA, + EWaitForAcknowledge, + EFinished + }; + enum TResponseState + { + ESessionConfirm, + ETransaction + }; +private: + TState iState; + TResponseState iResponseState; + + TBuf8 iBodyBuf; + TBuf8 iHeadersBuf; + HBufC8* iBody; + HBufC8* iHeaders; + + CDummyWapStack* iWapStack; + CConnectionManager* iConnMan; + TBool iHasMsgBeenCompleted; + TBool iAck; + + }; + +#endif + +/** + * Tests the following use case: + * - Connectionless Secure SIA Push Message + * - Connection Oriented Unsecure + * - Multipart/related Push Message Containing Si, vCard, JPEG + */ +class CWapPushR3Test : public CWapPushTest, public MDummyWapStackObserver, public MTimeoutCallback + { +public: + ~CWapPushR3Test(); + virtual void RunL(); + virtual void DoCancel(); + virtual const TDesC& TestName(); + + // from MDummyWapStackObserver + virtual void DWSOUnitWaitPushL(CDummyWSPCLConn& aDummyCLConn); + virtual void DWSOCancelUnitWaitPush(CDummyWSPCLConn& aDummyCLConn); + virtual void DWSOServerShutDown(); + virtual void DWSOError(const TDesC& aDes, TInt aLineNum); + virtual void DWSOConnect(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOGetEventL(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOCancelGetEvent(CDummyWSPCOConn& aDummyCOConn); + virtual void DWSOAckTransaction(CDummyWSPCOTrans& aDummyCOTrans); + + // MTimeoutCallback + virtual void Timeout(); +private: + void MoveToNextState(); + void CompleteOwnRequest(); + void CreateMultiPartRelatedPushMsg(); + void CreateSLPushMsg(); + void CreateClSecureSiaPushMsgL(); + void SetupAddressL(); +private: + enum TState + { + EInitialisation, + EDWSOGetEventInitialisation, + EWaitForAcknowledge, + EFinished + }; + enum TResponseState + { + ESessionConfirm, + ETransaction + }; +private: + TState iState; + TResponseState iResponseState; + + TBuf8 iBodyBuf; + TBuf8 iHeadersBuf; + HBufC8* iBody; + HBufC8* iHeaders; + + CDummyWapStack* iWapStack; + CConnectionManager* iConnMan; + TBool iHasMsgBeenCompleted; + TBool iAck; + TBool iSiaMsgPushed; + CTestTimer *iTimer; + + }; + +//------------------------------------------------------------------------------ +class CDummyObserver : public CBase, public MMsvSessionObserver + { +public: + void HandleSessionEventL(TMsvSessionEvent, TAny*, TAny*, TAny*) {}; + }; + +//------------------------------------------------------------------------------ +class CWapClientMtmFindTest : public CWapPushTest + { +public: + CWapClientMtmFindTest() : + iSession(NULL), iDummyObserver(NULL){}; + ~CWapClientMtmFindTest(); +private: + // From CWapPushTest + const TDesC& TestName(); + + // From CActive + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + + // Private methods + void SetupFindDataL(CMsvEntry* entry); + void PerformTests(CBaseMtm* aWapPushClientMtm); + void TestAndPrint( + CBaseMtm* aWapPushClientMtm, + const TDesC& aTestText, + TMsvPartList aResultList); + +private: + CMsvSession* iSession; + CDummyObserver* iDummyObserver; + TMsvId iMessageId; + }; +//------------------------------------------------------------------------------ + +/** DRM derived test case */ +class CWapPushDRMMessageTest : public CWapPushBaseMessageTest + { + virtual const TDesC& TestName(); + + virtual void NumberTestCasesToRun(); + virtual void PrepareTestMessageL(TInt aCurrentTestCase); + // new to validate expected test messages(s) stored ok... + virtual TBool ConfirmMessagesSavedL(); + + void RegRequesttriggerMessageL(); + void ROAquisationTriggerMessageL(); + void JoinDomaintriggerMessageL(); + void LeaveDomainTriggerMessageL(); + void WbXmlROMessageL(); + void InvalidWbXmlROMessageL(); + void XmlROMessageL(); + void InvalidXmlROMessageL(); + void LargeXmlROMessageL(); + void LargeWbXmlROMessageL(); + void InvalidRegRequesttriggerMessageL(); + void InvalidROAquisationTriggerMessageL(); + void InvalidJoinDomaintriggerMessageL(); + void InvalidLeaveDomainTriggerMessageL(); + private : + HBufC8* iMsg; + }; + + +#endif