// Copyright (c) 2006-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 <push/sislpushmsgutils.h>#include "pushtests.h"#include "dummywapstack.h"#include "wappushmsggen.h"#include <push/csipushmsgentry.h>// si text message data_LIT8(KSIHref1, "http://www.xyz.com/ppaid/1231/abc.wml");_LIT8(KSIHref4, "http://www.xyz.com/ppaid/1234/abc.wml");_LIT8(KSIHref5, "http://www.xyz.com/ppaid/1236/abc.wml");_LIT8(KDate1, "2006-02-22T07:58:01Z");_LIT8(KDate2, "2006-02-22T08:58:01Z");_LIT8(KDate3, "2006-02-22T09:58:01Z");_LIT8(KDate4, "2006-02-22T10:58:01Z");_LIT8(KDate5, "2006-02-22T11:58:01Z");_LIT8(KDate6, "2006-02-22T12:58:01Z");_LIT8(KDate7, "2006-02-22T13:58:01Z");_LIT8(KDate8, "2006-02-22T14:58:01Z");_LIT8(KDate9, "2006-02-22T15:58:01Z");_LIT8(KDate10, "2006-02-22T16:58:01Z");_LIT8(KDate11, "2006-02-22T17:58:01Z");_LIT8(KSISiId1, "http://www.xyz.com/ppaid/1231/abc.wml");_LIT8(KSISiId2, "http://www.xyz.com/ppaid/1232/abc.wml");_LIT8(KSISiId3, "http://www.xyz.com/ppaid/1233/abc.wml");_LIT8(KSISiId5, "http://www.xyz.com/ppaid/1235/abc.wml");/** set test name to 'Duplicate SI messages [CINC081489]' @param void @return string string represents test name*/const TDesC& CINC081489::TestName(){ _LIT(KTextSIMessageTest, "Duplicate SI messages [CINC081489]"); return KTextSIMessageTest;}/** set the number of test messages to use */void CINC081489::NumberTestCasesToRun(){ iNumberOfTestCases = 16;}/** 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 CINC081489::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) { // INC081489 - part 1 // Three messages with same EHRef, EServiceIndicationID and different EServiceIndicationCreated case 0 : msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref1); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId1); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate1); break; case 1 : msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref1); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId1); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate2); break; case 2 : msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref1); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId1); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate3); break; case 3 :// INC081489 - part 2 //Three messages with same EHRef, EServiceIndicationID and EServiceIndicationCreated case 4 : case 5 : msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref1); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId2); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate1); break; case 6 : // INC081568 - part 1 // Same "si-id","created" and no value for the "href" attribute. case 7 : msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId3); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate4); break; case 8 : // INC082189 // Two Push SI messages,the same "href"and "created",no "si-id", case 9 : // msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref4); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate5); break; // INC082190: Three Push SI msgs, the same "si-id",different "created",no "href" case 10 : msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId5); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate6); break; case 11 : msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId5); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate7); break; case 12 : msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, KSISiId5); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate8); break; // INC082191: Three Push SI msgs, the same "href",different "created",no "si-id" case 13 : msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref5); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate9); break; case 14 : msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref5); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate10); break; case 15 : msgGen->AppendFieldL(CWapPushMsgGen::EHRef, KSIHref5); msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, KDate11); break; default: // do nothing break; } msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationText, _L8("You have 4 new e-mails")); HBufC8* msg = msgGen->CreateMsgLC(); 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 CINC081489::ConfirmMessagesSavedL() { CSISLPushMsgUtils* wapPushUtils = CSISLPushMsgUtils::NewL(); CleanupStack::PushL(wapPushUtils); TMsvId localFolderId; wapPushUtils->GetPushMsgFolderIdL(localFolderId); const TDesC& siId1 = _L("http://www.xyz.com/ppaid/1231/abc.wml"); const TDesC& siId2 = _L("http://www.xyz.com/ppaid/1232/abc.wml"); const TDesC& siId3 = _L("http://www.xyz.com/ppaid/1233/abc.wml"); const TDesC& siId4 = _L("http://www.xyz.com/ppaid/1234/abc.wml"); const TDesC& siId5 = _L("http://www.xyz.com/ppaid/1235/abc.wml"); const TDesC& siId6 = _L("http://www.xyz.com/ppaid/1236/abc.wml"); CMsvEntrySelection* matchingIdList = wapPushUtils->FindSiIdLC(siId1); // INC081489 - part 1 // Three messages with same EHRef, EServiceIndicationID and different EServiceIndicationCreated TInt foundCount; if (matchingIdList) { foundCount = matchingIdList->Count(); } else foundCount = 0; CleanupStack::PopAndDestroy(matchingIdList ); // INC081489 - part 2 // Three messages with same EHRef, EServiceIndicationID and EServiceIndicationCreated matchingIdList = wapPushUtils->FindSiIdLC(siId2); if (matchingIdList) { foundCount += matchingIdList->Count(); } CleanupStack::PopAndDestroy(matchingIdList); // INC081568 - part 1 // Same "si-id","created" and no value for the "href" attribute. matchingIdList = wapPushUtils->FindSiIdLC(siId3); if (matchingIdList) { foundCount += matchingIdList->Count(); } CleanupStack::PopAndDestroy(matchingIdList); //INC082189 - Two Push SI messages,the same "href"and "created",no "si-id", matchingIdList = wapPushUtils->FindSiIdLC(siId4); if (matchingIdList) { foundCount += matchingIdList->Count(); } CleanupStack::PopAndDestroy(matchingIdList); // INC082190: Three Push SI msgs, the same "si-id",different "created",no "href" matchingIdList = wapPushUtils->FindSiIdLC(siId5); if (matchingIdList) { foundCount += matchingIdList->Count(); } CleanupStack::PopAndDestroy(matchingIdList); // INC082191: Three Push SI msgs, the same "href",different "created",no "si-id" matchingIdList = wapPushUtils->FindSiIdLC(siId6); if (matchingIdList) { foundCount += matchingIdList->Count(); } TBuf<KPushLogBuffer> buf; _LIT(KLogSICount,"SI messages stored:\t%d"); buf.Format(KLogSICount,foundCount); WPLPrintf(buf); CleanupStack::PopAndDestroy(2); // wapPushUtils, matchingIdList return foundCount; }