websrv_pub/web_service_messaging_api/tsrc/bc/newsoapclasses/src/newsoapclassescases.cpp
changeset 0 62f9d29f7211
child 23 a1df79fa35b4
child 34 f68f07157250
equal deleted inserted replaced
-1:000000000000 0:62f9d29f7211
       
     1 /*
       
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:          ?Description
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 
       
    23 
       
    24 
       
    25 
       
    26 
       
    27 
       
    28 // INCLUDE FILES
       
    29 #include <StifTestModule.h>
       
    30 #include <e32math.h>
       
    31 #include <libc/assert.h>
       
    32 #include <e32panic.h>
       
    33 #include "newsoapclassesbctest.h"
       
    34 #include "testmsenmessage.h"
       
    35 
       
    36 
       
    37 // ============================ MEMBER FUNCTIONS ===============================
       
    38 
       
    39 // -----------------------------------------------------------------------------
       
    40 // CNewSoapClassesBCTest::Case
       
    41 // Returns a test case by number.
       
    42 //
       
    43 // This function contains an array of all available test cases 
       
    44 // i.e pair of case name and test function. If case specified by parameter
       
    45 // aCaseNumber is found from array, then that item is returned.
       
    46 // 
       
    47 // The reason for this rather complicated function is to specify all the
       
    48 // test cases only in one place. It is not necessary to understand how
       
    49 // function pointers to class member functions works when adding new test
       
    50 // cases. See function body for instructions how to add new test case.
       
    51 // -----------------------------------------------------------------------------
       
    52 //
       
    53 const TCaseInfo CNewSoapClassesBCTest::Case ( 
       
    54     const TInt aCaseNumber ) const 
       
    55      {
       
    56 
       
    57     /**
       
    58     * To add new test cases, implement new test case function and add new 
       
    59     * line to KCases array specify the name of the case and the function 
       
    60     * doing the test case
       
    61     * In practice, do following
       
    62     * 1) Make copy of existing test case function and change its name
       
    63     *    and functionality. Note that the function must be added to 
       
    64     *    NewSoapClasses.cpp file and to NewSoapClasses.h 
       
    65     *    header file.
       
    66     *
       
    67     * 2) Add entry to following KCases array either by using:
       
    68     *
       
    69     * 2.1: FUNCENTRY or ENTRY macro
       
    70     * ENTRY macro takes two parameters: test case name and test case 
       
    71     * function name.
       
    72     *
       
    73     * FUNCENTRY macro takes only test case function name as a parameter and
       
    74     * uses that as a test case name and test case function name.
       
    75     *
       
    76     * Or
       
    77     *
       
    78     * 2.2: OOM_FUNCENTRY or OOM_ENTRY macro. Note that these macros are used
       
    79     * only with OOM (Out-Of-Memory) testing!
       
    80     *
       
    81     * OOM_ENTRY macro takes five parameters: test case name, test case 
       
    82     * function name, TBool which specifies is method supposed to be run using
       
    83     * OOM conditions, TInt value for first heap memory allocation failure and 
       
    84     * TInt value for last heap memory allocation failure.
       
    85     * 
       
    86     * OOM_FUNCENTRY macro takes test case function name as a parameter and uses
       
    87     * that as a test case name, TBool which specifies is method supposed to be
       
    88     * run using OOM conditions, TInt value for first heap memory allocation 
       
    89     * failure and TInt value for last heap memory allocation failure. 
       
    90     */ 
       
    91 
       
    92     static TCaseInfoInternal const KCases[] =
       
    93         {
       
    94         
       
    95         ENTRY( "NewL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLL ),
       
    96         ENTRY( "NewLC - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLCL ),
       
    97         ENTRY( "NewL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewL_1L ),
       
    98         ENTRY( "NewLC - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLC_1L ),
       
    99         ENTRY( "NewL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewL_2L ),
       
   100         ENTRY( "NewLC - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLC_2L ),
       
   101         ENTRY( "Type - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_TypeL ),
       
   102         ENTRY( "Direction - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_DirectionL ),
       
   103         ENTRY( "TxnId - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_TxnIdL ),
       
   104         ENTRY( "Clone - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_CloneL ),
       
   105         ENTRY( "SoapVersion - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SoapVersionL ),
       
   106         ENTRY( "SetContext - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetContextL ),
       
   107         ENTRY( "Context - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_ContextL ),
       
   108         ENTRY( "SetProperties - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetPropertiesL ),
       
   109         ENTRY( "SetBodyL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetBodyLL ),
       
   110         ENTRY( "Properties - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_PropertiesL ),
       
   111         ENTRY( "IsSafeToCast - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_IsSafeToCastL ),
       
   112         
       
   113         ENTRY( "SetBodyL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetBodyL_1L ),
       
   114         ENTRY( "BodyL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_BodyLL ),
       
   115         ENTRY( "HeaderL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_HeaderLL ),
       
   116         ENTRY( "AddHeaderL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_AddHeaderLL ),
       
   117         ENTRY( "BodyAsStringL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_BodyAsStringLL ),
       
   118         ENTRY( "IsFault - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_IsFaultL ),
       
   119         ENTRY( "DetachFaultL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_DetachFaultLL ),
       
   120         ENTRY( "FaultL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_FaultLL ),
       
   121         ENTRY( "SetSoapActionL - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetSoapActionLL ),
       
   122         ENTRY( "SoapAction - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SoapActionL ),
       
   123         ENTRY( "HasHeader - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_HasHeaderL ),
       
   124         ENTRY( "HasBody - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_HasBodyL ),
       
   125         ENTRY( "Parse1 - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_Parse1L ),
       
   126         ENTRY( "Parse2 - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_Parse2L ),
       
   127         ENTRY( "Parse2 - CSenSoapEnvelope2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_Parse3L ),
       
   128         ENTRY( "NewL - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_NewLL ),
       
   129         ENTRY( "NewL - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_NewL_1L ),
       
   130         ENTRY( "NewL - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_NewL_2L ),
       
   131         ENTRY( "FaultCode - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultCodeL ),
       
   132         ENTRY( "FaultSubcode - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultSubcodeL ),
       
   133         ENTRY( "FaultString - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultStringL ),
       
   134         ENTRY( "FaultActor - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultActorL ),
       
   135         ENTRY( "Detail - CSenSoapFault2", CNewSoapClassesBCTest::MT_CSenSoapFault2_DetailL ),
       
   136         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLL ),
       
   137         ENTRY( "NewLC - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLCL ),
       
   138         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_1L ),
       
   139         ENTRY( "NewLC - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_1L ),
       
   140         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_2L ),
       
   141         ENTRY( "NewLC - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_2L ),
       
   142         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_3L ),
       
   143         ENTRY( "NewLC - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_3L ),
       
   144         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_4L ),
       
   145         ENTRY( "NewLC - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_4L ),
       
   146         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_5L ),
       
   147         ENTRY( "NewLC - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_5L ),
       
   148         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_6L ),
       
   149         ENTRY( "NewLC - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_6L ),
       
   150         ENTRY( "NewL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLL ),
       
   151         ENTRY( "Type - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_TypeL ),
       
   152         ENTRY( "Clone - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_CloneL ),
       
   153 		ENTRY( "Parse - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_Parse1L ),        
       
   154         ENTRY( "SetSecurityHeaderL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_SetSecurityHeaderLL ),
       
   155         ENTRY( "AddSecurityTokenL - CSenSoapMessage2", CNewSoapClassesBCTest::MT_CSenSoapMessage2_AddSecurityTokenLL ),
       
   156         ENTRY( "NewL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLL ),
       
   157         ENTRY( "NewLC - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLCL ),
       
   158         ENTRY( "NewL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewL_1L ),
       
   159         ENTRY( "NewLC - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLC_1L ),
       
   160         ENTRY( "NewL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewL_2L ),
       
   161         ENTRY( "NewLC - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLC_2L ),
       
   162         ENTRY( "UsernameTokenL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenLL ),
       
   163         ENTRY( "UsernameTokenL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_1L ),
       
   164         ENTRY( "UsernameTokenL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_2L ),
       
   165         ENTRY( "UsernameTokenL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_3L ),
       
   166         ENTRY( "UsernameTokenL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_4L ),
       
   167         ENTRY( "TimestampL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_TimestampLL ),
       
   168         ENTRY( "TimestampL - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_TimestampL_1L ),
       
   169         ENTRY( "XmlNs - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_XmlNsL ),
       
   170         ENTRY( "XmlNsPrefix - CSenWsSecurityHeader2", CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_XmlNsPrefixL ),
       
   171         ENTRY( "Type - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_Type),
       
   172         ENTRY( "Direction - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_Direction),
       
   173         ENTRY( "Context - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_Context),
       
   174         ENTRY( "SetContext - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_SetContext),
       
   175         ENTRY( "Properties - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_Properties),
       
   176         ENTRY( "SetProperties - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_SetProperties),
       
   177         ENTRY( "IsSafeToCast - MSenMessage", CNewSoapClassesBCTest:: MT_CTestMSenMessage_IsSafeToCast),
       
   178         ENTRY( "TxnId - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_TxnId),
       
   179         ENTRY( "CloneL - MSenMessage", CNewSoapClassesBCTest::MT_CTestMSenMessage_CloneL),
       
   180         
       
   181         // Example how to use OOM functionality
       
   182         //OOM_ENTRY( "Loop test with OOM", CNewSoapClassesBCTest::LoopTest, ETrue, 2, 3),
       
   183         //OOM_FUNCENTRY( CNewSoapClassesBCTest::PrintTest, ETrue, 1, 3 ),
       
   184         };
       
   185 
       
   186     // Verify that case number is valid
       
   187     if( (TUint) aCaseNumber >= sizeof( KCases ) / 
       
   188                                sizeof( TCaseInfoInternal ) )
       
   189         {
       
   190         // Invalid case, construct empty object
       
   191         TCaseInfo null( (const TText*) L"" );
       
   192         null.iMethod = NULL;
       
   193         null.iIsOOMTest = EFalse;
       
   194         null.iFirstMemoryAllocation = 0;
       
   195         null.iLastMemoryAllocation = 0;
       
   196         return null;
       
   197         } 
       
   198 
       
   199     // Construct TCaseInfo object and return it
       
   200     TCaseInfo tmp ( KCases[ aCaseNumber ].iCaseName );
       
   201     tmp.iMethod = KCases[ aCaseNumber ].iMethod;
       
   202     tmp.iIsOOMTest = KCases[ aCaseNumber ].iIsOOMTest;
       
   203     tmp.iFirstMemoryAllocation = KCases[ aCaseNumber ].iFirstMemoryAllocation;
       
   204     tmp.iLastMemoryAllocation = KCases[ aCaseNumber ].iLastMemoryAllocation;
       
   205     return tmp;
       
   206 
       
   207     }
       
   208 
       
   209 void CNewSoapClassesBCTest::SetupL(  ){
       
   210 
       
   211 	} 
       
   212 
       
   213 void CNewSoapClassesBCTest::Teardown(  ){
       
   214 
       
   215 	}
       
   216 
       
   217 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLL( TTestResult& aResult )
       
   218     {
       
   219 	SetupL();
       
   220     _LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   221     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   222     CleanupStack::PushL(pEnvelope);
       
   223     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   224     CleanupStack::PushL(pAsXml);
       
   225     
       
   226     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   227     
       
   228     CleanupStack::PopAndDestroy(pAsXml);
       
   229     CleanupStack::PopAndDestroy(pEnvelope);
       
   230     Teardown();
       
   231     return KErrNone;    
       
   232     }
       
   233     
       
   234 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLCL( TTestResult& aResult )
       
   235     {
       
   236 	SetupL();
       
   237     _LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   238     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewLC();
       
   239     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   240     CleanupStack::PushL(pAsXml);
       
   241     
       
   242     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   243     
       
   244     CleanupStack::PopAndDestroy(pAsXml);
       
   245     CleanupStack::PopAndDestroy(pEnvelope);
       
   246     //CleanupStack::PopAndDestroy();
       
   247     
       
   248     Teardown();
       
   249     return KErrNone;    
       
   250     }    
       
   251     
       
   252 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewL_1L( TTestResult& aResult )
       
   253     {
       
   254 	SetupL();
       
   255     _LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   256 	MSenMessageContext* mContext = NULL;
       
   257     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL(*mContext);
       
   258     CleanupStack::PushL(pEnvelope);
       
   259     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   260     CleanupStack::PushL(pAsXml);
       
   261     
       
   262     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   263     
       
   264     CleanupStack::PopAndDestroy(pAsXml);
       
   265     CleanupStack::PopAndDestroy(pEnvelope);    
       
   266     Teardown();
       
   267     return KErrNone;    
       
   268 	}
       
   269 
       
   270 
       
   271 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLC_1L( TTestResult& aResult )
       
   272 	{
       
   273 	 SetupL();
       
   274 	 _LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   275 	 MSenMessageContext* mContext = NULL;
       
   276 	 CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewLC(*mContext);
       
   277 	 HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   278 	 CleanupStack::PushL(pAsXml);
       
   279      if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   280      CleanupStack::PopAndDestroy(pAsXml);
       
   281      CleanupStack::PopAndDestroy(pEnvelope);
       
   282      //CleanupStack::PopAndDestroy();
       
   283     Teardown();
       
   284     return KErrNone;    
       
   285 	}
       
   286     
       
   287 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewL_2L( TTestResult& aResult )
       
   288     {
       
   289 	SetupL();
       
   290     _LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   291     CSenSoapEnvelope2* pEnvelope, *pEnvelope1 = CSenSoapEnvelope2::NewL();
       
   292     pEnvelope = CSenSoapEnvelope2::NewL(*pEnvelope1);
       
   293     CleanupStack::PushL(pEnvelope);
       
   294 
       
   295     
       
   296     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   297     CleanupStack::PushL(pAsXml);
       
   298     
       
   299     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   300     
       
   301     CleanupStack::PopAndDestroy(pAsXml);
       
   302     CleanupStack::PopAndDestroy(pEnvelope);
       
   303     delete pEnvelope1;
       
   304     pEnvelope1 = NULL;
       
   305     Teardown();
       
   306     return KErrNone;    
       
   307 	}
       
   308     
       
   309 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_NewLC_2L( TTestResult& aResult )
       
   310     {
       
   311 	SetupL();
       
   312    _LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   313     CSenSoapEnvelope2* pEnvelope, *pEnvelope1 = CSenSoapEnvelope2::NewL();
       
   314     pEnvelope = CSenSoapEnvelope2::NewLC(*pEnvelope1);
       
   315     
       
   316     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   317     CleanupStack::PushL(pAsXml);
       
   318     
       
   319     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   320     
       
   321     CleanupStack::PopAndDestroy(pAsXml);
       
   322     
       
   323     CleanupStack::PopAndDestroy(pEnvelope);
       
   324     //CleanupStack::PopAndDestroy();
       
   325     delete pEnvelope1;
       
   326     pEnvelope1 = NULL;
       
   327     Teardown();
       
   328     return KErrNone;    
       
   329 	}
       
   330     
       
   331 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_TypeL( TTestResult& aResult )
       
   332 	{
       
   333 	SetupL();
       
   334 	MSenMessage::TClass var = MSenMessage::ESoapEnvelope2;
       
   335 	_LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   336     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   337     CleanupStack::PushL(pEnvelope);
       
   338     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   339     CleanupStack::PushL(pAsXml);
       
   340     
       
   341     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   342     CleanupStack::PopAndDestroy(pAsXml);
       
   343     
       
   344     TL(var == pEnvelope->Type());
       
   345     CleanupStack::PopAndDestroy(pEnvelope);
       
   346     Teardown();
       
   347     return KErrNone;    
       
   348 	}
       
   349 	
       
   350 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_DirectionL( TTestResult& aResult )
       
   351 	{
       
   352 	SetupL();
       
   353 	MSenMessage::TDirection var = MSenMessage::EOutbound;
       
   354 	_LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   355     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   356     CleanupStack::PushL(pEnvelope);
       
   357     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   358     CleanupStack::PushL(pAsXml);
       
   359     
       
   360     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   361     CleanupStack::PopAndDestroy(pAsXml);
       
   362     
       
   363     TL(var == pEnvelope->Direction());
       
   364     CleanupStack::PopAndDestroy(pEnvelope);
       
   365     Teardown();
       
   366     return KErrNone;    
       
   367 	}
       
   368 	
       
   369 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_TxnIdL( TTestResult& aResult )
       
   370 	{
       
   371 	SetupL();
       
   372 	_LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   373     CSenSoapEnvelope2* pEnvelope, *pEnvelope1 = CSenSoapEnvelope2::NewL();
       
   374     pEnvelope = CSenSoapEnvelope2::NewL(*pEnvelope1);
       
   375     
       
   376     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   377     CleanupStack::PushL(pAsXml);
       
   378     
       
   379     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   380     
       
   381     CleanupStack::PopAndDestroy(pAsXml);
       
   382     
       
   383     TInt var = pEnvelope->TxnId();
       
   384     TBool Flag;
       
   385     
       
   386     if(var >= 0)
       
   387     if(!(Flag)) return KErrArgument;
       
   388     
       
   389     __ASSERT_ALWAYS_NO_LEAVE(delete pEnvelope);
       
   390     pEnvelope = NULL;
       
   391     delete pEnvelope1;
       
   392     pEnvelope1 = NULL;
       
   393     Teardown();
       
   394     return KErrNone;    
       
   395 	}
       
   396 
       
   397 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_CloneL( TTestResult& aResult )
       
   398 	{
       
   399 	SetupL();
       
   400 	TBool Flag;
       
   401 	CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   402 	CleanupStack::PushL(pEnvelope);
       
   403 	CSenSoapEnvelope2* pClone = NULL;
       
   404     pClone = (CSenSoapEnvelope2*)pEnvelope->CloneL(); 
       
   405     if(pClone != NULL)
       
   406     	Flag = 1;
       
   407     if(!(Flag)) return KErrArgument;
       
   408    
       
   409 	delete pClone;
       
   410     CleanupStack::PopAndDestroy(pEnvelope);
       
   411     
       
   412     Teardown();
       
   413     return KErrNone;    
       
   414 	}
       
   415 	
       
   416 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SoapVersionL( TTestResult& aResult )
       
   417 	{
       
   418 	SetupL();
       
   419 	TSOAPVersion var = ESOAP11;
       
   420 	_LIT8(KEnvelopeString, "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   421     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   422     CleanupStack::PushL(pEnvelope);
       
   423     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   424     CleanupStack::PushL(pAsXml);
       
   425     
       
   426     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   427     CleanupStack::PopAndDestroy(pAsXml);
       
   428     
       
   429     TL(var == pEnvelope->SoapVersion());
       
   430     CleanupStack::PopAndDestroy(pEnvelope);
       
   431     Teardown();
       
   432     return KErrNone;    
       
   433 	}
       
   434 	
       
   435 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetContextL( TTestResult& aResult )
       
   436 	{
       
   437 	SetupL();
       
   438     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   439     CleanupStack::PushL(pEnvelope);
       
   440     MSenMessageContext* mContext = NULL;
       
   441    
       
   442 	CSenXmlProperties* prop = CSenXmlProperties::NewL();
       
   443 //	CSenMessageContext* mContext1 = CSenMessageContext::NewL(SenContext::EOutgoing, prop);
       
   444     TL(KErrArgument == pEnvelope->SetContext(mContext));
       
   445   //  TL(KErrNone == pEnvelope->SetContext(mContext1));
       
   446     TL(mContext == pEnvelope->Context());
       
   447     CleanupStack::PopAndDestroy(pEnvelope);
       
   448 //    delete mContext1;
       
   449     Teardown();
       
   450     return KErrNone;    
       
   451 	}
       
   452 	
       
   453 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_ContextL( TTestResult& aResult )
       
   454 	{
       
   455 	SetupL();
       
   456 	TTestResult Result;	
       
   457 	CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetContextL(Result);
       
   458     Teardown();
       
   459     return KErrNone;    
       
   460 	}
       
   461 
       
   462 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetPropertiesL( TTestResult& aResult )
       
   463 	{
       
   464 	SetupL();
       
   465     CSenXmlProperties* prop = CSenXmlProperties::NewL();
       
   466     CleanupStack::PushL(prop);
       
   467     
       
   468     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   469     
       
   470     CleanupStack::Pop();
       
   471     CleanupStack::PushL(pEnvelope);
       
   472     
       
   473     
       
   474     TL(KErrNone == pEnvelope->SetProperties(prop));
       
   475     CleanupStack::PopAndDestroy();
       
   476     
       
   477     
       
   478     Teardown();
       
   479     return KErrNone;    
       
   480 	}
       
   481 	
       
   482 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_PropertiesL( TTestResult& aResult )
       
   483 	{
       
   484 	SetupL();
       
   485     CSenXmlProperties* prop = CSenXmlProperties::NewL();
       
   486     CleanupStack::PushL(prop);
       
   487     
       
   488     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   489     
       
   490     CleanupStack::Pop();
       
   491     CleanupStack::PushL(pEnvelope);
       
   492     
       
   493     
       
   494     TL(KErrNone == pEnvelope->SetProperties(prop));
       
   495     TL(prop == pEnvelope->Properties());
       
   496     CleanupStack::PopAndDestroy();
       
   497     
       
   498     
       
   499     Teardown();
       
   500     return KErrNone;    
       
   501 	}
       
   502 
       
   503 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_IsSafeToCastL( TTestResult& aResult )
       
   504 	{
       
   505 	SetupL();
       
   506 	MSenMessage::TClass var = MSenMessage::ESoapEnvelope2;
       
   507 	TBool retVal = ETrue;
       
   508     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   509     
       
   510     CleanupStack::PushL(pEnvelope);
       
   511     
       
   512     
       
   513     retVal == pEnvelope->IsSafeToCast(var);
       
   514 
       
   515 
       
   516     if(retVal == EFalse)
       
   517     	return KErrArgument;
       
   518     
       
   519     CleanupStack::PopAndDestroy();
       
   520     Teardown();
       
   521     return KErrNone;    
       
   522 	}
       
   523 	
       
   524 
       
   525 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetBodyLL( TTestResult& aResult )
       
   526     {
       
   527 	SetupL();
       
   528     _LIT8(KBodyContentString, "<Test>Content</Test>");
       
   529 
       
   530     _LIT8(KEnvelopeString, "<S:Envelope \
       
   531 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   532 <S:Body><Test>Content</Test></S:Body>\
       
   533 </S:Envelope>");
       
   534 
       
   535     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   536     CleanupStack::PushL(pEnvelope);
       
   537     pEnvelope->SetBodyL(KBodyContentString);
       
   538     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   539     CleanupStack::PushL(pAsXml);
       
   540 
       
   541     if(!( *pAsXml == KEnvelopeString )) return KErrArgument;
       
   542 
       
   543     CleanupStack::PopAndDestroy(pAsXml);
       
   544     CleanupStack::PopAndDestroy(pEnvelope);
       
   545     Teardown();
       
   546     return KErrNone;    
       
   547 	}
       
   548 
       
   549 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetBodyL_1L( TTestResult& aResult )
       
   550     {
       
   551 	SetupL();
       
   552     _LIT8(KBodyElementName,   "BodyElement");
       
   553     _LIT8(KBodyContent,       "BodyContent");
       
   554     _LIT8(KBodyElementName2,  "BodyElement2");
       
   555     _LIT8(KBodyContent2,      "BodyContent2");
       
   556 
       
   557     _LIT8(KEnvelopeString, "<S:Envelope \
       
   558 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   559 <S:Body><BodyElement>BodyContent</BodyElement></S:Body>\
       
   560 </S:Envelope>");
       
   561 
       
   562     _LIT8(KEnvelopeString2, "<S:Envelope \
       
   563 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   564 <S:Body><BodyElement2>BodyContent2</BodyElement2></S:Body>\
       
   565 </S:Envelope>");
       
   566 
       
   567     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   568     CleanupStack::PushL(pEnvelope);
       
   569 
       
   570     RSenDocument document = RSenDocument::NewLC();
       
   571     TXmlEngElement bodyElement = document.CreateDocumentElementL(KBodyElementName());
       
   572     bodyElement.AddTextL(KBodyContent());
       
   573     pEnvelope->SetBodyL(bodyElement);
       
   574 
       
   575     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   576     CleanupStack::PushL(pAsXml);
       
   577     if(!( *pAsXml == KEnvelopeString )) KErrArgument;
       
   578     CleanupStack::PopAndDestroy(pAsXml);
       
   579 
       
   580     TXmlEngElement bodyElement2 = document.CreateDocumentElementL(KBodyElementName2());
       
   581     bodyElement2.AddTextL(KBodyContent2());
       
   582     pEnvelope->SetBodyL(bodyElement2);
       
   583 
       
   584     pAsXml = pEnvelope->AsXmlL();
       
   585     CleanupStack::PushL(pAsXml);
       
   586     if(!( *pAsXml == KEnvelopeString2 )) return KErrArgument;
       
   587     CleanupStack::PopAndDestroy(pAsXml);
       
   588 
       
   589     CleanupStack::PopAndDestroy(1); // document
       
   590     CleanupStack::PopAndDestroy(pEnvelope);
       
   591     Teardown();
       
   592     return KErrNone;    
       
   593 	}
       
   594 
       
   595 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_BodyLL( TTestResult& aResult )
       
   596     {
       
   597 	SetupL();
       
   598     _LIT8(KBodyContentString, "Test");
       
   599     _LIT8(KBodyString, "<S:Body>Test</S:Body>");
       
   600 
       
   601     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   602     CleanupStack::PushL(pEnvelope);
       
   603     pEnvelope->SetBodyL(KBodyContentString);
       
   604 
       
   605     TXmlEngElement element = pEnvelope->BodyL();
       
   606     RSenDocument document = pEnvelope->AsDocumentL();
       
   607 
       
   608     TXmlEngSerializationOptions options;
       
   609     // Omit following declarations from the beginning of XML Document:
       
   610     // <?xml version=\"1.0\...
       
   611     //   encoding="..."
       
   612     //   standalone="..."
       
   613     // ?>
       
   614     options.iOptions = options.iOptions |
       
   615                        TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
   616     RBuf8 asXml;
       
   617     CleanupClosePushL(asXml);
       
   618     document.SaveL(asXml, element, options);
       
   619 
       
   620     // Serialized body should contain only body as XML.
       
   621     if(!( asXml == KBodyString )) return KErrArgument;
       
   622 
       
   623     CleanupStack::PopAndDestroy(&asXml);
       
   624 
       
   625     CleanupStack::PopAndDestroy(pEnvelope);
       
   626     Teardown();
       
   627     return KErrNone;    
       
   628 	}
       
   629 
       
   630 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_HeaderLL( TTestResult& aResult )
       
   631     {
       
   632 	SetupL();
       
   633     _LIT8(KHeaderString, "<S:Header/>");
       
   634 
       
   635     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   636     CleanupStack::PushL(pEnvelope);
       
   637 
       
   638     TXmlEngElement element = pEnvelope->HeaderL();
       
   639 
       
   640     RSenDocument document = pEnvelope->AsDocumentL();
       
   641 
       
   642     TXmlEngSerializationOptions options;
       
   643     // Omit following declarations from the beginning of XML Document:
       
   644     // <?xml version=\"1.0\...
       
   645     //   encoding="..."
       
   646     //   standalone="..."
       
   647     // ?>
       
   648     options.iOptions = options.iOptions |
       
   649                        TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
   650     RBuf8 asXml;
       
   651     CleanupClosePushL(asXml);
       
   652     document.SaveL(asXml, element, options);
       
   653 
       
   654     // Serialized header should contain only header as XML.
       
   655     if(!( asXml == KHeaderString )) return KErrArgument;
       
   656 
       
   657     CleanupStack::PopAndDestroy(&asXml);
       
   658 
       
   659     CleanupStack::PopAndDestroy(pEnvelope);
       
   660     Teardown();
       
   661     return KErrNone;    
       
   662 	}
       
   663 
       
   664 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_AddHeaderLL( TTestResult& aResult )
       
   665     {
       
   666 	SetupL();
       
   667     _LIT8(KHeaderElementName,   "HeaderElement");
       
   668     _LIT8(KHeaderContent,       "HeaderContent");
       
   669     _LIT8(KHeaderElementName2,  "HeaderElement2");
       
   670     _LIT8(KHeaderContent2,      "HeaderContent2");
       
   671 
       
   672     _LIT8(KEnvelope,            "<S:Envelope \
       
   673 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   674 <S:Header>\
       
   675 <HeaderElement>HeaderContent</HeaderElement>\
       
   676 </S:Header>\
       
   677 <S:Body/></S:Envelope>");
       
   678 
       
   679     _LIT8(KEnvelope2,            "<S:Envelope \
       
   680 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   681 <S:Header>\
       
   682 <HeaderElement>HeaderContent</HeaderElement>\
       
   683 <HeaderElement2>HeaderContent2</HeaderElement2>\
       
   684 </S:Header>\
       
   685 <S:Body/></S:Envelope>");
       
   686 
       
   687     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   688     CleanupStack::PushL(pEnvelope);
       
   689 
       
   690     RSenDocument document = RSenDocument::NewLC();
       
   691     TXmlEngElement headerElement = document.CreateDocumentElementL(KHeaderElementName());
       
   692     headerElement.AddTextL(KHeaderContent());
       
   693     pEnvelope->AddHeaderL(headerElement);
       
   694 
       
   695     HBufC8* pAsXml = pEnvelope->AsXmlL();
       
   696     CleanupStack::PushL(pAsXml);
       
   697     if(!( *pAsXml == KEnvelope )) return KErrArgument;
       
   698     CleanupStack::PopAndDestroy(pAsXml);
       
   699 
       
   700     TXmlEngElement headerElement2 = document.CreateDocumentElementL(KHeaderElementName2());
       
   701     headerElement2.AddTextL(KHeaderContent2());
       
   702     pEnvelope->AddHeaderL(headerElement2);
       
   703 
       
   704     pAsXml = pEnvelope->AsXmlL();
       
   705     CleanupStack::PushL(pAsXml);
       
   706     if(!( *pAsXml == KEnvelope2 )) return KErrArgument;
       
   707     CleanupStack::PopAndDestroy(pAsXml);
       
   708 
       
   709     CleanupStack::PopAndDestroy(1); // document
       
   710     CleanupStack::PopAndDestroy(pEnvelope);
       
   711     Teardown();
       
   712     return KErrNone;    
       
   713 	}
       
   714 
       
   715 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_BodyAsStringLL( TTestResult& aResult )
       
   716     {
       
   717 	SetupL();
       
   718     _LIT8(KBodyElementName,    "BodyElement");
       
   719     _LIT8(KBodyElementContent, "BodyElementContent");
       
   720     _LIT8(KBodyContent,        "BodyContent");
       
   721 
       
   722     _LIT8(KBodyAsString1, "<S:Body xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">BodyContent</S:Body>");
       
   723     _LIT8(KBodyAsString2, "<S:Body xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   724 <BodyElement>BodyElementContent</BodyElement>\
       
   725 </S:Body>");
       
   726 
       
   727     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   728     CleanupStack::PushL(pEnvelope);
       
   729 
       
   730     RSenDocument document = RSenDocument::NewLC();
       
   731     TXmlEngElement bodyElement = document.CreateDocumentElementL(KBodyElementName());
       
   732     bodyElement.AddTextL(KBodyElementContent());
       
   733 
       
   734     pEnvelope->SetBodyL(KBodyContent);
       
   735 
       
   736     // If Body element does not contain any elements
       
   737     // whole Body element is returned (and detached
       
   738     // => needed namespace declarations are moved into
       
   739     //    Body)
       
   740     HBufC8* pAsXml = pEnvelope->BodyAsStringL();
       
   741     CleanupStack::PushL(pAsXml);
       
   742     if(!( *pAsXml == KBodyAsString1 )) return KErrArgument;
       
   743     CleanupStack::PopAndDestroy(pAsXml);
       
   744 
       
   745     pEnvelope->SetBodyL(bodyElement);
       
   746 
       
   747     // If Body element contains element(s)
       
   748     // only first element (and all its child elements)
       
   749     // from Body element is returned and detached
       
   750     // (not Body element).
       
   751     pAsXml = pEnvelope->BodyAsStringL();
       
   752     CleanupStack::PushL(pAsXml);
       
   753     if(!( *pAsXml == KBodyAsString2 )) return KErrArgument;
       
   754     CleanupStack::PopAndDestroy(pAsXml);
       
   755 
       
   756     CleanupStack::PopAndDestroy(1); // document
       
   757     CleanupStack::PopAndDestroy(pEnvelope);
       
   758     Teardown();
       
   759     return KErrNone;    
       
   760 	}
       
   761 	
       
   762 
       
   763 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_IsFaultL( TTestResult& aResult )
       
   764     {
       
   765 	SetupL();
       
   766     _LIT8(KFaultElementName,  "Fault");
       
   767     _LIT8(KFaultContent,      "FaultContent");
       
   768     _LIT8(KFaultInputString,  "<SOAP:Envelope \
       
   769 xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   770 <SOAP:Header>\
       
   771 <HeaderElement>HeaderContent</HeaderElement>\
       
   772 </SOAP:Header>\
       
   773 <SOAP:Body><SOAP:Fault>FaultContent</SOAP:Fault></SOAP:Body>\
       
   774 </SOAP:Envelope>");
       
   775 
       
   776     // 1. Test that IsFault return EFalse by default
       
   777     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   778     CleanupStack::PushL(pEnvelope);
       
   779 
       
   780     //if(!( pEnvelope->IsFault() == EFalse )) return KErrArgument;
       
   781     TL( pEnvelope->IsFault() == EFalse )
       
   782 
       
   783     // 2. Test that IsFault returns ETrue when fault is added
       
   784     //    using SetBodyL method
       
   785     RSenDocument document = RSenDocument::NewLC();
       
   786     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementName(),
       
   787                                                             pEnvelope->NsUri());
       
   788     faultElement.AddTextL(KFaultContent());
       
   789     pEnvelope->SetBodyL(faultElement);
       
   790 
       
   791     if(!( pEnvelope->IsFault())) return KErrArgument;
       
   792 
       
   793     CleanupStack::PopAndDestroy(1); // document
       
   794     CleanupStack::PopAndDestroy(pEnvelope);
       
   795 
       
   796     // 3. Test that IsFault returns ETrue if fault is added
       
   797     //    when Envelope is parsed
       
   798 
       
   799     CSenParser* pParser = CSenParser::NewLC();
       
   800     pEnvelope = CSenSoapEnvelope2::NewL();
       
   801     CleanupStack::PushL(pEnvelope);
       
   802 
       
   803 	pParser->ParseL(KFaultInputString, *pEnvelope);
       
   804 	if(!( pEnvelope->IsFault())) return KErrArgument;
       
   805 
       
   806     CleanupStack::PopAndDestroy(pEnvelope);
       
   807     CleanupStack::PopAndDestroy(pParser);
       
   808     Teardown();
       
   809     return KErrNone;    
       
   810 	}
       
   811 
       
   812 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_DetachFaultLL( TTestResult& aResult )
       
   813     {
       
   814 	SetupL();
       
   815     _LIT8(KFaultElementName,  "Fault");
       
   816     _LIT8(KFaultContent,      "FaultContent");
       
   817     _LIT8(KFaultElement,       "<S:Fault xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">FaultContent</S:Fault>");
       
   818 
       
   819     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   820     CleanupStack::PushL(pEnvelope);
       
   821 
       
   822     TXmlEngElement body = pEnvelope->BodyL();
       
   823     TXmlEngElement faultElement = body.AddNewElementWithNsL(KFaultElementName(),
       
   824                                                       pEnvelope->NsUri());
       
   825     faultElement.AddTextL(KFaultContent());
       
   826 
       
   827     CSenSoapFault2* pFault = pEnvelope->DetachFaultL();
       
   828     CleanupStack::PushL(pFault);
       
   829 
       
   830     HBufC8* pAsXml = pFault->AsXmlL();
       
   831     CleanupStack::PushL(pAsXml);
       
   832     if(!( *pAsXml == KFaultElement )) return KErrArgument;
       
   833     CleanupStack::PopAndDestroy(pAsXml);
       
   834 
       
   835     CleanupStack::PopAndDestroy(pFault);
       
   836 
       
   837     CleanupStack::PopAndDestroy(pEnvelope);
       
   838     Teardown();
       
   839     return KErrNone;    
       
   840 	}
       
   841 	
       
   842 	
       
   843 
       
   844 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_FaultLL( TTestResult& aResult )
       
   845     {
       
   846 	SetupL();
       
   847     _LIT8(KFaultElementName,  "Fault");
       
   848     _LIT8(KFaultContent,      "FaultContent");
       
   849     _LIT8(KFaultElement,       "<S:Fault>FaultContent</S:Fault>");
       
   850 
       
   851     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   852     CleanupStack::PushL(pEnvelope);
       
   853 
       
   854     TXmlEngElement body = pEnvelope->BodyL();
       
   855     TXmlEngElement faultElement = body.AddNewElementWithNsL(KFaultElementName(),
       
   856                                                             pEnvelope->NsUri());
       
   857     faultElement.AddTextL(KFaultContent());
       
   858 
       
   859     CSenSoapFault2* pFault = pEnvelope->FaultL();
       
   860     CleanupStack::PushL(pFault);
       
   861 
       
   862     HBufC8* pAsXml = pFault->AsXmlL();
       
   863     CleanupStack::PushL(pAsXml);
       
   864     if(!( *pAsXml == KFaultElement )) return KErrArgument;
       
   865     CleanupStack::PopAndDestroy(pAsXml);
       
   866 
       
   867     CleanupStack::PopAndDestroy(pFault);
       
   868 
       
   869     CleanupStack::PopAndDestroy(pEnvelope);
       
   870     Teardown();
       
   871     return KErrNone;    
       
   872 	}
       
   873 
       
   874 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SetSoapActionLL( TTestResult& aResult )
       
   875     {
       
   876 	SetupL();
       
   877     _LIT8(KSoapActionValue,         "SoapActionValue");
       
   878     _LIT8(KSoapActionValueInQuotes, "\"SoapActionValue\"");
       
   879 
       
   880     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   881     CleanupStack::PushL(pEnvelope);
       
   882 
       
   883     TPtrC8 retVal = pEnvelope->SetSoapActionL(KSoapActionValue);
       
   884     if(!( retVal == KSoapActionValueInQuotes )) return KErrArgument;
       
   885 
       
   886     TPtrC8 soapAction = pEnvelope->SoapAction();
       
   887     if(!( soapAction == KSoapActionValueInQuotes )) return KErrArgument;
       
   888 
       
   889     TPtrC8 retVal2 = pEnvelope->SetSoapActionL(KSoapActionValueInQuotes);
       
   890     if(!( retVal2 == KSoapActionValueInQuotes )) return KErrArgument;
       
   891 
       
   892     TPtrC8 soapAction2 = pEnvelope->SoapAction();
       
   893     if(!( soapAction2 == KSoapActionValueInQuotes )) return KErrArgument;
       
   894 
       
   895     CleanupStack::PopAndDestroy(pEnvelope);
       
   896     Teardown();
       
   897     return KErrNone;    
       
   898 	}
       
   899 
       
   900 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_SoapActionL( TTestResult& aResult )
       
   901     {
       
   902 	SetupL();
       
   903     _LIT8(KSoapActionValue,         "SoapActionValue");
       
   904     _LIT8(KSoapActionValueInQuotes, "\"SoapActionValue\"");
       
   905 
       
   906     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   907     CleanupStack::PushL(pEnvelope);
       
   908 
       
   909     TPtrC8 retVal = pEnvelope->SetSoapActionL(KSoapActionValue);
       
   910     if(!( retVal == KSoapActionValueInQuotes )) return KErrArgument;
       
   911 
       
   912     TPtrC8 soapAction = pEnvelope->SoapAction();
       
   913     if(!( soapAction == KSoapActionValueInQuotes )) return KErrArgument;
       
   914 
       
   915     TPtrC8 retVal2 = pEnvelope->SetSoapActionL(KSoapActionValueInQuotes) ;
       
   916     if(!( retVal2 == KSoapActionValueInQuotes )) return KErrArgument;
       
   917 
       
   918     TPtrC8 soapAction2 = pEnvelope->SoapAction();
       
   919     if(!( soapAction2 == KSoapActionValueInQuotes )) return KErrArgument;
       
   920 
       
   921     CleanupStack::PopAndDestroy(pEnvelope);
       
   922     Teardown();
       
   923     return KErrNone;    
       
   924 	}
       
   925 
       
   926 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_HasHeaderL( TTestResult& aResult )
       
   927     {
       
   928 	SetupL();
       
   929     _LIT8(KHeaderElementName,   "HeaderElement");
       
   930     _LIT8(KHeaderContent,       "HeaderContent");
       
   931 
       
   932     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   933     CleanupStack::PushL(pEnvelope);
       
   934 
       
   935     if(!( pEnvelope->HasHeader() == EFalse )) return KErrArgument;
       
   936 
       
   937     RSenDocument document = RSenDocument::NewLC();
       
   938     TXmlEngElement headerElement = document.CreateDocumentElementL(KHeaderElementName());
       
   939     headerElement.AddTextL(KHeaderContent());
       
   940     pEnvelope->AddHeaderL(headerElement);
       
   941 
       
   942     if(!( pEnvelope->HasHeader())) return KErrArgument;
       
   943 
       
   944     CleanupStack::PopAndDestroy(1); // document
       
   945     CleanupStack::PopAndDestroy(pEnvelope);
       
   946     Teardown();
       
   947     return KErrNone;    
       
   948 	}
       
   949 
       
   950 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_HasBodyL( TTestResult& aResult )
       
   951     {
       
   952 	SetupL();
       
   953     _LIT8(KBodyElementName,    "BodyElement");
       
   954     _LIT8(KBodyElementContent, "BodyElementContent");
       
   955 
       
   956     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
   957     CleanupStack::PushL(pEnvelope);
       
   958 
       
   959     if(!( pEnvelope->HasBody() == EFalse )) return KErrArgument;
       
   960 
       
   961     RSenDocument document = RSenDocument::NewLC();
       
   962     TXmlEngElement bodyElement = document.CreateDocumentElementL(KBodyElementName());
       
   963     bodyElement.AddTextL(KBodyElementContent());
       
   964 
       
   965     pEnvelope->SetBodyL(bodyElement);
       
   966 
       
   967     if(!( pEnvelope->HasBody())) return KErrArgument;
       
   968 
       
   969     CleanupStack::PopAndDestroy(1); // document
       
   970     CleanupStack::PopAndDestroy(pEnvelope);
       
   971     Teardown();
       
   972     return KErrNone;    
       
   973 	}
       
   974 
       
   975 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_Parse1L( TTestResult& aResult )
       
   976     {
       
   977 	SetupL();
       
   978     _LIT8(KInputString,             "<S:Envelope \
       
   979 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
   980 <S:Header>\
       
   981 <sb:Correlation xmlns:sb=\"urn:liberty:sb:2003-08\" \
       
   982 messageID=\"URN:UUID:860949DC-134D-A989-E328-2FD7F20E31CE\" timestamp=\"2006-06-01T14:53:19Z\"/>\
       
   983 <wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/>\
       
   984 </S:Header>\
       
   985 <S:Body>\
       
   986 <sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"ANONYMOUS PLAIN CRAM-MD5\" authzID=\"testuser1\"/>\
       
   987 </S:Body>\
       
   988 </S:Envelope>");
       
   989     _LIT8(KBodyAsString,     "\
       
   990 <S:Body xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:sa=\"urn:liberty:sa:2004-04\">\
       
   991 <sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"ANONYMOUS PLAIN CRAM-MD5\" authzID=\"testuser1\"/>\
       
   992 </S:Body>");
       
   993 
       
   994     _LIT8(KEmptyBodyAsString,       "<S:Body/>");
       
   995 
       
   996     _LIT8(KEmptyBodyWithNsAsString, "<S:Body xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
   997 
       
   998     CSenParser* pParser = CSenParser::NewLC();
       
   999     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
  1000     CleanupStack::PushL(pEnvelope);
       
  1001 
       
  1002 	pParser->ParseL(KInputString, *pEnvelope);
       
  1003 
       
  1004 	// 1) Check that parsed SoapEnvelope can be
       
  1005 	//    serialized correctly
       
  1006 	HBufC8* pAsXml = pEnvelope->AsXmlL();
       
  1007 	CleanupStack::PushL(pAsXml);
       
  1008 	if(!( *pAsXml == KInputString )) return KErrArgument;
       
  1009 	CleanupStack::PopAndDestroy(pAsXml);
       
  1010 
       
  1011 	// 2) Check that body can be detached from SoapEnvelope
       
  1012 	//    correctly.
       
  1013 	// Note: Following "BodyAsStringL()" call will detach
       
  1014 	//       Body from SoapEnvelope
       
  1015 	HBufC8* pBodyAsString = pEnvelope->BodyAsStringL();
       
  1016 	CleanupStack::PushL(pBodyAsString);
       
  1017 	if(!( *pBodyAsString == KBodyAsString )) return KErrArgument;
       
  1018 	CleanupStack::PopAndDestroy(pBodyAsString);
       
  1019 
       
  1020 	// 3) Check that body can be detached from SoapEnvelope
       
  1021 	//    twice
       
  1022 	//    In this case body does not have child elements.
       
  1023 	//    => Empty body should be returned.
       
  1024 	//       Note: Empty body should contain namespace
       
  1025 	//             declaration because body is detached
       
  1026 	pBodyAsString = pEnvelope->BodyAsStringL();
       
  1027 	CleanupStack::PushL(pBodyAsString);
       
  1028 	if(!( *pBodyAsString == KEmptyBodyWithNsAsString )) return KErrArgument;
       
  1029 	CleanupStack::PopAndDestroy(pBodyAsString);
       
  1030 
       
  1031 	// 4) Check that body was detached from SoapEnvelope
       
  1032 	//    correctly
       
  1033 	//    => Getting body again should result empty body to be returned.
       
  1034 	TXmlEngElement bodyElement = pEnvelope->BodyL();
       
  1035 	RSenDocument document = pEnvelope->AsDocumentL();
       
  1036 
       
  1037     TUint optionFlags = 0;
       
  1038     // Omit following declarations from the beginning of XML Document:
       
  1039     // <?xml version=\"1.0\...
       
  1040     //   encoding="..."
       
  1041     //   standalone="..."
       
  1042     // ?>
       
  1043     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  1044 
       
  1045     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  1046     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  1047 
       
  1048     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  1049     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  1050 
       
  1051     TXmlEngSerializationOptions options(optionFlags);
       
  1052 
       
  1053     RBuf8 asXml;
       
  1054     CleanupClosePushL(asXml);
       
  1055     document.SaveL(asXml, bodyElement, options);
       
  1056 
       
  1057     // Serielized body should be empty because "BodyAsStringL()"
       
  1058     // previously detached body.
       
  1059     if(!( asXml == KEmptyBodyAsString )) return KErrArgument;
       
  1060 
       
  1061     CleanupStack::PopAndDestroy(&asXml);
       
  1062 
       
  1063     CleanupStack::PopAndDestroy(pEnvelope);
       
  1064     CleanupStack::PopAndDestroy(pParser);
       
  1065     Teardown();
       
  1066     return KErrNone;    
       
  1067 	}
       
  1068 
       
  1069 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_Parse2L( TTestResult& aResult )
       
  1070     {
       
  1071 	SetupL();
       
  1072     _LIT8(KInputString,         "<S:Envelope \
       
  1073 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  1074 <S:Header>\
       
  1075 <sb:Correlation xmlns:sb=\"urn:liberty:sb:2003-08\" \
       
  1076 messageID=\"URN:UUID:860949DC-134D-A989-E328-2FD7F20E31CE\" timestamp=\"2006-06-01T14:53:19Z\"/>\
       
  1077 <wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/>\
       
  1078 </S:Header>\
       
  1079 <S:Body>\
       
  1080 <sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"ANONYMOUS PLAIN CRAM-MD5\" authzID=\"testuser1\"/>\
       
  1081 </S:Body>\
       
  1082 </S:Envelope>");
       
  1083 
       
  1084     _LIT8(KWholeBodyAsString,   "<S:Body>\
       
  1085 <sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"ANONYMOUS PLAIN CRAM-MD5\" authzID=\"testuser1\"/>\
       
  1086 </S:Body>");
       
  1087 
       
  1088     _LIT8(KWholeHeaderAsString, "<S:Header>\
       
  1089 <sb:Correlation xmlns:sb=\"urn:liberty:sb:2003-08\" \
       
  1090 messageID=\"URN:UUID:860949DC-134D-A989-E328-2FD7F20E31CE\" timestamp=\"2006-06-01T14:53:19Z\"/>\
       
  1091 <wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/>\
       
  1092 </S:Header>");
       
  1093 
       
  1094     CSenParser* pParser = CSenParser::NewLC();
       
  1095     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
  1096     CleanupStack::PushL(pEnvelope);
       
  1097 
       
  1098 	pParser->ParseL(KInputString, *pEnvelope);
       
  1099 
       
  1100 	// 1) Check that parsed SoapEnvelope can be
       
  1101 	//    serialized correctly
       
  1102 	HBufC8* pAsXml = pEnvelope->AsXmlL();
       
  1103 	CleanupStack::PushL(pAsXml);
       
  1104 	if(!( *pAsXml == KInputString )) return KErrArgument;
       
  1105 	CleanupStack::PopAndDestroy(pAsXml);
       
  1106 
       
  1107 	// 2) Check that body can be got from SoapEnvelope
       
  1108 	//    correctly
       
  1109 	// Note: Body won't be detached. Only reference for
       
  1110 	//       body TXmlEngElement inside SoapEnvelope is returned.
       
  1111 	TXmlEngElement bodyElement = pEnvelope->BodyL();
       
  1112 	RSenDocument document = pEnvelope->AsDocumentL();
       
  1113 
       
  1114     TUint optionFlags = 0;
       
  1115     // Omit following declarations from the beginning of XML Document:
       
  1116     // <?xml version=\"1.0\...
       
  1117     //   encoding="..."
       
  1118     //   standalone="..."
       
  1119     // ?>
       
  1120     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  1121 
       
  1122     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  1123     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  1124 
       
  1125     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  1126     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  1127 
       
  1128     TXmlEngSerializationOptions options(optionFlags);
       
  1129 
       
  1130     RBuf8 asXml;
       
  1131     CleanupClosePushL(asXml);
       
  1132     document.SaveL(asXml, bodyElement, options);
       
  1133 
       
  1134     // Serielized body should be in exactly the same form
       
  1135     // as in original SoapEnvelope
       
  1136     if(!( asXml == KWholeBodyAsString )) return KErrArgument;
       
  1137 
       
  1138     CleanupStack::PopAndDestroy(&asXml);
       
  1139 
       
  1140     // 3) Check that header TXmlEngElement can be got from SoapEnvelope
       
  1141 	//    correctly
       
  1142     TXmlEngElement headerElement = pEnvelope->HeaderL();
       
  1143 
       
  1144     RBuf8 headerAsXml;
       
  1145     CleanupClosePushL(headerAsXml);
       
  1146     document.SaveL(headerAsXml, headerElement, options);
       
  1147 
       
  1148     // Serielized header should be in exactly the same form
       
  1149     // as in original SoapEnvelope
       
  1150     if(!( headerAsXml == KWholeHeaderAsString )) return KErrArgument;
       
  1151 
       
  1152     CleanupStack::PopAndDestroy(&headerAsXml);
       
  1153 
       
  1154     CleanupStack::PopAndDestroy(pEnvelope);
       
  1155     CleanupStack::PopAndDestroy(pParser);
       
  1156     Teardown();
       
  1157     return KErrNone;    
       
  1158 	}
       
  1159 
       
  1160 TInt CNewSoapClassesBCTest::MT_CSenSoapEnvelope2_Parse3L( TTestResult& aResult )
       
  1161     {
       
  1162 	SetupL();
       
  1163     _LIT8(KInputString,         "<S:Envelope \
       
  1164 xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\" \
       
  1165 xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\">\
       
  1166 <S:Header>\
       
  1167 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/>\
       
  1168 <wsa:MessageID>urn:uuid:7837d733-b9f8-3eb1-5c3f-7a509797e6b2</wsa:MessageID>\
       
  1169 <wsa:To>http://schemas.live.com/mws/2005/08/spaces</wsa:To>\
       
  1170 <wsa:Action>http://schemas.live.com/mws/2005/08/spaces/Post</wsa:Action>\
       
  1171 <wsa:ReplyTo><wsa:Address>id:7bbd5c5b-7857-44c4-b609-53498d0cab3b</wsa:Address></wsa:ReplyTo>\
       
  1172 </S:Header>\
       
  1173 <S:Body>\
       
  1174 <PostRequest xmlns=\"http://schemas.live.com/mws/2005/08/spaces\">\
       
  1175 <Item><Filename>sample1.wav</Filename><ItemType>8</ItemType><Image><Data></Data></Image></Item>\
       
  1176 </PostRequest>\
       
  1177 </S:Body>\
       
  1178 </S:Envelope>");
       
  1179 
       
  1180     _LIT8(KOuterXml,            "<S:Body>\
       
  1181 <PostRequest xmlns=\"http://schemas.live.com/mws/2005/08/spaces\">\
       
  1182 <Item><Filename>sample1.wav</Filename><ItemType>8</ItemType><Image><Data/></Image></Item>\
       
  1183 </PostRequest>\
       
  1184 </S:Body>");
       
  1185 
       
  1186     CSenParser* pParser = CSenParser::NewL();
       
  1187     CleanupStack::PushL(pParser);
       
  1188 
       
  1189     CSenSoapEnvelope2* pEnvelope = CSenSoapEnvelope2::NewL();
       
  1190     CleanupStack::PushL(pEnvelope);
       
  1191 
       
  1192     pParser->ParseL(KInputString, *pEnvelope);
       
  1193     TXmlEngElement element = pEnvelope->BodyL();
       
  1194 
       
  1195     RBuf8 outerXml;
       
  1196     CleanupClosePushL(outerXml);
       
  1197     element.OuterXmlL(outerXml);
       
  1198 
       
  1199     if(!( outerXml == KOuterXml )) return KErrArgument;
       
  1200 
       
  1201     CleanupStack::PopAndDestroy(&outerXml);
       
  1202     CleanupStack::PopAndDestroy(pEnvelope);
       
  1203     CleanupStack::PopAndDestroy(pParser);
       
  1204     Teardown();
       
  1205     return KErrNone;    
       
  1206 	}
       
  1207 
       
  1208 
       
  1209 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_NewLL( TTestResult& aResult )
       
  1210     {
       
  1211 	SetupL();
       
  1212     _LIT8(KFaultElementName,    "Fault");
       
  1213     _LIT8(KFaultElementContent, "FaultContent");
       
  1214     _LIT8(KFaultElement,        "<Fault>FaultContent</Fault>");
       
  1215 
       
  1216     RSenDocument document = RSenDocument::NewLC();
       
  1217     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementName());
       
  1218     faultElement.AddTextL(KFaultElementContent());
       
  1219 
       
  1220     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement);
       
  1221     CleanupStack::PopAndDestroy(1); // document
       
  1222     CleanupStack::PushL(pSoapFault);
       
  1223 
       
  1224     HBufC8* pAsXml = pSoapFault->AsXmlL();
       
  1225     CleanupStack::PushL(pAsXml);
       
  1226     if(!( *pAsXml == KFaultElement )) return KErrArgument;
       
  1227     CleanupStack::PopAndDestroy(pAsXml);
       
  1228 
       
  1229     CleanupStack::PopAndDestroy(pSoapFault);
       
  1230     Teardown();
       
  1231     return KErrNone;    
       
  1232 	}
       
  1233 
       
  1234 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_NewL_1L( TTestResult& aResult )
       
  1235     {
       
  1236 	SetupL();
       
  1237     _LIT8(KFaultElementName,    "Fault");
       
  1238     _LIT8(KFaultElementContent, "FaultContent");
       
  1239     _LIT8(KFaultElement,        "<Fault>FaultContent</Fault>");
       
  1240 
       
  1241     RSenDocument document = RSenDocument::NewLC();
       
  1242     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementName());
       
  1243     faultElement.AddTextL(KFaultElementContent());
       
  1244 
       
  1245     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement, document);
       
  1246     CleanupStack::PopAndDestroy(1); // document
       
  1247     CleanupStack::PushL(pSoapFault);
       
  1248 
       
  1249     HBufC8* pAsXml = pSoapFault->AsXmlL();
       
  1250     CleanupStack::PushL(pAsXml);
       
  1251     if(!( *pAsXml == KFaultElement )) return KErrArgument;
       
  1252     CleanupStack::PopAndDestroy(pAsXml);
       
  1253 
       
  1254     CleanupStack::PopAndDestroy(pSoapFault);
       
  1255     Teardown();
       
  1256     return KErrNone;    
       
  1257 	}
       
  1258 
       
  1259 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_NewL_2L( TTestResult& aResult )
       
  1260     {
       
  1261 	SetupL();
       
  1262     _LIT8(KParentName,          "Parent");
       
  1263 
       
  1264     _LIT8(KAttributeNsUri,      "nsuri");
       
  1265     _LIT8(KAttributeNsPrefix,   "pr");
       
  1266     _LIT8(KAttributeLocalName,  "AttrName");
       
  1267     _LIT8(KAttributeValue,      "Value");
       
  1268 
       
  1269     _LIT8(KFaultNsUri,          "http://schemas.xmlsoap.org/soap/envelope/");
       
  1270     _LIT8(KFaultNsPrefix,       "S");
       
  1271     _LIT8(KFaultLocalName,      "Fault");
       
  1272 
       
  1273     _LIT8(KFaultElement,        "<S:Fault \
       
  1274 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\" \
       
  1275 xmlns:pr=\"nsuri\" pr:AttrName=\"Value\"/>");
       
  1276 
       
  1277     _LIT8(KParentDocument,      "<Parent><S:Fault \
       
  1278 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\" \
       
  1279 xmlns:pr=\"nsuri\" pr:AttrName=\"Value\"/>\
       
  1280 </Parent>");
       
  1281 
       
  1282     RSenDocument document = RSenDocument::NewL();
       
  1283     CleanupClosePushL(document);
       
  1284     TXmlEngElement parentElement = document.CreateDocumentElementL(KParentName());
       
  1285 
       
  1286     RStringPool stringPool;
       
  1287     stringPool.OpenL();
       
  1288     CleanupClosePushL(stringPool);
       
  1289 
       
  1290     RString nsUriRString        = stringPool.OpenStringL(KAttributeNsUri);
       
  1291     CleanupClosePushL(nsUriRString);
       
  1292     RString nsPrefixRString     = stringPool.OpenStringL(KAttributeNsPrefix);
       
  1293     CleanupClosePushL(nsPrefixRString);
       
  1294     RString localNameRString    = stringPool.OpenStringL(KAttributeLocalName);
       
  1295     CleanupClosePushL(localNameRString);
       
  1296     RString valueRString        = stringPool.OpenStringL(KAttributeValue);
       
  1297     CleanupClosePushL(valueRString);
       
  1298 
       
  1299     RAttribute attribute;
       
  1300     attribute.Open(nsUriRString, nsPrefixRString, localNameRString,
       
  1301                    valueRString);
       
  1302     // attribute took ownership of all RStrings
       
  1303     // => All RStrings can be pop from CleanupStack
       
  1304     CleanupStack::Pop(&valueRString);
       
  1305     CleanupStack::Pop(&localNameRString);
       
  1306     CleanupStack::Pop(&nsPrefixRString);
       
  1307     CleanupStack::Pop(&nsUriRString);
       
  1308 
       
  1309     CleanupClosePushL(attribute);
       
  1310 
       
  1311     RAttributeArray attrArray;
       
  1312     // append the namespace attribute (declaration)
       
  1313     attrArray.AppendL(attribute);
       
  1314     CleanupClosePushL(attrArray);
       
  1315 
       
  1316     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(KFaultNsUri,
       
  1317                                                       KFaultLocalName,
       
  1318                                                       KFaultNsPrefix,
       
  1319                                                       attrArray,
       
  1320                                                       parentElement,
       
  1321                                                       document);
       
  1322     CleanupStack::PushL(pSoapFault);
       
  1323     HBufC8* pAsXml = pSoapFault->AsXmlL();
       
  1324     CleanupStack::PushL(pAsXml);
       
  1325     if(!( *pAsXml == KFaultElement )) return KErrArgument;
       
  1326 
       
  1327     RBuf8 buffer;
       
  1328     CleanupClosePushL(buffer);
       
  1329     parentElement.OuterXmlL(buffer);
       
  1330 
       
  1331     if(!( buffer == KParentDocument )) return KErrArgument;
       
  1332     CleanupStack::PopAndDestroy(&buffer);
       
  1333 
       
  1334     CleanupStack::PopAndDestroy(pAsXml);
       
  1335     CleanupStack::PopAndDestroy(pSoapFault);
       
  1336     CleanupStack::PopAndDestroy(&attrArray);
       
  1337     CleanupStack::PopAndDestroy(&attribute);
       
  1338     CleanupStack::PopAndDestroy(&stringPool);
       
  1339     CleanupStack::PopAndDestroy(&document);
       
  1340     Teardown();
       
  1341     return KErrNone;    
       
  1342 	}
       
  1343 
       
  1344 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultCodeL( TTestResult& aResult )
       
  1345     {
       
  1346 	SetupL();
       
  1347     _LIT8(KSenSoapEnvelopeXmlns,               "http://schemas.xmlsoap.org/soap/envelope/");
       
  1348     _LIT8(KSenSoap12EnvelopeXmlns,             "http://www.w3.org/2003/05/soap-envelope");
       
  1349 
       
  1350     _LIT8(KFaultElementLocalname,   "Fault");
       
  1351     _LIT8(KFaultNsPrefix,           "S");
       
  1352 
       
  1353     _LIT8(KFaultCodeLocalname,      "faultcode");
       
  1354 
       
  1355     _LIT8(KFault12CodeLocalname,    "Code");    // Soap 1.2
       
  1356     _LIT8(KFault12ValueLocalname,	"Value");	//	Soap1.2
       
  1357 
       
  1358     _LIT8(KFaultCodeValue,          "123");
       
  1359 
       
  1360 
       
  1361     // 1) Fault code in Soap other than 1.2
       
  1362     //    Note: In SOAP older than 1.2 fault elements are _NOT_ namespace qualified
       
  1363     RSenDocument document = RSenDocument::NewLC();
       
  1364     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementLocalname(),
       
  1365                                                                   KSenSoapEnvelopeXmlns(),
       
  1366                                                                   KFaultNsPrefix());
       
  1367     TXmlEngElement faultCodeElement = faultElement.AddNewElementL(KFaultCodeLocalname());
       
  1368     faultCodeElement.AddTextL(KFaultCodeValue());
       
  1369     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement, document);
       
  1370     CleanupStack::PushL(pSoapFault);
       
  1371     TPtrC8 faultCode = pSoapFault->FaultCode();
       
  1372     if(!( faultCode == KFaultCodeValue )) return KErrArgument;
       
  1373 	CleanupStack::PopAndDestroy(pSoapFault);
       
  1374 	CleanupStack::PopAndDestroy(1); // document
       
  1375 
       
  1376     // 2) Fault code in Soap 1.2
       
  1377     //    Note: SOAP 1.2 faults are structured differently to SOAP 1.1.
       
  1378     //          In particular all fault elements are now namespace _qualified_,
       
  1379     //          many have been renamed and fault codes are now hierarchical
       
  1380     RSenDocument document2 = RSenDocument::NewLC();
       
  1381     TXmlEngElement faultElement2 = document2.CreateDocumentElementL(KFaultElementLocalname(),
       
  1382                                                                     KSenSoap12EnvelopeXmlns(),
       
  1383                                                                     KFaultNsPrefix());
       
  1384     TXmlEngElement faultCodeElement2 = faultElement2.AddNewElementSameNsL(KFault12CodeLocalname());
       
  1385     TXmlEngElement faultValueElement2 = faultCodeElement2.AddNewElementSameNsL(KFault12ValueLocalname());
       
  1386     faultValueElement2.AddTextL(KFaultCodeValue());
       
  1387 
       
  1388     CSenSoapFault2* pSoapFault2 = CSenSoapFault2::NewL(faultElement2, document2);
       
  1389     
       
  1390     CleanupStack::PushL(pSoapFault2);
       
  1391 
       
  1392     TPtrC8 faultCode2 = pSoapFault2->FaultCode();
       
  1393     if(!( faultCode2 == KFaultCodeValue )) return KErrArgument;
       
  1394 
       
  1395     CleanupStack::PopAndDestroy(pSoapFault2);
       
  1396     CleanupStack::PopAndDestroy(1); // document2
       
  1397    
       
  1398     Teardown();
       
  1399     return KErrNone;    
       
  1400 	}
       
  1401 
       
  1402 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultSubcodeL( TTestResult& aResult )
       
  1403     {
       
  1404 	SetupL();
       
  1405     // FaultSubcodeL is supported only in Soap 1.2
       
  1406     // If other version of Soap is used return value will always be KNullDesC
       
  1407     _LIT8(KSenSoapEnvelopeXmlns,               "http://schemas.xmlsoap.org/soap/envelope/");
       
  1408     _LIT8(KSenSoap12EnvelopeXmlns,             "http://www.w3.org/2003/05/soap-envelope");
       
  1409 
       
  1410     _LIT8(KFaultElementLocalname,   "Fault");
       
  1411     _LIT8(KFaultNsPrefix,           "S");
       
  1412 
       
  1413 //    _LIT8(KFaultCodeLocalname,      "faultcode");
       
  1414 
       
  1415     _LIT8(KFault12CodeLocalname,    "Code");    // Soap 1.2
       
  1416     _LIT8(KFault12SubcodeLocalname,	"Subcode"); // Soap 1.2
       
  1417     _LIT8(KFault12ValueLocalname,	"Value");	// Soap1.2
       
  1418 
       
  1419     _LIT8(KFaultCodeValue,          "123");
       
  1420 
       
  1421 
       
  1422     // 1) Fault subcode in Soap other than 1.2
       
  1423     //    Note: In SOAP older than 1.2 there is _NO_ sobcode
       
  1424     //          => KNullDesC8 should be returned.
       
  1425     //    Note: In SOAP older than 1.2 fault elements are _NOT_ namespace qualified
       
  1426     RSenDocument document = RSenDocument::NewLC();
       
  1427     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementLocalname(),
       
  1428                                                                   KSenSoapEnvelopeXmlns(),
       
  1429                                                                   KFaultNsPrefix());
       
  1430     TXmlEngElement faultCodeElement    = faultElement.AddNewElementL(KFault12CodeLocalname());
       
  1431     TXmlEngElement faultSubCodeElement = faultCodeElement.AddNewElementSameNsL(KFault12SubcodeLocalname());
       
  1432     TXmlEngElement faultValueElement   = faultSubCodeElement.AddNewElementSameNsL(KFault12ValueLocalname());
       
  1433     faultValueElement.AddTextL(KFaultCodeValue());
       
  1434 
       
  1435     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement, document);
       
  1436     CleanupStack::PushL(pSoapFault);
       
  1437 
       
  1438     TPtrC8 faultCode = pSoapFault->FaultSubcode();
       
  1439     if(!( faultCode == KNullDesC8 )) return KErrArgument;
       
  1440 
       
  1441     CleanupStack::PopAndDestroy(pSoapFault);
       
  1442  	CleanupStack::PopAndDestroy(1); // document
       
  1443     
       
  1444     // 2) Fault subcode in Soap 1.2
       
  1445     //    Note: SOAP 1.2 faults are structured differently to SOAP 1.1.
       
  1446     //          In particular all fault elements are now namespace _qualified_,
       
  1447     //          many have been renamed and fault codes are now hierarchical
       
  1448     RSenDocument document2 = RSenDocument::NewLC();
       
  1449     TXmlEngElement faultElement2 = document2.CreateDocumentElementL(KFaultElementLocalname(),
       
  1450                                                                     KSenSoap12EnvelopeXmlns(),
       
  1451                                                                     KFaultNsPrefix());
       
  1452     TXmlEngElement faultCodeElement2    = faultElement2.AddNewElementSameNsL(KFault12CodeLocalname());
       
  1453     TXmlEngElement faultSubCodeElement2 = faultCodeElement2.AddNewElementSameNsL(KFault12SubcodeLocalname());
       
  1454     TXmlEngElement faultValueElement2   = faultSubCodeElement2.AddNewElementSameNsL(KFault12ValueLocalname());
       
  1455     faultValueElement2.AddTextL(KFaultCodeValue());
       
  1456 
       
  1457     CSenSoapFault2* pSoapFault2 = CSenSoapFault2::NewL(faultElement2, document2);
       
  1458     
       
  1459     CleanupStack::PushL(pSoapFault2);
       
  1460 
       
  1461     TPtrC8 faultCode2 = pSoapFault2->FaultSubcode();
       
  1462     if(!( faultCode2 == KFaultCodeValue )) return KErrArgument;
       
  1463 
       
  1464     CleanupStack::PopAndDestroy(pSoapFault2);
       
  1465     CleanupStack::PopAndDestroy(1); // document2
       
  1466     Teardown();
       
  1467     return KErrNone;    
       
  1468 	}
       
  1469 
       
  1470 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultStringL( TTestResult& aResult )
       
  1471     {
       
  1472 	SetupL();
       
  1473     _LIT8(KSenSoapEnvelopeXmlns,               "http://schemas.xmlsoap.org/soap/envelope/");
       
  1474     _LIT8(KSenSoap12EnvelopeXmlns,             "http://www.w3.org/2003/05/soap-envelope");
       
  1475 
       
  1476     _LIT8(KFaultElementLocalname,   "Fault");
       
  1477     _LIT8(KFaultNsPrefix,           "S");
       
  1478 
       
  1479     _LIT8(KFaultStringLocalname,    "faultstring");
       
  1480 
       
  1481     _LIT8(KFault12ReasonLocalname,	"Reason");  // Soap1.2
       
  1482     _LIT8(KFault12TextLocalname,	"Text");    // Soap1.2
       
  1483 
       
  1484 
       
  1485     _LIT8(KFaultStringValue,        "Fault code string");
       
  1486 
       
  1487 
       
  1488     // 1) Fault code in Soap other than 1.2
       
  1489     //    Note: In SOAP older than 1.2 fault elements are _NOT_ namespace qualified
       
  1490     RSenDocument document = RSenDocument::NewLC();
       
  1491     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementLocalname(),
       
  1492                                                                   KSenSoapEnvelopeXmlns(),
       
  1493                                                                   KFaultNsPrefix());
       
  1494     TXmlEngElement faultStringElement = faultElement.AddNewElementL(KFaultStringLocalname());
       
  1495     faultStringElement.AddTextL(KFaultStringValue());
       
  1496 
       
  1497     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement, document);
       
  1498     
       
  1499     CleanupStack::PushL(pSoapFault);
       
  1500 
       
  1501     TPtrC8 faultCode = pSoapFault->FaultString();
       
  1502     if(!( faultCode == KFaultStringValue )) return KErrArgument;
       
  1503 
       
  1504     CleanupStack::PopAndDestroy(pSoapFault);
       
  1505 	CleanupStack::PopAndDestroy(1); // document
       
  1506     // 2) Fault code in Soap 1.2
       
  1507     //    Note: SOAP 1.2 faults are structured differently to SOAP 1.1.
       
  1508     //          In particular all fault elements are now namespace _qualified_,
       
  1509     //          many have been renamed and fault codes are now hierarchical
       
  1510     RSenDocument document2 = RSenDocument::NewLC();
       
  1511     TXmlEngElement faultElement2 = document2.CreateDocumentElementL(KFaultElementLocalname(),
       
  1512                                                                     KSenSoap12EnvelopeXmlns(),
       
  1513                                                                     KFaultNsPrefix());
       
  1514     TXmlEngElement faultReasonElement2 = faultElement2.AddNewElementSameNsL(KFault12ReasonLocalname());
       
  1515     TXmlEngElement faultTextElement2 = faultReasonElement2.AddNewElementSameNsL(KFault12TextLocalname());
       
  1516     faultTextElement2.AddTextL(KFaultStringValue());
       
  1517 
       
  1518     CSenSoapFault2* pSoapFault2 = CSenSoapFault2::NewL(faultElement2, document2);
       
  1519     
       
  1520     CleanupStack::PushL(pSoapFault2);
       
  1521 
       
  1522     TPtrC8 faultCode2 = pSoapFault2->FaultString();
       
  1523     if(!( faultCode2 == KFaultStringValue )) return KErrArgument;
       
  1524 
       
  1525     CleanupStack::PopAndDestroy(pSoapFault2);
       
  1526     CleanupStack::PopAndDestroy(1); // document2
       
  1527     Teardown();
       
  1528     return KErrNone;    
       
  1529 	}
       
  1530 
       
  1531 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_FaultActorL( TTestResult& aResult )
       
  1532     {
       
  1533 	SetupL();
       
  1534     _LIT8(KSenSoapEnvelopeXmlns,               "http://schemas.xmlsoap.org/soap/envelope/");
       
  1535     _LIT8(KSenSoap12EnvelopeXmlns,             "http://www.w3.org/2003/05/soap-envelope");
       
  1536 
       
  1537     _LIT8(KFaultElementLocalname,   "Fault");
       
  1538     _LIT8(KFaultNsPrefix,           "S");
       
  1539 
       
  1540     _LIT8(KFaultActorLocalname,     "faultactor");
       
  1541 
       
  1542     _LIT8(KFault12NodeLocalname,	"Node");    // Node represents faultactor in Soap 1.2
       
  1543 
       
  1544     _LIT8(KFaultActorValue,          "http://www.wrox.com/heroes/endpoint.asp");
       
  1545 
       
  1546 
       
  1547     // 1) Faultactor in Soap other than 1.2
       
  1548     //    "faultactor" is intended to provide information about which SOAP node
       
  1549     //    on the SOAP message path caused the fault to happen.
       
  1550     //    The value of the "faultactor" is a URI identifying the source of the fault.
       
  1551 
       
  1552     RSenDocument document = RSenDocument::NewLC();
       
  1553     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementLocalname(),
       
  1554                                                                   KSenSoapEnvelopeXmlns(),
       
  1555                                                                   KFaultNsPrefix());
       
  1556     TXmlEngElement faultCodeElement = faultElement.AddNewElementL(KFaultActorLocalname());
       
  1557     faultCodeElement.AddTextL(KFaultActorValue());
       
  1558 
       
  1559     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement, document);
       
  1560     
       
  1561     CleanupStack::PushL(pSoapFault);
       
  1562 
       
  1563     TPtrC8 faultActor = pSoapFault->FaultActor();
       
  1564     if(!( faultActor == KFaultActorValue )) return KErrArgument;
       
  1565 
       
  1566     CleanupStack::PopAndDestroy(pSoapFault);
       
  1567 	CleanupStack::PopAndDestroy(1); // document
       
  1568     // 2) Faultactor in Soap 1.2
       
  1569     //    "Node" is intended to provide information about which SOAP node on the
       
  1570     //    SOAP message path caused the fault to happen.
       
  1571     //    "Node" contains the URI of the SOAP node that generated the fault.
       
  1572     //
       
  1573     //    Note: In Soap 1.2 "Node" represents "faultactor" from previous SOAP versions.
       
  1574 
       
  1575     RSenDocument document2 = RSenDocument::NewLC();
       
  1576     TXmlEngElement faultElement2 = document2.CreateDocumentElementL(KFaultElementLocalname(),
       
  1577                                                                     KSenSoap12EnvelopeXmlns(),
       
  1578                                                                     KFaultNsPrefix());
       
  1579     TXmlEngElement faultNodeElement2 = faultElement2.AddNewElementSameNsL(KFault12NodeLocalname());
       
  1580     faultNodeElement2.AddTextL(KFaultActorValue());
       
  1581 
       
  1582     CSenSoapFault2* pSoapFault2 = CSenSoapFault2::NewL(faultElement2, document2);
       
  1583     
       
  1584     CleanupStack::PushL(pSoapFault2);
       
  1585 
       
  1586     HBufC8* pAsXml = pSoapFault2->AsXmlL();
       
  1587     delete pAsXml;
       
  1588 
       
  1589     TPtrC8 faultCode2 = pSoapFault2->FaultActor();
       
  1590     if(!( faultCode2 == KFaultActorValue )) return KErrArgument;
       
  1591 
       
  1592     CleanupStack::PopAndDestroy(pSoapFault2);
       
  1593     CleanupStack::PopAndDestroy(1); // document2
       
  1594     Teardown();
       
  1595     return KErrNone;    
       
  1596 	}
       
  1597 
       
  1598 TInt CNewSoapClassesBCTest::MT_CSenSoapFault2_DetailL( TTestResult& aResult )
       
  1599     {
       
  1600 	SetupL();
       
  1601     _LIT8(KSenSoapEnvelopeXmlns,               "http://schemas.xmlsoap.org/soap/envelope/");
       
  1602     _LIT8(KSenSoap12EnvelopeXmlns,             "http://www.w3.org/2003/05/soap-envelope");
       
  1603 
       
  1604     _LIT8(KFaultElementLocalname,   "Fault");
       
  1605     _LIT8(KFaultNsPrefix,           "S");
       
  1606 
       
  1607     _LIT8(KDetailLocalname,         "detail");
       
  1608 
       
  1609     _LIT8(KFault12DetailLocalname,	"Detail");    // Soap 1.2
       
  1610 
       
  1611     _LIT8(KFaultDetailValue,          "Detailed information");
       
  1612 
       
  1613 
       
  1614     // 1) Fault code in Soap other than 1.2
       
  1615     //    Note: In SOAP older than 1.2 fault elements are _NOT_ namespace qualified
       
  1616     RSenDocument document = RSenDocument::NewLC();
       
  1617     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementLocalname(),
       
  1618                                                                   KSenSoapEnvelopeXmlns(),
       
  1619                                                                   KFaultNsPrefix());
       
  1620     TXmlEngElement faultDetailElement = faultElement.AddNewElementL(KDetailLocalname());
       
  1621     faultDetailElement.AddTextL(KFaultDetailValue());
       
  1622 
       
  1623     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement, document);
       
  1624     CleanupStack::PushL(pSoapFault);
       
  1625 
       
  1626     TPtrC8 faultDetail = pSoapFault->Detail();
       
  1627     if(!( faultDetail == KFaultDetailValue )) return KErrArgument;
       
  1628 
       
  1629     CleanupStack::PopAndDestroy(pSoapFault);
       
  1630 	CleanupStack::PopAndDestroy(1); // document
       
  1631     // 2) Fault code in Soap 1.2
       
  1632     //    Note: SOAP 1.2 faults are structured differently to SOAP 1.1.
       
  1633     //          In particular all fault elements are now namespace _qualified_,
       
  1634     //          many have been renamed and fault codes are now hierarchical
       
  1635     RSenDocument document2 = RSenDocument::NewLC();
       
  1636     TXmlEngElement faultElement2 = document2.CreateDocumentElementL(KFaultElementLocalname(),
       
  1637                                                                     KSenSoap12EnvelopeXmlns(),
       
  1638                                                                     KFaultNsPrefix());
       
  1639     TXmlEngElement faultDetailElement2 = faultElement2.AddNewElementSameNsL(KFault12DetailLocalname());
       
  1640     faultDetailElement2.AddTextL(KFaultDetailValue());
       
  1641 
       
  1642     CSenSoapFault2* pSoapFault2 = CSenSoapFault2::NewL(faultElement2, document2);
       
  1643     
       
  1644     CleanupStack::PushL(pSoapFault2);
       
  1645 
       
  1646     TPtrC8 faultDetail2 = pSoapFault2->Detail();
       
  1647     if(!( faultDetail2 == KFaultDetailValue )) return KErrArgument;
       
  1648 
       
  1649     CleanupStack::PopAndDestroy(pSoapFault2);
       
  1650     CleanupStack::PopAndDestroy(1); // document2
       
  1651     Teardown();
       
  1652     return KErrNone;    
       
  1653 	}
       
  1654 
       
  1655 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLL( TTestResult& aResult )
       
  1656     {
       
  1657 	SetupL();
       
  1658     _LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1659 
       
  1660     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL();
       
  1661     CleanupStack::PushL(pSoapMessage);
       
  1662 
       
  1663     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1664     CleanupStack::PushL(pAsXml);
       
  1665     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1666     CleanupStack::PopAndDestroy(pAsXml);
       
  1667 
       
  1668     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1669     Teardown();
       
  1670     return KErrNone;    
       
  1671 	}
       
  1672     
       
  1673 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLCL( TTestResult& aResult )
       
  1674     {
       
  1675 	SetupL();
       
  1676     _LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1677 
       
  1678     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewLC();
       
  1679 
       
  1680     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1681     CleanupStack::PushL(pAsXml);
       
  1682     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1683     CleanupStack::PopAndDestroy(pAsXml);
       
  1684     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1685     Teardown();
       
  1686     return KErrNone;    
       
  1687 	}
       
  1688 
       
  1689 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_1L( TTestResult& aResult )
       
  1690     {
       
  1691 	SetupL();
       
  1692     _LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1693     _LIT8(KSoapMessage12,   "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  1694 
       
  1695     // 1) Test creating of SOAP 1.1 version SoapMessage
       
  1696     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL(ESOAP11);
       
  1697     CleanupStack::PushL(pSoapMessage);
       
  1698 
       
  1699     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1700     CleanupStack::PushL(pAsXml);
       
  1701     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1702     CleanupStack::PopAndDestroy(pAsXml);
       
  1703 
       
  1704     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1705 
       
  1706     // 2) Test creating of SOAP 1.2 version SoapMessage
       
  1707     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12);
       
  1708     CleanupStack::PushL(pSoapMessage);
       
  1709 
       
  1710     pAsXml = pSoapMessage->AsXmlL();
       
  1711     CleanupStack::PushL(pAsXml);
       
  1712     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  1713     CleanupStack::PopAndDestroy(pAsXml);
       
  1714 
       
  1715     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1716     Teardown();
       
  1717     return KErrNone;    
       
  1718 	}
       
  1719     
       
  1720 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_1L( TTestResult& aResult )
       
  1721     {
       
  1722 	SetupL();
       
  1723     _LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1724     _LIT8(KSoapMessage12,   "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  1725 
       
  1726     // 1) Test creating of SOAP 1.1 version SoapMessage
       
  1727     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewLC(ESOAP11);
       
  1728 
       
  1729     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1730     CleanupStack::PushL(pAsXml);
       
  1731     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1732     CleanupStack::PopAndDestroy(pAsXml);
       
  1733 
       
  1734     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1735 
       
  1736     // 2) Test creating of SOAP 1.2 version SoapMessage
       
  1737     pSoapMessage = CSenSoapMessage2::NewLC(ESOAP12);
       
  1738 
       
  1739     pAsXml = pSoapMessage->AsXmlL();
       
  1740     CleanupStack::PushL(pAsXml);
       
  1741     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  1742     CleanupStack::PopAndDestroy(pAsXml);
       
  1743 
       
  1744     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1745     Teardown();
       
  1746     return KErrNone;    
       
  1747 	}
       
  1748 
       
  1749 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_2L( TTestResult& aResult )
       
  1750     {
       
  1751 	SetupL();
       
  1752     _LIT8(KIllegalNamespace,            "illegalNamespace");
       
  1753     _LIT8(KSecuritySchemeXmlNamespace,  "http://schemas.xmlsoap.org/ws/2003/06/secext");
       
  1754     _LIT8(KSecurityXmlNamespace,        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
       
  1755 
       
  1756     _LIT8(KSoapMessage11,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1757     _LIT8(KSoapMessage12,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  1758 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  1759 <S:Body/>\
       
  1760 </S:Envelope>");
       
  1761     _LIT8(KSoapMessage13,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  1762 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  1763 <S:Body/>\
       
  1764 </S:Envelope>");
       
  1765     _LIT8(KSoapMessage21,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  1766     _LIT8(KSoapMessage22,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  1767 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  1768 <S:Body/>\
       
  1769 </S:Envelope>");
       
  1770     _LIT8(KSoapMessage23,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  1771 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  1772 <S:Body/>\
       
  1773 </S:Envelope>");
       
  1774 
       
  1775     // 1.1) Test creating of SOAP 1.1 version SoapMessage with illegal namespace
       
  1776     //      => No security header should be added.
       
  1777     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL(ESOAP11, KIllegalNamespace);
       
  1778     CleanupStack::PushL(pSoapMessage);
       
  1779 
       
  1780     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1781     CleanupStack::PushL(pAsXml);
       
  1782     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1783     CleanupStack::PopAndDestroy(pAsXml);
       
  1784 
       
  1785     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1786 
       
  1787     // 1.2) Test creating of SOAP 1.1 version SoapMessage with scheme namespace
       
  1788     //      => Security header should be created with given namespace.
       
  1789     pSoapMessage = CSenSoapMessage2::NewL(ESOAP11, KSecuritySchemeXmlNamespace);
       
  1790     CleanupStack::PushL(pSoapMessage);
       
  1791 
       
  1792     pAsXml = pSoapMessage->AsXmlL();
       
  1793     CleanupStack::PushL(pAsXml);
       
  1794     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  1795     CleanupStack::PopAndDestroy(pAsXml);
       
  1796 
       
  1797     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1798 
       
  1799     // 1.3) Test creating of SOAP 1.1 version SoapMessage with security namespace
       
  1800     //      => Security header should be created with given namespace.
       
  1801     pSoapMessage = CSenSoapMessage2::NewL(ESOAP11, KSecurityXmlNamespace);
       
  1802     CleanupStack::PushL(pSoapMessage);
       
  1803 
       
  1804     pAsXml = pSoapMessage->AsXmlL();
       
  1805     CleanupStack::PushL(pAsXml);
       
  1806     if(!( *pAsXml == KSoapMessage13 )) return KErrArgument;
       
  1807     CleanupStack::PopAndDestroy(pAsXml);
       
  1808 
       
  1809     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1810 
       
  1811     // 2.1) Test creating of SOAP 1.2 version SoapMessage with illegal namespace
       
  1812     //      => No security header should be added.
       
  1813     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12, KIllegalNamespace);
       
  1814     CleanupStack::PushL(pSoapMessage);
       
  1815 
       
  1816     pAsXml = pSoapMessage->AsXmlL();
       
  1817     CleanupStack::PushL(pAsXml);
       
  1818     if(!( *pAsXml == KSoapMessage21 )) return KErrArgument;
       
  1819     CleanupStack::PopAndDestroy(pAsXml);
       
  1820 
       
  1821     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1822 
       
  1823     // 2.2) Test creating of SOAP 1.2 version SoapMessage with scheme namespace
       
  1824     //      => Security header should be created with given namespace.
       
  1825     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12, KSecuritySchemeXmlNamespace);
       
  1826     CleanupStack::PushL(pSoapMessage);
       
  1827 
       
  1828     pAsXml = pSoapMessage->AsXmlL();
       
  1829     CleanupStack::PushL(pAsXml);
       
  1830     if(!( *pAsXml == KSoapMessage22 )) return KErrArgument;
       
  1831     CleanupStack::PopAndDestroy(pAsXml);
       
  1832 
       
  1833     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1834 
       
  1835     // 2.3) Test creating of SOAP 1.2 version SoapMessage with security namespace
       
  1836     //      => Security header should be created with given namespace.
       
  1837     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12, KSecurityXmlNamespace);
       
  1838     CleanupStack::PushL(pSoapMessage);
       
  1839 
       
  1840     pAsXml = pSoapMessage->AsXmlL();
       
  1841     CleanupStack::PushL(pAsXml);
       
  1842     if(!( *pAsXml == KSoapMessage23 )) return KErrArgument;
       
  1843     CleanupStack::PopAndDestroy(pAsXml);
       
  1844 
       
  1845     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1846     Teardown();
       
  1847     return KErrNone;    
       
  1848 	}
       
  1849     
       
  1850 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_2L( TTestResult& aResult )
       
  1851     {
       
  1852 	SetupL();
       
  1853     _LIT8(KIllegalNamespace,            "illegalNamespace");
       
  1854     _LIT8(KSecuritySchemeXmlNamespace,  "http://schemas.xmlsoap.org/ws/2003/06/secext");
       
  1855     _LIT8(KSecurityXmlNamespace,        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
       
  1856 
       
  1857     _LIT8(KSoapMessage11,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1858     _LIT8(KSoapMessage12,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  1859 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  1860 <S:Body/>\
       
  1861 </S:Envelope>");
       
  1862     _LIT8(KSoapMessage13,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  1863 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  1864 <S:Body/>\
       
  1865 </S:Envelope>");
       
  1866     _LIT8(KSoapMessage21,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  1867     _LIT8(KSoapMessage22,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  1868 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  1869 <S:Body/>\
       
  1870 </S:Envelope>");
       
  1871     _LIT8(KSoapMessage23,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  1872 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  1873 <S:Body/>\
       
  1874 </S:Envelope>");
       
  1875 
       
  1876     // 1.1) Test creating of SOAP 1.1 version SoapMessage with illegal namespace
       
  1877     //      => No security header should be added.
       
  1878     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewLC(ESOAP11, KIllegalNamespace);
       
  1879 
       
  1880     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1881     CleanupStack::PushL(pAsXml);
       
  1882     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1883     CleanupStack::PopAndDestroy(pAsXml);
       
  1884 
       
  1885     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1886 
       
  1887     // 1.2) Test creating of SOAP 1.1 version SoapMessage with scheme namespace
       
  1888     //      => Security header should be created with given namespace.
       
  1889     pSoapMessage = CSenSoapMessage2::NewLC(ESOAP11, KSecuritySchemeXmlNamespace);
       
  1890 
       
  1891     pAsXml = pSoapMessage->AsXmlL();
       
  1892     CleanupStack::PushL(pAsXml);
       
  1893     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  1894     CleanupStack::PopAndDestroy(pAsXml);
       
  1895 
       
  1896     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1897 
       
  1898     // 1.3) Test creating of SOAP 1.1 version SoapMessage with security namespace
       
  1899     //      => Security header should be created with given namespace.
       
  1900     pSoapMessage = CSenSoapMessage2::NewLC(ESOAP11, KSecurityXmlNamespace);
       
  1901 
       
  1902     pAsXml = pSoapMessage->AsXmlL();
       
  1903     CleanupStack::PushL(pAsXml);
       
  1904     if(!( *pAsXml == KSoapMessage13 )) return KErrArgument;
       
  1905     CleanupStack::PopAndDestroy(pAsXml);
       
  1906 
       
  1907     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1908 
       
  1909     // 2.1) Test creating of SOAP 1.2 version SoapMessage with illegal namespace
       
  1910     //      => No security header should be added.
       
  1911     pSoapMessage = CSenSoapMessage2::NewLC(ESOAP12, KIllegalNamespace);
       
  1912 
       
  1913     pAsXml = pSoapMessage->AsXmlL();
       
  1914     CleanupStack::PushL(pAsXml);
       
  1915     if(!( *pAsXml == KSoapMessage21 )) return KErrArgument;
       
  1916     CleanupStack::PopAndDestroy(pAsXml);
       
  1917 
       
  1918     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1919 
       
  1920     // 2.2) Test creating of SOAP 1.2 version SoapMessage with scheme namespace
       
  1921     //      => Security header should be created with given namespace.
       
  1922     pSoapMessage = CSenSoapMessage2::NewLC(ESOAP12, KSecuritySchemeXmlNamespace);
       
  1923 
       
  1924     pAsXml = pSoapMessage->AsXmlL();
       
  1925     CleanupStack::PushL(pAsXml);
       
  1926     if(!( *pAsXml == KSoapMessage22 )) return KErrArgument;
       
  1927     CleanupStack::PopAndDestroy(pAsXml);
       
  1928 
       
  1929     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1930 
       
  1931     // 2.3) Test creating of SOAP 1.2 version SoapMessage with security namespace
       
  1932     //      => Security header should be created with given namespace.
       
  1933     pSoapMessage = CSenSoapMessage2::NewLC(ESOAP12, KSecurityXmlNamespace);
       
  1934 
       
  1935     pAsXml = pSoapMessage->AsXmlL();
       
  1936     CleanupStack::PushL(pAsXml);
       
  1937     if(!( *pAsXml == KSoapMessage23 )) return KErrArgument;
       
  1938     CleanupStack::PopAndDestroy(pAsXml);
       
  1939 
       
  1940     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1941     Teardown();
       
  1942     return KErrNone;    
       
  1943 	}
       
  1944 
       
  1945 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_3L( TTestResult& aResult )
       
  1946     {
       
  1947 	SetupL();
       
  1948     _LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1949     CSenSoapMessage2* pSoapMessage, *pSoapMessage1 = CSenSoapMessage2::NewL();
       
  1950     pSoapMessage = CSenSoapMessage2::NewL(*pSoapMessage1);
       
  1951     
       
  1952     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1953     CleanupStack::PushL(pAsXml);
       
  1954     
       
  1955     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1956     
       
  1957     CleanupStack::PopAndDestroy(pAsXml);
       
  1958     
       
  1959     
       
  1960     __ASSERT_ALWAYS_NO_LEAVE(delete pSoapMessage);
       
  1961     pSoapMessage = NULL;
       
  1962     delete pSoapMessage1;
       
  1963     pSoapMessage1 = NULL;
       
  1964     Teardown();
       
  1965     return KErrNone;    
       
  1966 	}
       
  1967     
       
  1968 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_3L( TTestResult& aResult )
       
  1969     {
       
  1970 	SetupL();
       
  1971     _LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1972     CSenSoapMessage2* pSoapMessage, *pSoapMessage1 = CSenSoapMessage2::NewL();
       
  1973     pSoapMessage = CSenSoapMessage2::NewLC(*pSoapMessage1);
       
  1974     
       
  1975     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1976     CleanupStack::PushL(pAsXml);
       
  1977     
       
  1978     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1979     
       
  1980     CleanupStack::PopAndDestroy(pAsXml);
       
  1981     CleanupStack::PopAndDestroy(pSoapMessage);
       
  1982     delete pSoapMessage1;
       
  1983     pSoapMessage1 = NULL;
       
  1984     Teardown();
       
  1985     return KErrNone;    
       
  1986 	}
       
  1987     
       
  1988 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_4L( TTestResult& aResult )
       
  1989 	{
       
  1990 	SetupL();
       
  1991     _LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  1992 	MSenMessageContext* mContext = NULL;
       
  1993     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL(*mContext);
       
  1994     CleanupStack::PushL(pSoapMessage);
       
  1995     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  1996     CleanupStack::PushL(pAsXml);
       
  1997     
       
  1998     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  1999     
       
  2000     CleanupStack::PopAndDestroy(pAsXml);
       
  2001     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2002     Teardown();
       
  2003     return KErrNone;    
       
  2004 	}
       
  2005 	
       
  2006 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_4L( TTestResult& aResult )
       
  2007 	{
       
  2008 	SetupL();
       
  2009 	_LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  2010 	MSenMessageContext* mContext = NULL;
       
  2011     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewLC(*mContext);
       
  2012     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  2013     CleanupStack::PushL(pAsXml);
       
  2014     
       
  2015     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  2016     CleanupStack::PopAndDestroy(pAsXml);
       
  2017     
       
  2018     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2019 
       
  2020     Teardown();
       
  2021     return KErrNone;    
       
  2022 	}
       
  2023 	
       
  2024 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_5L( TTestResult& aResult )
       
  2025 	{
       
  2026 	SetupL();
       
  2027 	_LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  2028     _LIT8(KSoapMessage12,   "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  2029 	
       
  2030     MSenMessageContext* mContext = NULL;
       
  2031     // 1) Test creating of SOAP 1.1 version SoapMessage
       
  2032     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL(*mContext, ESOAP11);
       
  2033     CleanupStack::PushL(pSoapMessage);
       
  2034 
       
  2035     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  2036     CleanupStack::PushL(pAsXml);
       
  2037     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  2038     CleanupStack::PopAndDestroy(pAsXml);
       
  2039 
       
  2040     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2041 
       
  2042     // 2) Test creating of SOAP 1.2 version SoapMessage
       
  2043     pSoapMessage = CSenSoapMessage2::NewL(*mContext, ESOAP12 );
       
  2044     CleanupStack::PushL(pSoapMessage);
       
  2045 
       
  2046     pAsXml = pSoapMessage->AsXmlL();
       
  2047     CleanupStack::PushL(pAsXml);
       
  2048     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  2049     CleanupStack::PopAndDestroy(pAsXml);
       
  2050 
       
  2051     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2052     Teardown();
       
  2053     return KErrNone;    
       
  2054 	}
       
  2055 	
       
  2056 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_5L( TTestResult& aResult )
       
  2057 	{
       
  2058 	SetupL();
       
  2059 	_LIT8(KSoapMessage11,   "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  2060     _LIT8(KSoapMessage12,   "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  2061     MSenMessageContext* mContext = NULL;
       
  2062 
       
  2063   
       
  2064     // 1) Test creating of SOAP 1.1 version SoapMessage
       
  2065     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewLC(*mContext, ESOAP11);
       
  2066     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  2067     CleanupStack::PushL(pAsXml);
       
  2068     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  2069     CleanupStack::PopAndDestroy(pAsXml);
       
  2070 
       
  2071     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2072 
       
  2073 
       
  2074     // 2) Test creating of SOAP 1.2 version SoapMessage
       
  2075     pSoapMessage = CSenSoapMessage2::NewLC(*mContext, ESOAP12);
       
  2076 
       
  2077     pAsXml = pSoapMessage->AsXmlL();
       
  2078     CleanupStack::PushL(pAsXml);
       
  2079     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  2080     CleanupStack::PopAndDestroy(pAsXml);
       
  2081 
       
  2082     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2083     Teardown();
       
  2084     return KErrNone;    
       
  2085 	}
       
  2086 	
       
  2087 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewL_6L( TTestResult& aResult )
       
  2088 	{
       
  2089 	SetupL();
       
  2090 	MSenMessageContext* mContext = NULL;
       
  2091 
       
  2092     
       
  2093 	_LIT8(KIllegalNamespace,            "illegalNamespace");
       
  2094     _LIT8(KSecuritySchemeXmlNamespace,  "http://schemas.xmlsoap.org/ws/2003/06/secext");
       
  2095     _LIT8(KSecurityXmlNamespace,        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
       
  2096 
       
  2097     _LIT8(KSoapMessage11,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  2098     _LIT8(KSoapMessage12,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2099 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  2100 <S:Body/>\
       
  2101 </S:Envelope>");
       
  2102     _LIT8(KSoapMessage13,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2103 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  2104 <S:Body/>\
       
  2105 </S:Envelope>");
       
  2106     _LIT8(KSoapMessage21,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  2107     _LIT8(KSoapMessage22,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2108 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  2109 <S:Body/>\
       
  2110 </S:Envelope>");
       
  2111     _LIT8(KSoapMessage23,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2112 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  2113 <S:Body/>\
       
  2114 </S:Envelope>");
       
  2115 
       
  2116     // 1.1) Test creating of SOAP 1.1 version SoapMessage with illegal namespace
       
  2117     //      => No security header should be added.
       
  2118     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL(*mContext, ESOAP11, KIllegalNamespace);
       
  2119     CleanupStack::PushL(pSoapMessage);
       
  2120 
       
  2121     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  2122     CleanupStack::PushL(pAsXml);
       
  2123     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  2124     CleanupStack::PopAndDestroy(pAsXml);
       
  2125 
       
  2126     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2127 
       
  2128     // 1.2) Test creating of SOAP 1.1 version SoapMessage with scheme namespace
       
  2129     //      => Security header should be created with given namespace.
       
  2130     pSoapMessage = CSenSoapMessage2::NewL(*mContext,ESOAP11, KSecuritySchemeXmlNamespace);
       
  2131     CleanupStack::PushL(pSoapMessage);
       
  2132 
       
  2133     pAsXml = pSoapMessage->AsXmlL();
       
  2134     CleanupStack::PushL(pAsXml);
       
  2135     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  2136     CleanupStack::PopAndDestroy(pAsXml);
       
  2137 
       
  2138     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2139 
       
  2140     // 1.3) Test creating of SOAP 1.1 version SoapMessage with security namespace
       
  2141     //      => Security header should be created with given namespace.
       
  2142     pSoapMessage = CSenSoapMessage2::NewL(*mContext,ESOAP11, KSecurityXmlNamespace);
       
  2143     CleanupStack::PushL(pSoapMessage);
       
  2144 
       
  2145     pAsXml = pSoapMessage->AsXmlL();
       
  2146     CleanupStack::PushL(pAsXml);
       
  2147     if(!( *pAsXml == KSoapMessage13 )) return KErrArgument;
       
  2148     CleanupStack::PopAndDestroy(pAsXml);
       
  2149 
       
  2150     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2151 
       
  2152     // 2.1) Test creating of SOAP 1.2 version SoapMessage with illegal namespace
       
  2153     //      => No security header should be added.
       
  2154     pSoapMessage = CSenSoapMessage2::NewL(*mContext,ESOAP12, KIllegalNamespace);
       
  2155     CleanupStack::PushL(pSoapMessage);
       
  2156 
       
  2157     pAsXml = pSoapMessage->AsXmlL();
       
  2158     CleanupStack::PushL(pAsXml);
       
  2159     if(!( *pAsXml == KSoapMessage21 )) return KErrArgument;
       
  2160     CleanupStack::PopAndDestroy(pAsXml);
       
  2161 
       
  2162     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2163 
       
  2164     // 2.2) Test creating of SOAP 1.2 version SoapMessage with scheme namespace
       
  2165     //      => Security header should be created with given namespace.
       
  2166     pSoapMessage = CSenSoapMessage2::NewL(*mContext,ESOAP12, KSecuritySchemeXmlNamespace);
       
  2167     CleanupStack::PushL(pSoapMessage);
       
  2168 
       
  2169     pAsXml = pSoapMessage->AsXmlL();
       
  2170     CleanupStack::PushL(pAsXml);
       
  2171     if(!( *pAsXml == KSoapMessage22 )) return KErrArgument;
       
  2172     CleanupStack::PopAndDestroy(pAsXml);
       
  2173 
       
  2174     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2175 
       
  2176     // 2.3) Test creating of SOAP 1.2 version SoapMessage with security namespace
       
  2177     //      => Security header should be created with given namespace.
       
  2178     pSoapMessage = CSenSoapMessage2::NewL(*mContext,ESOAP12, KSecurityXmlNamespace);
       
  2179     CleanupStack::PushL(pSoapMessage);
       
  2180 
       
  2181     pAsXml = pSoapMessage->AsXmlL();
       
  2182     CleanupStack::PushL(pAsXml);
       
  2183     if(!( *pAsXml == KSoapMessage23 )) return KErrArgument;
       
  2184     CleanupStack::PopAndDestroy(pAsXml);
       
  2185 
       
  2186     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2187     
       
  2188     Teardown();
       
  2189     return KErrNone;    
       
  2190 	}
       
  2191 	
       
  2192 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_NewLC_6L(TTestResult& aResult )
       
  2193 	{
       
  2194 	SetupL();
       
  2195 	MSenMessageContext* mContext = NULL;
       
  2196     
       
  2197 	 _LIT8(KIllegalNamespace,            "illegalNamespace");
       
  2198     _LIT8(KSecuritySchemeXmlNamespace,  "http://schemas.xmlsoap.org/ws/2003/06/secext");
       
  2199     _LIT8(KSecurityXmlNamespace,        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
       
  2200 
       
  2201     _LIT8(KSoapMessage11,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  2202     _LIT8(KSoapMessage12,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2203 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  2204 <S:Body/>\
       
  2205 </S:Envelope>");
       
  2206     _LIT8(KSoapMessage13,    "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2207 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  2208 <S:Body/>\
       
  2209 </S:Envelope>");
       
  2210     _LIT8(KSoapMessage21,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"/>");
       
  2211     _LIT8(KSoapMessage22,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2212 <S:Header><wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/></S:Header>\
       
  2213 <S:Body/>\
       
  2214 </S:Envelope>");
       
  2215     _LIT8(KSoapMessage23,    "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2216 <S:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/></S:Header>\
       
  2217 <S:Body/>\
       
  2218 </S:Envelope>");
       
  2219 
       
  2220     // 1.1) Test creating of SOAP 1.1 version SoapMessage with illegal namespace
       
  2221     //      => No security header should be added.
       
  2222     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewLC(*mContext,ESOAP11, KIllegalNamespace);
       
  2223 
       
  2224     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  2225     CleanupStack::PushL(pAsXml);
       
  2226     if(!( *pAsXml == KSoapMessage11 )) return KErrArgument;
       
  2227     CleanupStack::PopAndDestroy(pAsXml);
       
  2228 
       
  2229     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2230 
       
  2231     // 1.2) Test creating of SOAP 1.1 version SoapMessage with scheme namespace
       
  2232     //      => Security header should be created with given namespace.
       
  2233     pSoapMessage = CSenSoapMessage2::NewLC(*mContext,ESOAP11, KSecuritySchemeXmlNamespace);
       
  2234 
       
  2235     pAsXml = pSoapMessage->AsXmlL();
       
  2236     CleanupStack::PushL(pAsXml);
       
  2237     if(!( *pAsXml == KSoapMessage12 )) return KErrArgument;
       
  2238     CleanupStack::PopAndDestroy(pAsXml);
       
  2239 
       
  2240     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2241 
       
  2242     // 1.3) Test creating of SOAP 1.1 version SoapMessage with security namespace
       
  2243     //      => Security header should be created with given namespace.
       
  2244     pSoapMessage = CSenSoapMessage2::NewLC(*mContext,ESOAP11, KSecurityXmlNamespace);
       
  2245 
       
  2246     pAsXml = pSoapMessage->AsXmlL();
       
  2247     CleanupStack::PushL(pAsXml);
       
  2248     if(!( *pAsXml == KSoapMessage13 )) return KErrArgument;
       
  2249     CleanupStack::PopAndDestroy(pAsXml);
       
  2250 
       
  2251     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2252 
       
  2253     // 2.1) Test creating of SOAP 1.2 version SoapMessage with illegal namespace
       
  2254     //      => No security header should be added.
       
  2255     pSoapMessage = CSenSoapMessage2::NewLC(*mContext,ESOAP12, KIllegalNamespace);
       
  2256 
       
  2257     pAsXml = pSoapMessage->AsXmlL();
       
  2258     CleanupStack::PushL(pAsXml);
       
  2259     if(!( *pAsXml == KSoapMessage21 )) return KErrArgument;
       
  2260     CleanupStack::PopAndDestroy(pAsXml);
       
  2261 
       
  2262     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2263 
       
  2264     // 2.2) Test creating of SOAP 1.2 version SoapMessage with scheme namespace
       
  2265     //      => Security header should be created with given namespace.
       
  2266     pSoapMessage = CSenSoapMessage2::NewLC(*mContext,ESOAP12, KSecuritySchemeXmlNamespace);
       
  2267 
       
  2268     pAsXml = pSoapMessage->AsXmlL();
       
  2269     CleanupStack::PushL(pAsXml);
       
  2270     if(!( *pAsXml == KSoapMessage22 )) return KErrArgument;
       
  2271     CleanupStack::PopAndDestroy(pAsXml);
       
  2272 
       
  2273     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2274 
       
  2275     // 2.3) Test creating of SOAP 1.2 version SoapMessage with security namespace
       
  2276     //      => Security header should be created with given namespace.
       
  2277     pSoapMessage = CSenSoapMessage2::NewLC(*mContext,ESOAP12, KSecurityXmlNamespace);
       
  2278 
       
  2279     pAsXml = pSoapMessage->AsXmlL();
       
  2280     CleanupStack::PushL(pAsXml);
       
  2281     if(!( *pAsXml == KSoapMessage23 )) return KErrArgument;
       
  2282     CleanupStack::PopAndDestroy(pAsXml);
       
  2283 
       
  2284     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2285 
       
  2286     Teardown();
       
  2287     return KErrNone;    
       
  2288 	}
       
  2289 	
       
  2290  
       
  2291 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_TypeL( TTestResult& aResult )
       
  2292 	{
       
  2293 	SetupL();
       
  2294 	CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL();
       
  2295     CleanupStack::PushL(pSoapMessage);
       
  2296     
       
  2297     TL(MSenMessage::ESoapMessage2 == pSoapMessage->Type());
       
  2298     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2299     Teardown();
       
  2300     return KErrNone;    
       
  2301     
       
  2302 	}
       
  2303 
       
  2304 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_CloneL( TTestResult& aResult )
       
  2305 	{
       
  2306 	SetupL();
       
  2307 	TBool Flag;
       
  2308 	CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL();
       
  2309     CleanupStack::PushL(pSoapMessage);
       
  2310 
       
  2311 	CSenSoapMessage2* pClone = NULL;
       
  2312     pClone = 	(CSenSoapMessage2*)pSoapMessage->CloneL(); 
       
  2313     if(pClone != NULL)
       
  2314     	Flag = 1;
       
  2315     if(!(Flag)) return KErrArgument;
       
  2316     delete pClone;
       
  2317     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2318     Teardown();
       
  2319     return KErrNone;    
       
  2320 	}
       
  2321 	
       
  2322 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_Parse1L( TTestResult& aResult )
       
  2323     {
       
  2324 	SetupL();
       
  2325     _LIT8(KInputString,             "<S:Envelope \
       
  2326 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2327 <S:Header>\
       
  2328 <sb:Correlation xmlns:sb=\"urn:liberty:sb:2003-08\" \
       
  2329 messageID=\"URN:UUID:860949DC-134D-A989-E328-2FD7F20E31CE\" timestamp=\"2006-06-01T14:53:19Z\"/>\
       
  2330 <wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\"/>\
       
  2331 </S:Header>\
       
  2332 <S:Body>\
       
  2333 <sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"ANONYMOUS PLAIN CRAM-MD5\" authzID=\"testuser1\"/>\
       
  2334 </S:Body>\
       
  2335 </S:Envelope>");
       
  2336     _LIT8(KBodyAsString,     "\
       
  2337 <S:Body xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:sa=\"urn:liberty:sa:2004-04\">\
       
  2338 <sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"ANONYMOUS PLAIN CRAM-MD5\" authzID=\"testuser1\"/>\
       
  2339 </S:Body>");
       
  2340 
       
  2341     _LIT8(KEmptyBodyAsString,       "<S:Body/>");
       
  2342 
       
  2343     _LIT8(KEmptyBodyWithNsAsString, "<S:Body xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"/>");
       
  2344 
       
  2345     CSenParser* pParser = CSenParser::NewLC();
       
  2346     CSenSoapMessage2* pMessage = CSenSoapMessage2::NewL();
       
  2347     CleanupStack::PushL(pMessage);
       
  2348 
       
  2349 	pParser->ParseL(KInputString, *pMessage);
       
  2350 
       
  2351 	// 1) Check that parsed SoapEnvelope can be
       
  2352 	//    serialized correctly
       
  2353 	HBufC8* pAsXml = pMessage->AsXmlL();
       
  2354 	CleanupStack::PushL(pAsXml);
       
  2355 	if(!( *pAsXml == KInputString )) return KErrArgument;
       
  2356 	CleanupStack::PopAndDestroy(pAsXml);
       
  2357 
       
  2358 	// 2) Check that body can be detached from SoapEnvelope
       
  2359 	//    correctly.
       
  2360 	// Note: Following "BodyAsStringL()" call will detach
       
  2361 	//       Body from SoapEnvelope
       
  2362 	HBufC8* pBodyAsString = pMessage->BodyAsStringL();
       
  2363 	CleanupStack::PushL(pBodyAsString);
       
  2364 	if(!( *pBodyAsString == KBodyAsString )) return KErrArgument;
       
  2365 	CleanupStack::PopAndDestroy(pBodyAsString);
       
  2366 
       
  2367 	// 3) Check that body can be detached from SoapEnvelope
       
  2368 	//    twice
       
  2369 	//    In this case body does not have child elements.
       
  2370 	//    => Empty body should be returned.
       
  2371 	//       Note: Empty body should contain namespace
       
  2372 	//             declaration because body is detached
       
  2373 	pBodyAsString = pMessage->BodyAsStringL();
       
  2374 	CleanupStack::PushL(pBodyAsString);
       
  2375 	if(!( *pBodyAsString == KEmptyBodyWithNsAsString )) return KErrArgument;
       
  2376 	CleanupStack::PopAndDestroy(pBodyAsString);
       
  2377 
       
  2378 	// 4) Check that body was detached from SoapEnvelope
       
  2379 	//    correctly
       
  2380 	//    => Getting body again should result empty body to be returned.
       
  2381 	TXmlEngElement bodyElement = pMessage->BodyL();
       
  2382 	RSenDocument document = pMessage->AsDocumentL();
       
  2383 
       
  2384     TUint optionFlags = 0;
       
  2385     // Omit following declarations from the beginning of XML Document:
       
  2386     // <?xml version=\"1.0\...
       
  2387     //   encoding="..."
       
  2388     //   standalone="..."
       
  2389     // ?>
       
  2390     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  2391 
       
  2392     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2393     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  2394 
       
  2395     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2396     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  2397 
       
  2398     TXmlEngSerializationOptions options(optionFlags);
       
  2399 
       
  2400     RBuf8 asXml;
       
  2401     CleanupClosePushL(asXml);
       
  2402     document.SaveL(asXml, bodyElement, options);
       
  2403 
       
  2404     // Serielized body should be empty because "BodyAsStringL()"
       
  2405     // previously detached body.
       
  2406     if(!( asXml == KEmptyBodyAsString )) return KErrArgument;
       
  2407 
       
  2408     CleanupStack::PopAndDestroy(&asXml);
       
  2409 
       
  2410     CleanupStack::PopAndDestroy(pMessage);
       
  2411     CleanupStack::PopAndDestroy(pParser);
       
  2412     Teardown();
       
  2413     return KErrNone;    
       
  2414 	}
       
  2415 	
       
  2416 
       
  2417 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_SetSecurityHeaderLL( TTestResult& aResult )
       
  2418     {
       
  2419 	SetupL();
       
  2420     _LIT8(KSoapMessage11_1, "<S:Envelope \
       
  2421 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2422 <S:Header>\
       
  2423 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2424 <Credential/>\
       
  2425 </wsse:Security>\
       
  2426 </S:Header>\
       
  2427 <S:Body/>\
       
  2428 </S:Envelope>");
       
  2429 
       
  2430     _LIT8(KSoapMessage11_2, "<S:Envelope \
       
  2431 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2432 <S:Header>\
       
  2433 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/>\
       
  2434 </S:Header>\
       
  2435 <S:Body/>\
       
  2436 </S:Envelope>");
       
  2437 
       
  2438     _LIT8(KSoapMessage12_1, "<S:Envelope \
       
  2439 xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2440 <S:Header>\
       
  2441 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2442 <Credential/>\
       
  2443 </wsse:Security>\
       
  2444 </S:Header>\
       
  2445 <S:Body/>\
       
  2446 </S:Envelope>");
       
  2447 
       
  2448     _LIT8(KSoapMessage12_2, "<S:Envelope \
       
  2449 xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2450 <S:Header>\
       
  2451 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/>\
       
  2452 </S:Header>\
       
  2453 <S:Body/>\
       
  2454 </S:Envelope>");
       
  2455 
       
  2456     _LIT8(KCredential,      "<Credential/>");
       
  2457 
       
  2458     // 1) Soap 1.1 - Test setting of SecurityHeader WITH Credential
       
  2459     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL(ESOAP11);
       
  2460     CleanupStack::PushL(pSoapMessage);
       
  2461 
       
  2462     pSoapMessage->SetSecurityHeaderL(KCredential);
       
  2463 
       
  2464     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  2465     CleanupStack::PushL(pAsXml);
       
  2466     if(!( *pAsXml == KSoapMessage11_1 )) return KErrArgument;
       
  2467     CleanupStack::PopAndDestroy(pAsXml);
       
  2468 
       
  2469     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2470 
       
  2471     // 2) Soap 1.1 - Test setting of SecurityHeader WITHOUT Credential
       
  2472     pSoapMessage = CSenSoapMessage2::NewL(ESOAP11);
       
  2473     CleanupStack::PushL(pSoapMessage);
       
  2474 
       
  2475     pSoapMessage->SetSecurityHeaderL(KNullDesC8);
       
  2476 
       
  2477     pAsXml = pSoapMessage->AsXmlL();
       
  2478     CleanupStack::PushL(pAsXml);
       
  2479     if(!( *pAsXml == KSoapMessage11_2 )) return KErrArgument;
       
  2480     CleanupStack::PopAndDestroy(pAsXml);
       
  2481 
       
  2482     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2483 
       
  2484     // 3) Soap 1.2 - Test setting of SecurityHeader WITH Credential
       
  2485     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12);
       
  2486     CleanupStack::PushL(pSoapMessage);
       
  2487 
       
  2488     pSoapMessage->SetSecurityHeaderL(KCredential);
       
  2489 
       
  2490     pAsXml = pSoapMessage->AsXmlL();
       
  2491     CleanupStack::PushL(pAsXml);
       
  2492     if(!( *pAsXml == KSoapMessage12_1 )) return KErrArgument;
       
  2493     CleanupStack::PopAndDestroy(pAsXml);
       
  2494 
       
  2495     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2496 
       
  2497     // 4) Soap 1.2 - Test setting of SecurityHeader WITH Credential
       
  2498     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12);
       
  2499     CleanupStack::PushL(pSoapMessage);
       
  2500 
       
  2501     pSoapMessage->SetSecurityHeaderL(KNullDesC8);
       
  2502 
       
  2503     pAsXml = pSoapMessage->AsXmlL();
       
  2504     CleanupStack::PushL(pAsXml);
       
  2505     if(!( *pAsXml == KSoapMessage12_2 )) return KErrArgument;
       
  2506     CleanupStack::PopAndDestroy(pAsXml);
       
  2507 
       
  2508     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2509     Teardown();
       
  2510     return KErrNone;    
       
  2511 	}
       
  2512 
       
  2513 TInt CNewSoapClassesBCTest::MT_CSenSoapMessage2_AddSecurityTokenLL( TTestResult& aResult )
       
  2514     {
       
  2515 	SetupL();
       
  2516     _LIT8(KSoapMessage11_1, "<S:Envelope \
       
  2517 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2518 <S:Header>\
       
  2519 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2520 <SecurityToken/>\
       
  2521 </wsse:Security>\
       
  2522 </S:Header>\
       
  2523 <S:Body/>\
       
  2524 </S:Envelope>");
       
  2525 
       
  2526     _LIT8(KSoapMessage11_2, "<S:Envelope \
       
  2527 xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\
       
  2528 <S:Header>\
       
  2529 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2530 <SecurityToken/>\
       
  2531 <SecurityToken2/>\
       
  2532 </wsse:Security>\
       
  2533 </S:Header>\
       
  2534 <S:Body/>\
       
  2535 </S:Envelope>");
       
  2536 
       
  2537     _LIT8(KSoapMessage12_1, "<S:Envelope \
       
  2538 xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2539 <S:Header>\
       
  2540 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2541 <SecurityToken/>\
       
  2542 </wsse:Security>\
       
  2543 </S:Header>\
       
  2544 <S:Body/>\
       
  2545 </S:Envelope>");
       
  2546 
       
  2547     _LIT8(KSoapMessage12_2, "<S:Envelope \
       
  2548 xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\">\
       
  2549 <S:Header>\
       
  2550 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2551 <SecurityToken/>\
       
  2552 <SecurityToken2/>\
       
  2553 </wsse:Security>\
       
  2554 </S:Header>\
       
  2555 <S:Body/>\
       
  2556 </S:Envelope>");
       
  2557 
       
  2558     _LIT8(KSecurityToken,   "<SecurityToken/>");
       
  2559     _LIT8(KSecurityToken2,   "<SecurityToken2/>");
       
  2560 
       
  2561     // 1) Soap 1.1 - Test adding of SecurityToken
       
  2562     CSenSoapMessage2* pSoapMessage = CSenSoapMessage2::NewL(ESOAP11);
       
  2563     CleanupStack::PushL(pSoapMessage);
       
  2564 
       
  2565     pSoapMessage->AddSecurityTokenL(KSecurityToken);
       
  2566 
       
  2567     HBufC8* pAsXml = pSoapMessage->AsXmlL();
       
  2568     CleanupStack::PushL(pAsXml);
       
  2569     if(!( *pAsXml == KSoapMessage11_1 )) return KErrArgument;
       
  2570     CleanupStack::PopAndDestroy(pAsXml);
       
  2571 
       
  2572     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2573 
       
  2574     // 2) Soap 1.1 - Test adding of two SecurityTokens
       
  2575     pSoapMessage = CSenSoapMessage2::NewL(ESOAP11);
       
  2576     CleanupStack::PushL(pSoapMessage);
       
  2577 
       
  2578     pSoapMessage->AddSecurityTokenL(KSecurityToken);
       
  2579     pSoapMessage->AddSecurityTokenL(KSecurityToken2);
       
  2580 
       
  2581     pAsXml = pSoapMessage->AsXmlL();
       
  2582     CleanupStack::PushL(pAsXml);
       
  2583     if(!( *pAsXml == KSoapMessage11_2 )) return KErrArgument;
       
  2584     CleanupStack::PopAndDestroy(pAsXml);
       
  2585 
       
  2586     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2587 
       
  2588     // 3) Soap 1.2 - Test adding of SecurityToken
       
  2589     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12);
       
  2590     CleanupStack::PushL(pSoapMessage);
       
  2591 
       
  2592     pSoapMessage->AddSecurityTokenL(KSecurityToken);
       
  2593 
       
  2594     pAsXml = pSoapMessage->AsXmlL();
       
  2595     CleanupStack::PushL(pAsXml);
       
  2596     if(!( *pAsXml == KSoapMessage12_1 )) return KErrArgument;
       
  2597     CleanupStack::PopAndDestroy(pAsXml);
       
  2598 
       
  2599     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2600 
       
  2601     // 4) Soap 1.2 - Test adding of two SecurityTokens
       
  2602     pSoapMessage = CSenSoapMessage2::NewL(ESOAP12);
       
  2603     CleanupStack::PushL(pSoapMessage);
       
  2604 
       
  2605     pSoapMessage->AddSecurityTokenL(KSecurityToken);
       
  2606     pSoapMessage->AddSecurityTokenL(KSecurityToken2);
       
  2607 
       
  2608     pAsXml = pSoapMessage->AsXmlL();
       
  2609     CleanupStack::PushL(pAsXml);
       
  2610     if(!( *pAsXml == KSoapMessage12_2 )) return KErrArgument;
       
  2611     CleanupStack::PopAndDestroy(pAsXml);
       
  2612 
       
  2613     CleanupStack::PopAndDestroy(pSoapMessage);
       
  2614     Teardown();
       
  2615     return KErrNone;    
       
  2616 	}
       
  2617 
       
  2618 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLL( TTestResult& aResult )
       
  2619     {
       
  2620 	SetupL();
       
  2621     _LIT8(KRootElement,     "<RootElement>\
       
  2622 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/>\
       
  2623 </RootElement>");
       
  2624 
       
  2625     _LIT8(KSecurityHeader,  "\
       
  2626 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/>");
       
  2627 
       
  2628     _LIT8(KRootElementName, "RootElement");
       
  2629 
       
  2630 
       
  2631     RSenDocument document = RSenDocument::NewLC();
       
  2632     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  2633 
       
  2634     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewL(document,
       
  2635                                                                       rootElement);
       
  2636     CleanupStack::PushL(pWsSecHeader);
       
  2637 
       
  2638     TUint optionFlags = 0;
       
  2639     // Omit following declarations from the beginning of XML Document:
       
  2640     // <?xml version=\"1.0\...
       
  2641     //   encoding="..."
       
  2642     //   standalone="..."
       
  2643     // ?>
       
  2644     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  2645 
       
  2646     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2647     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  2648 
       
  2649     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2650     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  2651 
       
  2652     TXmlEngSerializationOptions options(optionFlags);
       
  2653 
       
  2654     RBuf8 asXml;
       
  2655     CleanupClosePushL(asXml);
       
  2656     document.SaveL(asXml, rootElement, options);
       
  2657 
       
  2658     // Serialized document should contain all the Fragment data as XML.
       
  2659     if(!( asXml == KRootElement )) return KErrArgument;
       
  2660 
       
  2661     CleanupStack::PopAndDestroy(&asXml);
       
  2662 
       
  2663     HBufC8* pAsXml = pWsSecHeader->AsXmlL();
       
  2664     CleanupStack::PushL(pAsXml);
       
  2665     if(!( *pAsXml == KSecurityHeader )) return KErrArgument;
       
  2666     CleanupStack::PopAndDestroy(pAsXml);
       
  2667 
       
  2668     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  2669     CleanupStack::PopAndDestroy(1); // document
       
  2670     Teardown();
       
  2671     return KErrNone;    
       
  2672 	}
       
  2673 
       
  2674 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLCL( TTestResult& aResult )
       
  2675     {
       
  2676 	SetupL();
       
  2677     _LIT8(KRootElement,     "<RootElement>\
       
  2678 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/>\
       
  2679 </RootElement>");
       
  2680 
       
  2681     _LIT8(KSecurityHeader,  "\
       
  2682 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"/>");
       
  2683 
       
  2684     _LIT8(KRootElementName, "RootElement");
       
  2685 
       
  2686 
       
  2687     RSenDocument document = RSenDocument::NewLC();
       
  2688     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  2689 
       
  2690     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  2691                                                                        rootElement);
       
  2692     TUint optionFlags = 0;
       
  2693     // Omit following declarations from the beginning of XML Document:
       
  2694     // <?xml version=\"1.0\...
       
  2695     //   encoding="..."
       
  2696     //   standalone="..."
       
  2697     // ?>
       
  2698     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  2699 
       
  2700     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2701     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  2702 
       
  2703     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2704     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  2705 
       
  2706     TXmlEngSerializationOptions options(optionFlags);
       
  2707 
       
  2708     RBuf8 asXml;
       
  2709     CleanupClosePushL(asXml);
       
  2710     document.SaveL(asXml, rootElement, options);
       
  2711 
       
  2712     // Serialized document should contain all the Fragment data as XML.
       
  2713     if(!( asXml == KRootElement )) return KErrArgument;
       
  2714 
       
  2715     CleanupStack::PopAndDestroy(&asXml);
       
  2716 
       
  2717     HBufC8* pAsXml = pWsSecHeader->AsXmlL();
       
  2718     CleanupStack::PushL(pAsXml);
       
  2719     if(!( *pAsXml == KSecurityHeader )) return KErrArgument;
       
  2720     CleanupStack::PopAndDestroy(pAsXml);
       
  2721 
       
  2722     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  2723     CleanupStack::PopAndDestroy(1); // document
       
  2724     Teardown();
       
  2725     return KErrNone;    
       
  2726 	}
       
  2727 
       
  2728 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewL_1L( TTestResult& aResult )
       
  2729     {
       
  2730 	SetupL();
       
  2731     _LIT8(KRootElement,     "<RootElement>\
       
  2732 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2733 SecurityToken\
       
  2734 </wsse:Security>\
       
  2735 </RootElement>");
       
  2736 
       
  2737     _LIT8(KSecurityHeader,  "\
       
  2738 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2739 SecurityToken\
       
  2740 </wsse:Security>");
       
  2741 
       
  2742     _LIT8(KRootElementName, "RootElement");
       
  2743     _LIT8(KSecurityToken,   "SecurityToken");
       
  2744 
       
  2745 
       
  2746     RSenDocument document = RSenDocument::NewLC();
       
  2747     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  2748 
       
  2749     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewL(KSecurityToken,
       
  2750                                                                       document,
       
  2751                                                                       rootElement);
       
  2752     CleanupStack::PushL(pWsSecHeader);
       
  2753 
       
  2754     TUint optionFlags = 0;
       
  2755     // Omit following declarations from the beginning of XML Document:
       
  2756     // <?xml version=\"1.0\...
       
  2757     //   encoding="..."
       
  2758     //   standalone="..."
       
  2759     // ?>
       
  2760     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  2761 
       
  2762     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2763     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  2764 
       
  2765     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2766     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  2767 
       
  2768     TXmlEngSerializationOptions options(optionFlags);
       
  2769 
       
  2770     RBuf8 asXml;
       
  2771     CleanupClosePushL(asXml);
       
  2772     document.SaveL(asXml, rootElement, options);
       
  2773 
       
  2774     // Serialized document should contain all the Fragment data as XML.
       
  2775     if(!( asXml == KRootElement )) return KErrArgument;
       
  2776 
       
  2777     CleanupStack::PopAndDestroy(&asXml);
       
  2778 
       
  2779     HBufC8* pAsXml = pWsSecHeader->AsXmlL();
       
  2780     CleanupStack::PushL(pAsXml);
       
  2781     if(!( *pAsXml == KSecurityHeader )) return KErrArgument;
       
  2782     CleanupStack::PopAndDestroy(pAsXml);
       
  2783 
       
  2784     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  2785     CleanupStack::PopAndDestroy(1); // document
       
  2786     Teardown();
       
  2787     return KErrNone;    
       
  2788 	}
       
  2789 
       
  2790 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLC_1L( TTestResult& aResult )
       
  2791     {
       
  2792 	SetupL();
       
  2793     _LIT8(KRootElement,     "<RootElement>\
       
  2794 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2795 SecurityToken\
       
  2796 </wsse:Security>\
       
  2797 </RootElement>");
       
  2798 
       
  2799     _LIT8(KSecurityHeader,  "\
       
  2800 <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\
       
  2801 SecurityToken\
       
  2802 </wsse:Security>");
       
  2803 
       
  2804     _LIT8(KRootElementName, "RootElement");
       
  2805     _LIT8(KSecurityToken,   "SecurityToken");
       
  2806 
       
  2807 
       
  2808     RSenDocument document = RSenDocument::NewLC();
       
  2809     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  2810 
       
  2811     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(KSecurityToken,
       
  2812                                                                        document,
       
  2813                                                                        rootElement);
       
  2814     TUint optionFlags = 0;
       
  2815     // Omit following declarations from the beginning of XML Document:
       
  2816     // <?xml version=\"1.0\...
       
  2817     //   encoding="..."
       
  2818     //   standalone="..."
       
  2819     // ?>
       
  2820     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  2821 
       
  2822     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2823     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  2824 
       
  2825     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2826     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  2827 
       
  2828     TXmlEngSerializationOptions options(optionFlags);
       
  2829 
       
  2830     RBuf8 asXml;
       
  2831     CleanupClosePushL(asXml);
       
  2832     document.SaveL(asXml, rootElement, options);
       
  2833 
       
  2834     // Serialized document should contain all the Fragment data as XML.
       
  2835     if(!( asXml == KRootElement )) return KErrArgument;
       
  2836 
       
  2837     CleanupStack::PopAndDestroy(&asXml);
       
  2838 
       
  2839     HBufC8* pAsXml = pWsSecHeader->AsXmlL();
       
  2840     CleanupStack::PushL(pAsXml);
       
  2841     if(!( *pAsXml == KSecurityHeader )) return KErrArgument;
       
  2842     CleanupStack::PopAndDestroy(pAsXml);
       
  2843 
       
  2844     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  2845     CleanupStack::PopAndDestroy(1); // document
       
  2846     Teardown();
       
  2847     return KErrNone;    
       
  2848 	}
       
  2849 
       
  2850 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewL_2L( TTestResult& aResult )
       
  2851     {
       
  2852 	SetupL();
       
  2853     _LIT8(KRootElement,     "<RootElement>\
       
  2854 <wsse:Security xmlns:wsse=\"namespace\">\
       
  2855 SecurityToken\
       
  2856 </wsse:Security>\
       
  2857 </RootElement>");
       
  2858 
       
  2859     _LIT8(KSecurityHeader,  "\
       
  2860 <wsse:Security xmlns:wsse=\"namespace\">\
       
  2861 SecurityToken\
       
  2862 </wsse:Security>");
       
  2863 
       
  2864     _LIT8(KRootElementName, "RootElement");
       
  2865     _LIT8(KSecurityToken,   "SecurityToken");
       
  2866     _LIT8(KNamespace,       "namespace");
       
  2867 
       
  2868 
       
  2869     RSenDocument document = RSenDocument::NewLC();
       
  2870     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  2871 
       
  2872     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewL(KSecurityToken,
       
  2873                                                                       KNamespace,
       
  2874                                                                       document,
       
  2875                                                                       rootElement);
       
  2876     CleanupStack::PushL(pWsSecHeader);
       
  2877 
       
  2878     TUint optionFlags = 0;
       
  2879     // Omit following declarations from the beginning of XML Document:
       
  2880     // <?xml version=\"1.0\...
       
  2881     //   encoding="..."
       
  2882     //   standalone="..."
       
  2883     // ?>
       
  2884     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  2885 
       
  2886     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2887     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  2888 
       
  2889     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2890     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  2891 
       
  2892     TXmlEngSerializationOptions options(optionFlags);
       
  2893 
       
  2894     RBuf8 asXml;
       
  2895     CleanupClosePushL(asXml);
       
  2896     document.SaveL(asXml, rootElement, options);
       
  2897 
       
  2898     // Serialized document should contain all the Fragment data as XML.
       
  2899     if(!( asXml == KRootElement )) return KErrArgument;
       
  2900 
       
  2901     CleanupStack::PopAndDestroy(&asXml);
       
  2902 
       
  2903     HBufC8* pAsXml = pWsSecHeader->AsXmlL();
       
  2904     CleanupStack::PushL(pAsXml);
       
  2905     if(!( *pAsXml == KSecurityHeader )) return KErrArgument;
       
  2906     CleanupStack::PopAndDestroy(pAsXml);
       
  2907 
       
  2908     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  2909     CleanupStack::PopAndDestroy(1); // document
       
  2910     Teardown();
       
  2911     return KErrNone;    
       
  2912 	}
       
  2913 
       
  2914 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_NewLC_2L( TTestResult& aResult )
       
  2915     {
       
  2916 	SetupL();
       
  2917     _LIT8(KRootElement,     "<RootElement>\
       
  2918 <wsse:Security xmlns:wsse=\"namespace\">\
       
  2919 SecurityToken\
       
  2920 </wsse:Security>\
       
  2921 </RootElement>");
       
  2922 
       
  2923     _LIT8(KSecurityHeader,  "\
       
  2924 <wsse:Security xmlns:wsse=\"namespace\">\
       
  2925 SecurityToken\
       
  2926 </wsse:Security>");
       
  2927 
       
  2928     _LIT8(KRootElementName, "RootElement");
       
  2929     _LIT8(KSecurityToken,   "SecurityToken");
       
  2930     _LIT8(KNamespace,       "namespace");
       
  2931 
       
  2932     RSenDocument document = RSenDocument::NewLC();
       
  2933     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  2934 
       
  2935     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(KSecurityToken,
       
  2936                                                                        KNamespace,
       
  2937                                                                        document,
       
  2938                                                                        rootElement);
       
  2939     TUint optionFlags = 0;
       
  2940     // Omit following declarations from the beginning of XML Document:
       
  2941     // <?xml version=\"1.0\...
       
  2942     //   encoding="..."
       
  2943     //   standalone="..."
       
  2944     // ?>
       
  2945     optionFlags = optionFlags | TXmlEngSerializationOptions::KOptionOmitXMLDeclaration;
       
  2946 
       
  2947     // Allow encoding declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2948     //optionFlags = optionFlags | TSerializationOptions::KOptionEncoding;
       
  2949 
       
  2950     // Allow standalone declaration (if KOptionOmitXMLDeclaration is _not_ set)
       
  2951     //optionFlags = optionFlags | TSerializationOptions::KOptionStandalone;
       
  2952 
       
  2953     TXmlEngSerializationOptions options(optionFlags);
       
  2954 
       
  2955     RBuf8 asXml;
       
  2956     CleanupClosePushL(asXml);
       
  2957     document.SaveL(asXml, rootElement, options);
       
  2958 
       
  2959     // Serialized document should contain all the Fragment data as XML.
       
  2960     if(!( asXml == KRootElement )) return KErrArgument;
       
  2961 
       
  2962     CleanupStack::PopAndDestroy(&asXml);
       
  2963 
       
  2964     HBufC8* pAsXml = pWsSecHeader->AsXmlL();
       
  2965     CleanupStack::PushL(pAsXml);
       
  2966     if(!( *pAsXml == KSecurityHeader )) return KErrArgument;
       
  2967     CleanupStack::PopAndDestroy(pAsXml);
       
  2968 
       
  2969     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  2970     CleanupStack::PopAndDestroy(1); // document
       
  2971     Teardown();
       
  2972     return KErrNone;    
       
  2973 	}
       
  2974 
       
  2975 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenLL( TTestResult& aResult )
       
  2976     {
       
  2977 	SetupL();
       
  2978     _LIT8(KRootElementName, "RootElement");
       
  2979     _LIT8(KUserName,        "UserName");
       
  2980     _LIT8(KUserNameToken,   "<wsse:UsernameToken>\
       
  2981 <wsse:Username>UserName</wsse:Username>\
       
  2982 </wsse:UsernameToken>");
       
  2983 
       
  2984     RSenDocument document = RSenDocument::NewLC();
       
  2985     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  2986 
       
  2987     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  2988                                                                        rootElement);
       
  2989 
       
  2990     HBufC8* pUserNameToken = NULL;
       
  2991     pWsSecHeader->UsernameTokenL(KUserName, pUserNameToken);
       
  2992     CleanupStack::PushL(pUserNameToken);
       
  2993     if(!( *pUserNameToken == KUserNameToken )) return KErrArgument;
       
  2994     CleanupStack::PopAndDestroy(pUserNameToken);
       
  2995 
       
  2996     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  2997 
       
  2998     CleanupStack::PopAndDestroy(1); // document
       
  2999     Teardown();
       
  3000     return KErrNone;    
       
  3001 	}
       
  3002 
       
  3003 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_1L( TTestResult& aResult )
       
  3004     {
       
  3005 	SetupL();
       
  3006     _LIT8(KRootElementName,     "RootElement");
       
  3007 
       
  3008     _LIT8(KFakeEndPoint,        "http://www.fake_endpoint.com/");
       
  3009     _LIT8(KUsername,            "Username");
       
  3010     _LIT8(KPassword,            "Password");
       
  3011 
       
  3012     _LIT8(KUserNameToken,       "<wsse:UsernameToken>\
       
  3013 <wsse:Username>Username</wsse:Username>\
       
  3014 <wsse:Password>Password</wsse:Password>\
       
  3015 </wsse:UsernameToken>");
       
  3016 
       
  3017     _LIT8(KUserNameTokenDigest, "<wsse:UsernameToken>\
       
  3018 <wsse:Username>Username</wsse:Username>\
       
  3019 <wsse:Password Type=\"wsse:PasswordDigest\">Password</wsse:Password>\
       
  3020 </wsse:UsernameToken>");
       
  3021 
       
  3022     RSenDocument document = RSenDocument::NewLC();
       
  3023     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3024 
       
  3025     CSenIdentityProvider* pIdP = CSenIdentityProvider::NewLC(KFakeEndPoint());
       
  3026     pIdP->SetUserInfoL(KUsername, KNullDesC8, KPassword);
       
  3027 
       
  3028     // 1) Test using CSenWsSecurityHeader2::EText
       
  3029     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3030                                                                        rootElement);
       
  3031 
       
  3032     HBufC8* pUserNameToken = pWsSecHeader->UsernameTokenL(*pIdP, CSenWsSecurityHeader2::EText);
       
  3033     CleanupStack::PushL(pUserNameToken);
       
  3034     if(!( *pUserNameToken == KUserNameToken )) return KErrArgument;
       
  3035     CleanupStack::PopAndDestroy(pUserNameToken);
       
  3036 
       
  3037     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3038 
       
  3039     // 2) Test using CSenWsSecurityHeader2::EDigest
       
  3040     pWsSecHeader = CSenWsSecurityHeader2::NewLC(document, rootElement);
       
  3041 
       
  3042     pUserNameToken = pWsSecHeader->UsernameTokenL(*pIdP, CSenWsSecurityHeader2::EDigest);
       
  3043     CleanupStack::PushL(pUserNameToken);
       
  3044     if(!( *pUserNameToken == KUserNameTokenDigest )) return KErrArgument;
       
  3045     CleanupStack::PopAndDestroy(pUserNameToken);
       
  3046 
       
  3047     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3048 
       
  3049     CleanupStack::PopAndDestroy(pIdP);
       
  3050 
       
  3051     CleanupStack::PopAndDestroy(1); // document
       
  3052     Teardown();
       
  3053     return KErrNone;    
       
  3054 	}
       
  3055 
       
  3056 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_2L( TTestResult& aResult )
       
  3057     {
       
  3058 	SetupL();
       
  3059     _LIT8(KRootElementName, "RootElement");
       
  3060     _LIT8(KUserName,        "UserName");
       
  3061     _LIT8(KPassword,        "Password");
       
  3062     _LIT8(KUserNameToken,   "<wsse:UsernameToken>\
       
  3063 <wsse:Username>UserName</wsse:Username>\
       
  3064 <wsse:Password>Password</wsse:Password>\
       
  3065 </wsse:UsernameToken>");
       
  3066 
       
  3067     RSenDocument document = RSenDocument::NewLC();
       
  3068     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3069 
       
  3070     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3071                                                                        rootElement);
       
  3072 
       
  3073     HBufC8* pUserNameToken = NULL;
       
  3074     pWsSecHeader->UsernameTokenL(KUserName, KPassword, pUserNameToken);
       
  3075     CleanupStack::PushL(pUserNameToken);
       
  3076     if(!( *pUserNameToken == KUserNameToken )) return KErrArgument;
       
  3077     CleanupStack::PopAndDestroy(pUserNameToken);
       
  3078 
       
  3079     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3080 
       
  3081     CleanupStack::PopAndDestroy(1); // document
       
  3082     Teardown();
       
  3083     return KErrNone;    
       
  3084 	}
       
  3085 
       
  3086 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_3L( TTestResult& aResult )
       
  3087     {
       
  3088 	SetupL();
       
  3089     _LIT8(KRootElementName,     "RootElement");
       
  3090     _LIT8(KUserName,            "UserName");
       
  3091     _LIT8(KPassword,            "Password");
       
  3092     _LIT8(KUserNameToken,       "<wsse:UsernameToken>\
       
  3093 <wsse:Username>UserName</wsse:Username>\
       
  3094 <wsse:Password>Password</wsse:Password>\
       
  3095 </wsse:UsernameToken>");
       
  3096 
       
  3097     _LIT8(KUserNameTokenDigest, "<wsse:UsernameToken>\
       
  3098 <wsse:Username>UserName</wsse:Username>\
       
  3099 <wsse:Password Type=\"wsse:PasswordDigest\">Password</wsse:Password>\
       
  3100 </wsse:UsernameToken>");
       
  3101 
       
  3102     RSenDocument document = RSenDocument::NewLC();
       
  3103     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3104 
       
  3105     // 1) Test using CSenWsSecurityHeader2::EText
       
  3106     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3107                                                                        rootElement);
       
  3108 
       
  3109     HBufC8* pUserNameToken = NULL;
       
  3110     pWsSecHeader->UsernameTokenL(KUserName, KPassword, CSenWsSecurityHeader2::EText,
       
  3111                                  pUserNameToken);
       
  3112     CleanupStack::PushL(pUserNameToken);
       
  3113     if(!( *pUserNameToken == KUserNameToken )) return KErrArgument;
       
  3114     CleanupStack::PopAndDestroy(pUserNameToken);
       
  3115 
       
  3116     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3117 
       
  3118     // 2) Test using CSenWsSecurityHeader2::EDigest
       
  3119     pWsSecHeader = CSenWsSecurityHeader2::NewLC(document, rootElement);
       
  3120 
       
  3121     pUserNameToken = NULL;
       
  3122     pWsSecHeader->UsernameTokenL(KUserName, KPassword, CSenWsSecurityHeader2::EDigest,
       
  3123                                  pUserNameToken);
       
  3124     CleanupStack::PushL(pUserNameToken);
       
  3125     if(!( *pUserNameToken == KUserNameTokenDigest )) return KErrArgument;
       
  3126     CleanupStack::PopAndDestroy(pUserNameToken);
       
  3127 
       
  3128     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3129 
       
  3130     CleanupStack::PopAndDestroy(1); // document
       
  3131     Teardown();
       
  3132     return KErrNone;    
       
  3133 	}
       
  3134 
       
  3135 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_UsernameTokenL_4L( TTestResult& aResult )
       
  3136     {
       
  3137 	SetupL();
       
  3138     _LIT8(KRootElementName, "RootElement");
       
  3139 
       
  3140     _LIT8(KFakeEndPoint,    "http://www.fake_endpoint.com/");
       
  3141     _LIT8(KUsername,        "Username");
       
  3142     _LIT8(KPassword,        "Password");
       
  3143 
       
  3144     _LIT8(KUserNameToken,   "<wsse:UsernameToken>\
       
  3145 <wsse:Username>Username</wsse:Username>\
       
  3146 </wsse:UsernameToken>");
       
  3147 
       
  3148     RSenDocument document = RSenDocument::NewLC();
       
  3149     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3150 
       
  3151     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3152                                                                        rootElement);
       
  3153 
       
  3154     CSenIdentityProvider* pIdP = CSenIdentityProvider::NewLC(KFakeEndPoint());
       
  3155     pIdP->SetUserInfoL(KUsername, KNullDesC8, KPassword);
       
  3156 
       
  3157     HBufC8* pUserNameToken = pWsSecHeader->UsernameTokenL(*pIdP);
       
  3158     CleanupStack::PushL(pUserNameToken);
       
  3159     if(!( *pUserNameToken == KUserNameToken )) return KErrArgument;
       
  3160     CleanupStack::PopAndDestroy(pUserNameToken);
       
  3161 
       
  3162     CleanupStack::PopAndDestroy(pIdP);
       
  3163 
       
  3164     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3165 
       
  3166     CleanupStack::PopAndDestroy(1); // document
       
  3167     Teardown();
       
  3168     return KErrNone;    
       
  3169 	}
       
  3170 
       
  3171 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_TimestampLL( TTestResult& aResult )
       
  3172     {
       
  3173 	SetupL();
       
  3174     _LIT8(KRootElementName, "RootElement");
       
  3175     _LIT8(KCreated,         "2001-09-13T08:42:00Z");
       
  3176     _LIT8(KExpires,         "2002-09-13T08:42:00Z");
       
  3177     _LIT8(KTimeStamp,       "\
       
  3178 <wsu:Timestamp xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\">\
       
  3179 <wsu:Created>2001-09-13T08:42:00Z</wsu:Created>\
       
  3180 <wsu:Expires>2002-09-13T08:42:00Z</wsu:Expires>\
       
  3181 </wsu:Timestamp>");
       
  3182 
       
  3183     RSenDocument document = RSenDocument::NewLC();
       
  3184     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3185 
       
  3186     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3187                                                                        rootElement);
       
  3188     HBufC8* pTimeStamp;
       
  3189     pWsSecHeader->TimestampL(KCreated, KExpires, pTimeStamp);
       
  3190     CleanupStack::PushL(pTimeStamp);
       
  3191     if(!( *pTimeStamp == KTimeStamp )) return KErrArgument;
       
  3192     CleanupStack::PopAndDestroy(pTimeStamp);
       
  3193 
       
  3194     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3195 
       
  3196     CleanupStack::PopAndDestroy(1); // document
       
  3197     Teardown();
       
  3198     return KErrNone;    
       
  3199 	}
       
  3200 
       
  3201 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_TimestampL_1L( TTestResult& aResult )
       
  3202     {
       
  3203 	SetupL();
       
  3204     _LIT8(KRootElementName, "RootElement");
       
  3205     _LIT8(KCreated,         "2001-09-13T08:42:00Z");
       
  3206     _LIT8(KTimeStamp,       "\
       
  3207 <wsu:Timestamp xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\">\
       
  3208 <wsu:Created>2001-09-13T08:42:00Z</wsu:Created>\
       
  3209 </wsu:Timestamp>");
       
  3210 
       
  3211     RSenDocument document = RSenDocument::NewLC();
       
  3212     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3213 
       
  3214     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3215                                                                        rootElement);
       
  3216     HBufC8* pTimeStamp;
       
  3217     pWsSecHeader->TimestampL(KCreated, pTimeStamp);
       
  3218     CleanupStack::PushL(pTimeStamp);
       
  3219     if(!( *pTimeStamp == KTimeStamp )) return KErrArgument;
       
  3220     CleanupStack::PopAndDestroy(pTimeStamp);
       
  3221 
       
  3222     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3223 
       
  3224     CleanupStack::PopAndDestroy(1); // document
       
  3225     Teardown();
       
  3226     return KErrNone;    
       
  3227 	}
       
  3228 
       
  3229 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_XmlNsL( TTestResult& aResult )
       
  3230     {
       
  3231 	SetupL();
       
  3232     _LIT8(KRootElementName,     "RootElement");
       
  3233     _LIT8(KSecurityNamespace,   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
       
  3234 
       
  3235     RSenDocument document = RSenDocument::NewLC();
       
  3236     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3237 
       
  3238     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3239                                                                        rootElement);
       
  3240     TPtrC8 nameSpace = pWsSecHeader->XmlNs();
       
  3241     if(!( nameSpace == KSecurityNamespace )) return KErrArgument;
       
  3242 
       
  3243     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3244 
       
  3245     CleanupStack::PopAndDestroy(1); // document
       
  3246     Teardown();
       
  3247     return KErrNone;    
       
  3248 	}
       
  3249 
       
  3250 TInt CNewSoapClassesBCTest::MT_CSenWsSecurityHeader2_XmlNsPrefixL( TTestResult& aResult )
       
  3251     {
       
  3252 	SetupL();
       
  3253     _LIT8(KRootElementName,         "RootElement");
       
  3254     _LIT8(KSecurityNamespacePrefix, "wsse");
       
  3255 
       
  3256     RSenDocument document = RSenDocument::NewLC();
       
  3257     TXmlEngElement rootElement = document.CreateDocumentElementL(KRootElementName());
       
  3258 
       
  3259     CSenWsSecurityHeader2* pWsSecHeader = CSenWsSecurityHeader2::NewLC(document,
       
  3260                                                                        rootElement);
       
  3261     TPtrC8 prefix = pWsSecHeader->XmlNsPrefix();
       
  3262     if(!( prefix == KSecurityNamespacePrefix )) return KErrArgument;
       
  3263 
       
  3264     CleanupStack::PopAndDestroy(pWsSecHeader);
       
  3265 
       
  3266     CleanupStack::PopAndDestroy(1); // document
       
  3267     Teardown();
       
  3268     return KErrNone;    
       
  3269 	}
       
  3270 
       
  3271 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_Type( TTestResult& aResult )
       
  3272 	{
       
  3273 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3274 	TRAPD(res,pTest->Type());
       
  3275 	CleanupStack::PopAndDestroy(pTest);
       
  3276 	return res;    
       
  3277 	}
       
  3278 
       
  3279 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_Direction( TTestResult& aResult )
       
  3280 	{
       
  3281 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3282 	TRAPD(res,pTest->Direction());
       
  3283 	CleanupStack::PopAndDestroy(pTest);
       
  3284 	return res;    
       
  3285 	}
       
  3286 	
       
  3287 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_Context( TTestResult& aResult )
       
  3288 	{
       
  3289 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3290 	TRAPD(res,pTest->Context());
       
  3291 	CleanupStack::PopAndDestroy(pTest);
       
  3292 	return res;    
       
  3293 	}
       
  3294 
       
  3295 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_SetContext( TTestResult& aResult )
       
  3296 	{
       
  3297 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3298 	MSenMessageContext* apNotOwnedContext =NULL;
       
  3299 	TRAPD(res,pTest->SetContext(apNotOwnedContext));
       
  3300 	CleanupStack::PopAndDestroy(pTest);
       
  3301 	return res;    
       
  3302 	}
       
  3303 
       
  3304 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_Properties( TTestResult& aResult )
       
  3305 	{
       
  3306 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3307 	TRAPD(res,pTest->Properties());
       
  3308 	CleanupStack::PopAndDestroy(pTest);
       
  3309 	return res;    
       
  3310 	}
       
  3311 
       
  3312 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_SetProperties( TTestResult& aResult )
       
  3313 	{
       
  3314 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3315 	MSenProperties* apOwnedProperties = NULL;
       
  3316 	TRAPD(res,pTest->SetProperties(apOwnedProperties ));
       
  3317 	CleanupStack::PopAndDestroy(pTest);
       
  3318 	return res;    
       
  3319 	}
       
  3320 
       
  3321 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_IsSafeToCast( TTestResult& aResult )
       
  3322 	{
       
  3323 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3324 	TRAPD(res,pTest->IsSafeToCast(MSenMessage::ESoapEnvelope2));
       
  3325 	CleanupStack::PopAndDestroy(pTest);
       
  3326 	return res;    
       
  3327 	}
       
  3328 
       
  3329 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_TxnId( TTestResult& aResult )
       
  3330 	{
       
  3331 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3332 	TRAPD(res,pTest->TxnId());
       
  3333 	CleanupStack::PopAndDestroy(pTest);
       
  3334 	return res;    
       
  3335 	}
       
  3336 TInt CNewSoapClassesBCTest::MT_CTestMSenMessage_CloneL( TTestResult& aResult )
       
  3337 	{
       
  3338 	CTestMSenMessage* pTest = CTestMSenMessage::NewLC();
       
  3339 	TRAPD(res,pTest->CloneL());
       
  3340 	CleanupStack::PopAndDestroy(pTest);
       
  3341 	return res;    
       
  3342 	}
       
  3343 
       
  3344 
       
  3345 /*
       
  3346 
       
  3347 
       
  3348 	SetupL();
       
  3349     _LIT8(KSenSoapEnvelopeXmlns,               "http://schemas.xmlsoap.org/soap/envelope/");
       
  3350     _LIT8(KSenSoap12EnvelopeXmlns,             "http://www.w3.org/2003/05/soap-envelope");
       
  3351 
       
  3352     _LIT8(KFaultElementLocalname,   "Fault");
       
  3353     _LIT8(KFaultNsPrefix,           "S");
       
  3354 
       
  3355     _LIT8(KFaultCodeLocalname,      "faultcode");
       
  3356 
       
  3357     _LIT8(KFault12CodeLocalname,    "Code");    // Soap 1.2
       
  3358     _LIT8(KFault12ValueLocalname,	"Value");	//	Soap1.2
       
  3359 
       
  3360     _LIT8(KFaultCodeValue,          "123");
       
  3361 
       
  3362 
       
  3363 TFileName path( _L("c:\\abc.txt"));
       
  3364 	RFile file;
       
  3365 	RFs fileSession;
       
  3366 	TInt err = fileSession.Connect(); 
       
  3367 
       
  3368 	err = file.Open(fileSession, path, EFileStreamText | EFileWrite);
       
  3369 	if ( err != KErrNone)
       
  3370 			err = file.Create(fileSession,path, EFileStreamText|EFileWrite|EFileShareAny);
       
  3371 	   
       
  3372 	TFileText filetext;
       
  3373 	filetext.Set( file );
       
  3374 
       
  3375     // 1) Fault code in Soap other than 1.2
       
  3376     //    Note: In SOAP older than 1.2 fault elements are _NOT_ namespace qualified
       
  3377     RSenDocument document = RSenDocument::NewLC();
       
  3378     
       
  3379     filetext.Write(_L("RSenDocument::NewL"));
       
  3380     
       
  3381 //    RSenDocument document1 = RSenDocument::NewL();
       
  3382     
       
  3383  //   filetext.Write(_L("RSenDocument::NewL"));
       
  3384     
       
  3385     TXmlEngElement faultElement = document.CreateDocumentElementL(KFaultElementLocalname(),
       
  3386                                                                   KSenSoapEnvelopeXmlns(),
       
  3387                                                                   KFaultNsPrefix());
       
  3388     
       
  3389     filetext.Write(_L("document.CreateDocumentElementL"));
       
  3390     
       
  3391     TXmlEngElement faultCodeElement = faultElement.AddNewElementL(KFaultCodeLocalname());
       
  3392     
       
  3393     filetext.Write(_L("faultElement.AddNewElementL"));
       
  3394     
       
  3395     faultCodeElement.AddTextL(KFaultCodeValue());
       
  3396 	
       
  3397 	filetext.Write(_L("faultCodeElement.AddTextL(KFaultCodeValue());"));
       
  3398     
       
  3399     CSenSoapFault2* pSoapFault = CSenSoapFault2::NewL(faultElement);//, document);
       
  3400     
       
  3401     filetext.Write(_L("CSenSoapFault2::NewL(faultElement, document);"));
       
  3402     
       
  3403     CleanupStack::PushL(pSoapFault);
       
  3404 	
       
  3405 	filetext.Write(_L("CleanupStack::PushL(pSoapFault);"));
       
  3406     
       
  3407     TPtrC8 faultCode = pSoapFault->FaultCode();
       
  3408     
       
  3409     filetext.Write(_L("TPtrC8 faultCode = pSoapFault->FaultCode();"));
       
  3410     
       
  3411     if(!( faultCode == KFaultCodeValue )) return KErrArgument;
       
  3412 	
       
  3413 	filetext.Write(_L("if(!( faultCode == KFaultCodeValue )) return KErrArgument;"));
       
  3414   
       
  3415     CleanupStack::PopAndDestroy(pSoapFault);
       
  3416   
       
  3417     filetext.Write(_L("CleanupStack::PopAndDestroy(pSoapFault);"));
       
  3418 
       
  3419 	CleanupStack::PopAndDestroy(1); // document
       
  3420 
       
  3421 	filetext.Write(_L("CleanupStack::PopAndDestroy(1); "));
       
  3422 
       
  3423    /* // 2) Fault code in Soap 1.2
       
  3424     //    Note: SOAP 1.2 faults are structured differently to SOAP 1.1.
       
  3425     //          In particular all fault elements are now namespace _qualified_,
       
  3426     //          many have been renamed and fault codes are now hierarchical
       
  3427     RSenDocument document2 = RSenDocument::NewLC();
       
  3428     TXmlEngElement faultElement2 = document2.CreateDocumentElementL(KFaultElementLocalname(),
       
  3429                                                                     KSenSoap12EnvelopeXmlns(),
       
  3430                                                                     KFaultNsPrefix());
       
  3431     TXmlEngElement faultCodeElement2 = faultElement2.AddNewElementSameNsL(KFault12CodeLocalname());
       
  3432     TXmlEngElement faultValueElement2 = faultCodeElement2.AddNewElementSameNsL(KFault12ValueLocalname());
       
  3433     faultValueElement2.AddTextL(KFaultCodeValue());
       
  3434 
       
  3435     CSenSoapFault2* pSoapFault2 = CSenSoapFault2::NewL(faultElement2, document2);
       
  3436     
       
  3437     CleanupStack::PushL(pSoapFault2);
       
  3438 
       
  3439     TPtrC8 faultCode2 = pSoapFault2->FaultCode();
       
  3440     if(!( faultCode2 == KFaultCodeValue )) return KErrArgument;
       
  3441 
       
  3442     CleanupStack::PopAndDestroy(pSoapFault2);
       
  3443     CleanupStack::PopAndDestroy(1); // document2
       
  3444     *//*
       
  3445     Teardown();
       
  3446     filetext.Write(_L("Teardown"));
       
  3447     return KErrNone;    
       
  3448 	*/
       
  3449 	
       
  3450 	
       
  3451 	
       
  3452 	
       
  3453 	//  End of File