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