--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/wappushfw/tpush/t_siamessage.cpp Mon Jan 18 20:36:02 2010 +0200
@@ -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 <push/cwappushmsgutils.h>
+#include <commdb.h>
+
+
+
+/** 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
+ }