diff -r 000000000000 -r 8e480a14352b messagingfw/wappushfw/tpush/t_simessage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/tpush/t_simessage.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,291 @@ +// 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 + +#include "pushtests.h" +#include "dummywapstack.h" +#include "wappushmsggen.h" + +// si text message data + +_LIT8(KSIAction,"delete"); +_LIT8(KSIHref, "http://www.xyz.com/ppaid/123/abc.wml"); +_LIT8(KSINewHref, "http://www.xyz.com/ppaid/123/new.wml"); +_LIT8(KSIOldDate, "2000-01-01T15:23:15Z"); +_LIT8(KSeptemberDate, "2000-09-30T00:00:00Z"); +_LIT8(KOctoberDate, "2000-10-30T00:00:00Z"); +_LIT8(KSISiId, "http://www.xyz.com/ppaid/123/abc.wml"); + +/** set test name to 'Service Indication' + @param void + @return string + string represents test name +*/ +const TDesC& CWapPushSIMessageTest::TestName() +{ + _LIT(KTextSIMessageTest, "Service Indication"); + return KTextSIMessageTest; +} + +/** set the number of test messages to use */ +void CWapPushSIMessageTest::NumberTestCasesToRun() +{ + iNumberOfTestCases = 8; +} + +/** build different test messages to test specific SI reception aspects + in the SI content handler processing code. + @param TInt + the number of test messages to create and use + @return void +*/ +void CWapPushSIMessageTest::PrepareTestMessageL(TInt aTestCase) +{ + // this set of test messages adds a test message + // to the store for the match cases, + // replaces the stored message and ends with no stored si message + const TUint8 KMessageHeader2[] = + { + //0xB0, //Content type "application/vnd.wap.slc" + 0xAD, //Content type "application/vnd.wap.si" + 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 + }; + + TBuf8<40> tempBuf; + TUint8 value; + for (TInt i = 0; i < 15; i++) + { + value = KMessageHeader2[i]; + tempBuf.Append(value); + } + + iHeadersBuf.Copy(tempBuf); + tempBuf.Copy(_L8("")); + + iBodyBuf.Delete(0,KBufferSize); + //iBodyBuf.Zero(); + + CWapPushMsgGen* msgGen = CWapPushMsgGen::NewL(); + CleanupStack::PushL(msgGen); + + msgGen->StartNewMsgL(CWapPushMsgGen::EServiceIndication); + + switch (aTestCase) + { + case 0 : // no action - msg stored with action = "signal-medium" + // this initial msg will match in cases 2 and 3... + msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KSeptemberDate); + break; + case 1 : // message expired - delete + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationExpires, KSIOldDate); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, _L8("do not store this message")); + break; + case 2 : // match existing si - delete received si + msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KSIOldDate); + break; + case 3 : // match existing si - delete existing si + // deletes msg created in case 0 and will replace it + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KOctoberDate); // date > stored date + break; + case 4 : // match existing si and discard receved message + // matches msg from case 3 + msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSINewHref); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KOctoberDate); // date = stored date + break; + case 5 : // action = delete; href set but no si-id (no deletion occurs) + // store msg but has si-id equal to received msg href.... + msgGen->AppendFieldL(CWapPushMsgGen::EAction, KSIAction); + msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref); + break; + case 6 : // action = delete; si-id set (delete msg) + // any matching record will already have been deleted + msgGen->AppendFieldL(CWapPushMsgGen::EAction, KSIAction); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId); + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KOctoberDate); + break; + case 7 : + // testing fix for INC038455 - Apostrophe char (0x27) in SI message makes CXmlLibrary leave with -13106 + PrepareApostropheTestMessageL(); + break; + default: + // do nothing + break; + } + msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationText, _L8("You have 4 new e-mails")); + + HBufC8* msg = msgGen->CreateMsgLC(); + // copy data to iBodyBuf + if (aTestCase!=7) + { + iBodyBuf = msg->Des(); + } + CleanupStack::PopAndDestroy(2); //msgGen, msg +} + +/** 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 CWapPushSIMessageTest::ConfirmMessagesSavedL() + { + CSISLPushMsgUtils* wapPushUtils = CSISLPushMsgUtils::NewL(); + CleanupStack::PushL(wapPushUtils); + + TMsvId localFolderId; + wapPushUtils->GetPushMsgFolderIdL(localFolderId); + + const TDesC& siId16 = _L("http://www.xyz.com/ppaid/123/abc.wml"); + CMsvEntrySelection* matchingIdList = wapPushUtils->FindSiIdLC(siId16); + + // check there are any entries - zero indicates no matches + TInt foundCount; + if (matchingIdList) + foundCount = matchingIdList->Count(); + else + foundCount = 0; + + TBuf buf; + _LIT(KLogSICount,"SI messages stored:\t%d"); + buf.Format(KLogSICount,foundCount); + WPLPrintf(buf); + + CleanupStack::PopAndDestroy(2); // wapPushUtils, matchingIdList + return foundCount; + } + +void CWapPushSIMessageTest::PrepareApostropheTestMessageL() + { + const TUint8 KMessageHeader2[] = + { + 0xAE, //Content type "application/vnd.wap.si" + 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 + }; + + const TUint8 KBody[] = + { + 0x02, + 0x05, + 0x6A, + 0x00, + 0x45, + 0xC6, + 0x0C, + 0x03, + 0x77, + 0x61, + 0x70, + 0x2E, + 0x67, + 0x6F, + 0x6F, + 0x67, + 0x6C, + 0x65, + 0x2E, + 0x63, + 0x6F, + 0x6D, + 0x00, + 0x01, + 0x03, + 0xA0, + 0x49, + 0x74, + 0x27, // +// 0x22, // + 0x73, + 0xA0, + 0x46, + 0xA0, + 0x46, + 0xA0, + 0x46, + 0xA0, + 0x46, + 0x72, + 0x69, + 0x64, + 0x61, + 0x79, + 0x21, + 0x21, + 0x21, + 0xA0, + 0x00, + 0x01, + 0x01 + }; + + + TBuf8<60> tempBuf; + TUint8 value; + for (TInt i = 0; i < 15; i++) + { + value = KMessageHeader2[i]; + tempBuf.Append(value); + } + + iHeadersBuf.Copy(tempBuf); + tempBuf.Copy(_L8("")); + + iBodyBuf.Delete(0,KBufferSize); + + for (TInt ii = 0; ii < 50; ii++) + { + value = KBody[ii]; + tempBuf.Append(value); + } + + // copy data to iBodyBuf + iBodyBuf.Copy(tempBuf); + tempBuf.Copy(_L8("")); + } + +