--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/wappushfw/tpushscriptbased/t_simessage.cpp Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,294 @@
+// Copyright (c) 2007-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 <push/csipushmsgentry.h>
+#include <push/pushmessage.h>
+#include <ineturilist.h>
+#include <ineturilistdef.h>
+
+#include "pushtests.h"
+#include "dummywapstack.h"
+#include "wappushmsggen.h"
+
+#include "httptestutils.h"
+#if !defined(__TESTSCRIPTS_H__)
+#include "TestScripts.h"
+#endif
+
+
+_LIT(KWapIniFolder, "wapini");
+_LIT(KWapIni, "wap.ini");
+
+_LIT(KSiId, "SI-Id");
+_LIT(KSICreated, "SI-Created");
+_LIT(KSIExpires, "SI-Expires");
+
+CWapPushSIMessageTest::CWapPushSIMessageTest(TInt aIndex, CHTTPTestUtils* aTestUtils):CWapPushMessageTest(aIndex, aTestUtils)
+ {
+ }
+
+CWapPushSIMessageTest::~CWapPushSIMessageTest()
+ {
+ delete iSiId;
+ delete iSiCreatedDate;
+ delete iSiExpiresDate;
+ }
+
+const TDesC& CWapPushSIMessageTest::TestName()
+ {
+ _LIT(KTextSIMessageTest, "Service Indication");
+ return KTextSIMessageTest;
+ }
+
+void CWapPushSIMessageTest::NumberTestCasesToRun()
+ {
+ iNumberOfTestCases = 1;
+ }
+
+TDesC8& CWapPushSIMessageTest::GetSiId() const
+ {
+ return (*(iSiId));
+ }
+
+TDesC8& CWapPushSIMessageTest::GetSICreatedDate() const
+ {
+ return(*(iSiCreatedDate));
+ }
+
+TDesC8& CWapPushSIMessageTest::GetSIExpiresDate() const
+ {
+ return(*(iSiExpiresDate));
+ }
+
+TDesC8& CWapPushSIMessageTest::Uri() const
+ {
+ return (*(iUri));
+ }
+
+void CWapPushSIMessageTest::ReadAndSetSIParamsFromIniFileL()
+ {
+ // Delete previously read buffers.
+ delete iSiId;
+ delete iSiCreatedDate;
+ delete iSiExpiresDate;
+
+
+ CScriptFile* iniFile = NULL;
+ iniFile = CScriptFile::NewL(*iTestUtils, KWapIniFolder(), KWapIni());
+ CleanupStack::PushL(iniFile);
+
+ TInt itemFieldCount= iniFile->Section(iSectionIndex).Items().Count();
+
+ TBuf8<200> itemFieldValue8;
+
+ for (TInt fctr=0; fctr < itemFieldCount ; ++fctr)
+ {
+ TPtrC itemFieldPtr(iniFile->Section(iSectionIndex).Item(fctr).Item());
+ itemFieldValue8.Copy(iniFile->Section(iSectionIndex).Item(fctr).Value());
+
+ if(itemFieldPtr.Compare(KSiId) == 0)
+ {
+ iSiId = itemFieldValue8.AllocL();
+ RemoveQuotes(iSiId);
+ }
+ else if(itemFieldPtr.Compare(KSICreated) == 0)
+ {
+ iSiCreatedDate = itemFieldValue8.AllocL();
+ RemoveQuotes(iSiCreatedDate);
+ }
+ else if(itemFieldPtr.Compare(KSIExpires) == 0)
+ {
+ iSiExpiresDate = itemFieldValue8.AllocL();
+ RemoveQuotes(iSiExpiresDate);
+ }
+ }
+ CleanupStack::PopAndDestroy(iniFile);
+ }
+
+void CWapPushSIMessageTest::PrepareTestMessageL(TInt aTestCase)
+ {
+ ReadAndSetParamsFromIniFileL();
+ ReadAndSetSIParamsFromIniFileL();
+
+ CWapPushMsgGen* msgGen = CWapPushMsgGen::NewL();
+ CleanupStack::PushL(msgGen);
+
+ msgGen->StartNewMsgL(CWapPushMsgGen::EServiceIndication);
+
+ if(iHRef)
+ {
+ msgGen->AppendFieldL(CWapPushMsgGen::EHRef, GetHRef());
+ }
+ if(iAction)
+ {
+ msgGen->AppendFieldL(CWapPushMsgGen::EAction, GetAction());
+ }
+ if(iSiId)
+ {
+ msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationID, GetSiId());
+ }
+ if(iSiCreatedDate)
+ {
+ msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationCreated, GetSICreatedDate());
+ }
+ if(iSiExpiresDate)
+ {
+ msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationExpires, GetSIExpiresDate());
+ }
+
+ const TUint8 KMessageHeader2[] =
+ {
+ 0xAD,
+ 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);
+
+ switch (aTestCase)
+ {
+ case 0 :
+ msgGen->AppendFieldL(CWapPushMsgGen::EServiceIndicationText, _L8("You have 4 new e-mails"));
+ break;
+
+ default:
+ // do nothing
+ break;
+ }
+
+ HBufC8* msg = msgGen->CreateMsgLC();
+ iBodyBuf = msg->Des();
+
+ CleanupStack::PopAndDestroy(2); //msgGen, msg
+ }
+
+TBool CWapPushSIMessageTest::ConfirmMessagesSavedL()
+ {
+ TInt returnVal = 0;
+ const TDesC& siId16 = _L("http://www.xyz.com/ppaid/123/abc.wml");
+
+ CSISLPushMsgUtils *wapPushUtils = CSISLPushMsgUtils::NewL();
+ CleanupStack::PushL(wapPushUtils);
+
+ CMsvEntrySelection* matchingIdList;
+ matchingIdList = wapPushUtils->FindSiIdLC(siId16);
+
+ TMsvId matchingSiMsgEntryId;
+
+ if(matchingIdList->Count())
+ {
+ TInt matchingListCount = matchingIdList->Count();
+ matchingSiMsgEntryId = matchingIdList->At(matchingListCount-1);
+
+ HBufC8* header = iHeadersBuf.AllocLC();
+ HBufC8* body = iBodyBuf.AllocLC();
+
+ CPushMessage* pushMsg = CPushMessage::NewL(header, body);
+ CleanupStack::Pop(2); // body, header
+ CleanupStack::PushL(pushMsg);
+
+ TBool isInt;
+ TPtrC8 appURI;
+ TInt appID=0;
+ pushMsg->GetAppIdL(appURI, appID, isInt);
+ CSIPushMsgEntry* siEntry=NULL;
+ if (isInt)
+ {
+ siEntry = CSIPushMsgEntry::NewL(appID);
+ }
+ else
+ {
+ siEntry = CSIPushMsgEntry::NewL(appURI);
+ }
+ CleanupStack::PushL(siEntry);
+
+ siEntry->RetrieveL(wapPushUtils->Session(), matchingSiMsgEntryId);
+
+ TInt trusted = siEntry->Trusted();
+ TPtrC8 ptr(siEntry->MsgOriginUri());
+
+ RInetUriList inetUriList;
+ InetUriList::TListType listType;
+ TRAPD(err, inetUriList.OpenL());
+ if(err == KErrNone)
+ {
+ TPtrC8 serverAddress(iUri->Des());
+ err = inetUriList.GetListType(serverAddress, InetUriList::EWapPush, listType);
+ }
+ inetUriList.Close();
+
+ if(trusted == 1)
+ {
+ // whitelist
+ if((iUri->Compare(siEntry->MsgOriginUri()) == 0) && (err == KErrNone) && (listType == InetUriList::EWhiteList))
+ {
+ returnVal = KErrNone;
+ }
+ else
+ {
+ returnVal = KErrGeneral;
+ }
+ }
+ else if(trusted == 0)
+ {
+ // unknown
+ if((iUri->Compare(siEntry->MsgOriginUri()) == 0) && (err == InetUriList::KErrUriNotFound))
+ {
+ returnVal = KErrNone;
+ }
+ else
+ {
+ returnVal = KErrGeneral;
+ }
+ }
+
+ wapPushUtils->DeleteEntryNowL(matchingSiMsgEntryId);
+ CleanupStack::PopAndDestroy(siEntry);
+ CleanupStack::PopAndDestroy(pushMsg);
+
+ }
+ CleanupStack::PopAndDestroy(matchingIdList);
+
+ CleanupStack::PopAndDestroy(wapPushUtils);
+
+ return returnVal;
+ }
+
+