diff -r 08008ce8a6df -r bde600d88860 messagingfw/wappushfw/tpush/t_siamessage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/tpush/t_siamessage.cpp Fri Jun 04 10:32:16 2010 +0100 @@ -0,0 +1,242 @@ +// 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: +// + +#include "pushtests.h" +#include "dummywapstack.h" +#include "wappushmsggen.h" +#include +#include + + + +/** set test name to 'Service Initiation Application' + * @param void + * @return string + * string represents test name + */ +const TDesC& CWapPushSIAMessageTest::TestName() + { + _LIT(KTextSIAMessageTest, "Service Intiation Application"); + return KTextSIAMessageTest; + } + +/** + * set the number of test messages to use + */ +void CWapPushSIAMessageTest::NumberTestCasesToRun() + { + iNumberOfTestCases = 3; + } + +/** build different test messages to test specific SIA + * handling of messages. + * @param TInt + * the number of test messages to create and use + * @return void + */ +void CWapPushSIAMessageTest::PrepareTestMessageL(TInt aTestCase) + { + static TBool setup = ETrue; + if (setup) + { + SetupAddressL(); + setup = EFalse; + } + + // this set of test messages adds a test message + const TUint8 KSIAMessageHeader[] = + { + 0xB4, //Content type "application/vnd.wap.sia" + 0x92, // Date + 0x04, // length of field + 0x39, // Monday 15 August 2000 10:41:37 GMT + 0x90, + 0x6a, + 0xd0, + 0x94, // Expires + 0x04, // length of field + 0x39, // Monday 15 August 2000 10:41:37 GMT + 0x9a, + 0x6a, + 0xd0, + 0xAF, //X-Wap-Application-ID + 0x82 // Short int - 0x02 represent x-wap-application:push.ua + }; + iHeadersBuf.Append(KSIAMessageHeader, sizeof(KSIAMessageHeader)); + + iBodyBuf.Delete(0,KBufferSize); + //iBodyBuf.Zero(); + + // NOTE: tests for valid address require address in COMMDB + + switch (aTestCase) + { + case 0 : // normal SIA message with single valid address + { + const TUint8 SIA[]= + { + 0x00, // version + 0x02, // AppIdListLen + 0x44, // Application Id List + 0x44, + 0x1B, // ContactPointsLen + // Contact Points + 0xD7, // bearer flag and port flag and address len + 0x0A, // bearer Type (CSD) + 0x0B, // port number + 0x84, // = 2948 + 0x68, // address - "http://www.symbian.com/" (as text) + 0x74, + 0x74, + 0x70, + 0x3A, + 0x2F, + 0x2F, + 0x77, + 0x77, + 0x77, + 0x2E, + 0x73, + 0x79, + 0x6D, + 0x62, + 0x69, + 0x61, + 0x6E, + 0x2E, + 0x63, + 0x6F, + 0x6D, + 0x2F + }; + iBodyBuf.Append(SIA, sizeof(SIA)); + } + break; + case 1 : // normal SIA message but no port or bearer ( valid ) + { + const TUint8 SIA[]= + { + 0x00, // version + 0x02, // AppIdListLen + 0x44, // Application Id List + 0x44, + 0x18, // ContactPointsLen + // Contact Points + 0x17, // no bearer flag or port flag only address len + // no bearer or port specified + 0x68, // address - "http://www.symbian.com/" (as text) + 0x74, + 0x74, + 0x70, + 0x3A, + 0x2F, + 0x2F, + 0x77, + 0x77, + 0x77, + 0x2E, + 0x73, + 0x79, + 0x6D, + 0x62, + 0x69, + 0x61, + 0x6E, + 0x2E, + 0x63, + 0x6F, + 0x6D, + 0x2F + }; + iBodyBuf.Append(SIA, sizeof(SIA)); + } + break; + case 2 : // SIA message with no contact points specified (error) + { + const TUint8 SIA[]= + { + 0x00, // version + 0x02, // AppIdListLen + 0x44, // Application Id List + 0x44, + 0x00 // ContactPointsLen == 0 + // No Contact Points + }; + iBodyBuf.Append(SIA, sizeof(SIA)); + } + break; + case 3 : // normal SIA message with three addresses - 3rd valid + break; + case 4 : // SIA message with incorrect contact point (error) + break; + default: + // do nothing + break; + } + + } + +/** confirm the message has been stored. + * Writes the number of stored messages found to the log file - if present. + * @param void + * @return TBool + * returns ETrue if messages found + * returns EFalse if no messages found + */ +TBool CWapPushSIAMessageTest::ConfirmMessagesSavedL() + { + // no messages to save.... + return EFalse; + } + +/** + * Prime the commdb with address and security port settings. + * + */ +void CWapPushSIAMessageTest::SetupAddressL() + { + CCommsDatabase *db = CCommsDatabase::NewL(EDatabaseTypeUnspecified); + CleanupStack::PushL(db); + + CCommsDbTableView* waptable; + + TPtrC tableName(WAP_IP_BEARER); + TPtrC columnName(WAP_GATEWAY_ADDRESS); +// TPtrC SecurityCol(WAP_SECURITY); + _LIT(address, "http://www.symbian.com/"); + + TBuf<30> KTestAddress(address); + //TBool secure = ETrue; + + waptable = db->OpenTableLC(tableName); + + TUint32 recordId; + TInt ret; + ret = waptable->InsertRecord(recordId); + waptable->WriteUintL(TPtrC(WAP_ACCESS_POINT_ID),recordId); + if (ret == KErrNone) + { + // void WriteTextL(const TDesC& aColumn, const TDesC& aValue); + waptable->WriteTextL(columnName, KTestAddress); + // void WriteBoolL(const TDesC& aColumn, const TBool& aValue); + + // leave Security field unset - shd be NULL ? (= EFalse) + + // TInt PutRecordChanges(TBool aHidden = EFalse, TBool aReadOnly = EFalse); + waptable->PutRecordChanges(); + } + + CleanupStack::PopAndDestroy(2); // db, view + }