messagingfw/wappushfw/tpush/INC081489.cpp
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/wappushfw/tpush/INC081489.cpp	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,284 @@
+// 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;
+	}
+