--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapabilityQuery.cpp Fri Jun 11 13:36:18 2010 +0300
@@ -0,0 +1,1160 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+// CLASS HEADER
+#include "UT_CMusAvaCapabilityQuery.h"
+#include "musavasettingsimp.h"
+#include "musavaobserverimp.h"
+#include "musavaavailabilityobserver.h"
+#include "musavaavailabilityobserverimp.h"
+#include "muslogger.h"
+#include "mussesseioninformationapi.h"
+
+// EXTERNAL INCLUDES
+#include <EscapeUtils.h>
+#include <digia/eunit/eunitmacros.h>
+#include <sipstrings.h>
+#include <sipstrconsts.h>
+#include <stringpool.h>
+#include <sipservertransaction.h>
+#include <siptransactionbase.h>
+// INTERNAL INCLUDES
+#include "musavaoptionhandler.h"
+#include "musavacapabilitytesthelper.h"
+#include "CSipSseTestTls.h"
+#include "musavaCapabilityExchange.h"
+#include "musavacapabilitysipagent.h"
+#include "MusAvaCapabilityQuery.h"
+#include "musavaterminal.h"
+#include "sipprofile.h"
+#include "musavasharedobject.h"
+#include "mussettingskeys.h"
+#include "mussettings.h"
+#include "musavasip.h"
+#include "musavacapabilityqueryobserverimp.h"
+
+
+// CONSTRUCTION
+UT_CMusAvaCapabilityQuery* UT_CMusAvaCapabilityQuery::NewL()
+ {
+ UT_CMusAvaCapabilityQuery* self = UT_CMusAvaCapabilityQuery::NewLC();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+UT_CMusAvaCapabilityQuery* UT_CMusAvaCapabilityQuery::NewLC()
+ {
+ UT_CMusAvaCapabilityQuery* self = new( ELeave ) UT_CMusAvaCapabilityQuery();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+
+ return self;
+ }
+
+// Destructor (virtual by CBase)
+UT_CMusAvaCapabilityQuery::~UT_CMusAvaCapabilityQuery()
+ {
+ }
+
+// Default constructor
+UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery()
+ {
+ }
+
+// Second phase construct
+void UT_CMusAvaCapabilityQuery::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+// METHODS
+
+void UT_CMusAvaCapabilityQuery::SetupL( )
+ {
+ iSharedObject = CMusAvaSharedObject::GetSingletonL();
+ iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL();
+ iConcreteSettings = CMusAvaSettingsImp::NewL();
+ iOptionHandler = CMusAvaOptionHandler::NewL( *iAvailabilityObserver,
+ *iConcreteSettings );
+ iExchange = iOptionHandler->iCapabilityExchange;
+ iSipAgent = CMusAvaCapabilitySipAgent::NewL( *iExchange,
+ *iOptionHandler->iSharedObj,
+ iOptionHandler->iObserver );
+
+ iCapability = iOptionHandler->iSwisCapability;
+
+ MSIPConnectionObserver& connectionObserver =
+ iSharedObject->MusAvaSip().ConnectionObserver();
+
+ CSIP& sip = iSharedObject->MusAvaSip().Sip();
+ iSharedObject->MusAvaSip().CreateProfileL();
+ iProfile = iSharedObject->MusAvaSip().Profile();
+ if ( !iProfile->iArray )
+ {
+ iProfile->iArray = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ iProfile->iArray->AppendL( _L8("sip:user@domain.com") );
+ }
+ if ( !iProfile->iRegisteredContact )
+ {
+ iProfile->iRegisteredContact = KRegisteredContact().AllocL();
+ }
+
+ TUint32 iapId;
+ TInt err = iProfile->GetParameter( KSIPAccessPointId, iapId );
+ iSIPConnection = CSIPConnection::NewL( sip,
+ iapId,
+ connectionObserver );
+
+ iQuery = CMusAvaCapabilityQuery::NewL( *iCapability,
+ *iSIPConnection,
+ *iProfile,
+ KCapabilityTestSIPAddressUri_B );
+
+ CSipSseTestTls::OpenL();
+ iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
+ iOpVariantSetting = MultimediaSharingSettings::OperatorVariantSettingL();
+ }
+
+void UT_CMusAvaCapabilityQuery::Teardown( )
+ {
+ delete HelpFlags::iTestSipAddress;
+ HelpFlags::iTestSipAddress = NULL;
+ delete iQuery;
+ CMusAvaSharedObject::DeleteSingleton();
+ if ( iStorage )
+ {
+ iStorage->Clear();
+ CSipSseTestTls::Close();
+ iStorage = NULL;
+ }
+
+ delete iSipAgent;
+ delete iOptionHandler;
+ delete iConcreteSettings;
+ delete iAvailabilityObserver;
+ delete iSIPConnection;
+ PropertyHelper::Close();
+ }
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_NewLL( )
+ {
+ // 1.basic test and iQuery is constructed already. Check it
+ EUNIT_ASSERT( iQuery );
+
+ // 2.test for sipaddress is empty,should leave
+ delete iQuery;
+ iQuery = NULL; // clean the previous one
+ TRAPD( error, iQuery = CMusAvaCapabilityQuery::NewL( *iCapability,
+ *iSIPConnection,
+ *iProfile,
+ KNullDesC ) );
+ EUNIT_ASSERT( error == KErrNoMemory || error == KErrArgument );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !iQuery ); // iQuery Should be empty.
+
+ // 3.Contact user part tests, getting KSIPRegisteredContact leaves
+ delete iProfile->iRegisteredContact;
+ iProfile->iRegisteredContact = NULL;
+ TRAP( error, iQuery = CMusAvaCapabilityQuery::NewL( *iCapability,
+ *iSIPConnection,
+ *iProfile,
+ KCapabilityTestSIPAddressUri_B ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNotFound );
+ EUNIT_ASSERT( !iQuery ); // iQuery Should be empty.
+
+ // 4.Contact user part tests, CSIPContactHeader::DecodeL has less than 1.
+ iProfile->iRegisteredContact = KRegisteredContact().AllocL();
+ HelpFlags::iEmptyContactHeader = ETrue;
+ TRAP( error, iQuery = CMusAvaCapabilityQuery::NewL( *iCapability,
+ *iSIPConnection,
+ *iProfile,
+ KCapabilityTestSIPAddressUri_B ) );
+ HelpFlags::iEmptyContactHeader = EFalse;
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNotFound );
+ EUNIT_ASSERT( !iQuery ); // iQuery Should be empty.
+
+ // 5.Contact user part tests ,CSIPContactHeader::DecodeL has 1 contact
+ delete iQuery;
+ iQuery = NULL; // clean the previous one
+ delete iProfile->iRegisteredContact;
+ iProfile->iRegisteredContact = NULL;
+ iProfile->iRegisteredContact = KRegisteredContact().AllocL();
+
+ HelpFlags::iTestSipAddress = CSIPAddress::DecodeL( KRegisteredContact );
+ HelpFlags::iUseTestSipAddress = ETrue;
+
+ TRAP( error, iQuery = CMusAvaCapabilityQuery::NewL( *iCapability,
+ *iSIPConnection,
+ *iProfile,
+ KCapabilityTestSIPAddressUri_B ) );
+ HelpFlags::iUseTestSipAddress = EFalse;
+ if ( error == KErrNoMemory ) User::Leave( error );
+ delete HelpFlags::iTestSipAddress;
+ HelpFlags::iTestSipAddress = NULL;
+
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iQuery );
+
+ // 6.Contact user part tests ,CSIPContactHeader::DecodeL has 1 contact but
+ // sip address empty
+ delete iQuery;
+ iQuery = NULL; // clean the previous one
+
+ delete iProfile->iRegisteredContact;
+ iProfile->iRegisteredContact = NULL;
+ iProfile->iRegisteredContact = KRegisteredContact().AllocL();
+
+ HelpFlags::iUseTestSipAddress = ETrue;
+ TRAP(error,iQuery = CMusAvaCapabilityQuery::NewL( *iCapability,
+ *iSIPConnection,
+ *iProfile,
+ KCapabilityTestSIPAddressUri_B ));
+ HelpFlags::iUseTestSipAddress = EFalse;
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNotFound );
+ EUNIT_ASSERT( !iQuery ); // iQuery Should be empty.
+
+ }
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_ExecuteLL( )
+ {
+ /* includes testing of functions:
+ * Prepare(),
+ * DoCompletedL() case KMUSAVASIP200
+ * DoCompleted200OKL()
+ * ValidateCodecL()
+ * ValidateAttributesL()
+ * ValidateContactL(),
+ * Retrying()
+ * Capability()
+ * SetState()
+ * Terminal()
+ * ExecuteL()
+ * CompletedL()
+ * State()
+ * Result()
+ * AddAcceptContactHeaderL()
+ * AddContactHeaderL()
+ * ResetAndDestroyTrx()
+ * LocalAddress()
+ */
+
+ EUNIT_ASSERT( iExchange->Terminals().Count() == 1 );
+
+ CMusAvaTerminal& terminal = iQuery->Terminal();
+ EUNIT_ASSERT( terminal.iQueries == 1 );
+ EUNIT_ASSERT( terminal.iQuery == NULL );
+
+ EUNIT_ASSERT( iQuery->Terminal().Uri().Compare( KCapabilityTestSIPAddressUri8_B ) == 0 );
+
+ iQuery->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryPrepared );
+ TRAPD( error, iQuery->ExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error != KErrNone );
+
+ iQuery->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ iQuery->ExecuteL( );
+
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryExecuting );
+ EUNIT_ASSERT( !iQuery->iTimer );
+ EUNIT_ASSERT( iQuery->iTrx );
+
+ EUNIT_ASSERT( iStorage->iClientRequest->Method() ==
+ SIPStrings::StringF( SipStrConsts::EOptions ) );
+ EUNIT_ASSERT( iStorage->iClientRequest->MessageElements().Content().Length()
+ != 0 );
+ _LIT8(contentType,"application/sdp");
+ EUNIT_ASSERT(
+ iStorage->iClientRequest->MessageElements().ContentType() );
+ EUNIT_ASSERT(
+ iStorage->iClientRequest->MessageElements().UserHeaders().Count()
+ == 6 );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest, 0,
+ KCapabilityTestAcceptContactHeader );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest, 5,
+ KCapabilityTestContactHeader_A1Updated );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest, 3,
+ KCapabilityTestAcceptHeader );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+
+ // set response 200 OK FT
+ CapabilityTestHelper::SetResponseL( *iQuery->iTrx, KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ iQuery->CompletedL( *iQuery->iTrx );
+
+ MusSettingsKeys::TOperatorVariant op = MultimediaSharingSettings::OperatorVariantSettingL();
+ EUNIT_ASSERT( op == MusSettingsKeys::EStandard );
+
+ EUNIT_ASSERT( iQuery->iState ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT( !iQuery->Retrying() );
+ EUNIT_ASSERT( iQuery->iTimer == NULL );
+
+ EUNIT_ASSERT( iStorage->iClientRequest->Method() ==
+ SIPStrings::StringF( SipStrConsts::EOptions ) );
+
+ EUNIT_ASSERT( iStorage->iClientRequest->MessageElements().Content().Length()
+ > 0 );
+ EUNIT_ASSERT( iStorage->iClientRequest->MessageElements().ContentType() );
+ EUNIT_ASSERT( iStorage->iClientRequest->RemoteUri().Uri().UriDes().Compare(
+ KCapabilityTestSIPAddressUri8_B ) == 0);
+ EUNIT_ASSERT( iStorage->iClientRequest->MessageElements().UserHeaders().
+ Count() == 6 );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest,
+ 0,
+ KCapabilityTestAcceptContactHeader );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest,
+ 5,
+ KCapabilityTestContactHeader_A1Updated );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest, 3,
+ KCapabilityTestAcceptHeader );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusAvailable );
+
+
+ iQuery->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ TRAP( error, iQuery->ExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ iQuery->DoRetryL();
+ TRAP( error, iQuery->ExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+ iQuery->DoRetryL();
+
+ // set TerminalId for CMusAvaCapabilityExchange, terminal Id will be added to headers
+ CMusAvaCapabilityQueryObserverImp* capabQueryObserver =
+ new ( ELeave ) CMusAvaCapabilityQueryObserverImp();
+ CleanupStack::PushL( capabQueryObserver );
+ CMusAvaCapabilityExchange* exchange =
+ CMusAvaCapabilityExchange::NewL(
+ KCapabilityTestTerminalID_A,
+ *capabQueryObserver );
+ CleanupStack::PushL( exchange );
+ CMusAvaCapability* capability = CMusAvaCapability::NewL( *exchange );
+ CleanupStack::PushL( capability );
+
+ CMusAvaCapabilityQuery* query = CMusAvaCapabilityQuery::NewL( *capability,
+ *iSIPConnection,
+ *iProfile,
+ KCapabilityTestSIPAddressUri_B );
+ CleanupStack::PushL( query );
+
+ query->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ query->ExecuteL();
+ EUNIT_ASSERT_EQUALS( iStorage->iClientRequest->MessageElements().UserHeaders().Count(), 7 );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest, 6,
+ KCapabilityTestUserAgent_A );
+
+ CleanupStack::PopAndDestroy( query );
+ CleanupStack::PopAndDestroy( capability );
+ CleanupStack::PopAndDestroy( exchange );
+ CleanupStack::PopAndDestroy( capabQueryObserver );
+ }
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_CanceledL( )
+ {
+
+ iQuery->ExecuteL( );
+
+
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryExecuting );
+
+ // set response 200 OK FT
+ CapabilityTestHelper::SetResponseL( *iQuery->iTrx,
+ KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+
+ iQuery->Canceled( *iQuery->iTrx );
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT( iQuery->Result() == KCapabilityCapabilitesNotFound );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaOptionNotAvailable );
+
+
+ // give different response than iTrx
+ iQuery->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ iQuery->ExecuteL();
+ CSIPClientTransaction* cliTransaction = NULL;
+ cliTransaction = CSIPClientTransaction::NewL( iQuery->iTrx->Type() );
+ CleanupStack::PushL( cliTransaction );
+
+ CapabilityTestHelper::SetResponseL( *cliTransaction,
+ KMUSAVASIPForbidden,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ iQuery->Canceled( *cliTransaction );
+ EUNIT_ASSERT_NOT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ iQuery->ResetAndDestroyTrx();
+ iQuery->Canceled( *cliTransaction );
+ EUNIT_ASSERT_NOT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ CleanupStack::PopAndDestroy( cliTransaction );
+ }
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_CompletedLL( )
+ {
+ TRAPD( error, RProperty::Define(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSForbidden,
+ RProperty::EInt,
+ 0 ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ TRAP( error, RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSForbidden,
+ ( TInt ) NMusSessionInformationApi::EMUSAllowed ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ // Test for forbidden response (403)
+
+ //Cingular specific case && 403 Forbidden
+ MultimediaSharingSettings::SetOperatorVariantSettingL(
+ MusSettingsKeys::EOperatorSpecific );
+ iQuery->ExecuteL( );
+
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryExecuting );
+
+ // set response 200 OK FT
+ CapabilityTestHelper::SetResponseL( *iQuery->iTrx,
+ KMUSAVASIPForbidden,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+
+ iQuery->CompletedL( *iQuery->iTrx );
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT( iQuery->Result() == KCapabilityCapabilitiesForbidden );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaFailureCode );
+ // check if it is "forbidden"
+ TInt forbidden;
+ TRAP( error, RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSForbidden,
+ forbidden ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ EUNIT_ASSERT_EQUALS( NMusSessionInformationApi::EMUSForbidden, forbidden );
+ // set back the forbidden flag to allowed
+ TRAP( error, RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSForbidden,
+ ( TInt ) NMusSessionInformationApi::EMUSAllowed ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ MultimediaSharingSettings::SetOperatorVariantSettingL(
+ MusSettingsKeys::EStandard );
+
+ // give different response than iTrx
+ iQuery->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ iQuery->ExecuteL( );
+ CSIPClientTransaction* cliTransaction = NULL;
+ cliTransaction = CSIPClientTransaction::NewL( iQuery->iTrx->Type() );
+ CleanupStack::PushL( cliTransaction );
+
+ CapabilityTestHelper::SetResponseL( *cliTransaction,
+ KMUSAVASIPForbidden,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ iQuery->CompletedL( *cliTransaction );
+ EUNIT_ASSERT_NOT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ iQuery->ResetAndDestroyTrx();
+ iQuery->CompletedL( *cliTransaction );
+ EUNIT_ASSERT_NOT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ CleanupStack::PopAndDestroy( cliTransaction );
+
+ // set response 199
+ iQuery->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ iQuery->ExecuteL( );
+ CapabilityTestHelper::SetResponseL( *iQuery->iTrx,
+ KMUSAVASIP200-1,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+
+
+ iQuery->CompletedL( *iQuery->iTrx );
+ EUNIT_ASSERT_NOT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ iQuery->ResetAndDestroyTrx();
+
+ // set response <100
+ iQuery->SetState( CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ iQuery->ExecuteL( );
+ CapabilityTestHelper::SetResponseL( *iQuery->iTrx,
+ KMUSAVASIP200-150,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ iQuery->CompletedL( *iQuery->iTrx );
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ }
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_CompletedL1L( )
+ {
+ //Standard case && 403 Forbidden
+ iQuery->ExecuteL( );
+
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryExecuting );
+
+ // set response 200 OK FT
+ CapabilityTestHelper::SetResponseL( *iQuery->iTrx,
+ KMUSAVASIPForbidden,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+
+ iQuery->CompletedL( *iQuery->iTrx );
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT( iQuery->Result() == KCapabilityCapabilitesNotFound );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaOptionNotAvailable );
+
+ }
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_CompletedL2L( )
+ {
+ //Standard case
+ iQuery->ExecuteL( );
+
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryExecuting );
+
+ // set response 200 OK FT
+ CapabilityTestHelper::SetResponse2L( *iQuery->iTrx,
+ KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KPAssertedIdentity_B1,
+ KCapabilityTestSDP );
+
+ iQuery->CompletedL( *iQuery->iTrx );
+ EUNIT_ASSERT( iQuery->State() ==
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT( iQuery->Result() == KCapabilityCapabilitesReady );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusAvailable );
+ const MDesCArray& sipAddresses = iOptionHandler->iSettings.SipAddresses();
+ EUNIT_ASSERT( sipAddresses.MdcaCount() == 1);
+ EUNIT_ASSERT( sipAddresses.MdcaPoint( 0 ).Compare( KPAssertedIdentity_B_16() )
+ == KErrNone );
+ }
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_ValidateAndStoreCodecsLL()
+ {
+
+ // OK - H.263 codec
+ TBool ret = EFalse;
+ CSdpDocument* sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDP );
+ TRAPD( error, ret = iQuery->ValidateAndStoreCodecsL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // OK - H.264 codec
+ ret = EFalse;
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDP264 );
+ TRAP( error, ret = iQuery->ValidateAndStoreCodecsL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // OK - both H.263 and H.264 codec
+ ret = EFalse;
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDP264And263 );
+ TRAP( error, ret = iQuery->ValidateAndStoreCodecsL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // NOK - invalid codec
+ ret = ETrue;
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPWrongCodec );
+ TRAP( error, ret = iQuery->ValidateAndStoreCodecsL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+}
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_ValidateAttributesLL()
+ {
+
+ // set operator specific
+ MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EOperatorSpecific );
+
+ // operator specific OK
+ CSdpDocument* sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDP );
+ TBool ret = EFalse;
+ TRAPD( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // operator specific no application
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPNoApplication );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // operator specific wrong application
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPWrongApplication );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // operator specific no type
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPNoType );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // operator specific wrong type
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPWrongType );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // set standard
+ MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+
+ // OK
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDP );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // no application, good type
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPNoApplication );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // wrong application, good type
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPWrongApplication );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // no type, good application
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPNoType );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // wrong type, good application
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPWrongType );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // no application, no type
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPNoAppNoType );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // no application, wrong type
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPNoAppWrongType );
+ TRAP( error, ret = iQuery->ValidateAttributesL( *sdpContent ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( sdpContent );
+ }
+
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_ValidateContactLL()
+ {
+
+ // no contact header
+ CSIPClientTransaction* optionResp = CapabilityTestHelper::OptionsResponseL(
+ KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KNullDesC8,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ TBool ret = EFalse;
+ TRAPD( error, ret = iQuery->ValidateContactL( *optionResp ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // valid contact header
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+
+ TRAP( error, ret = iQuery->ValidateContactL( *optionResp ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // false contact header
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeatureFalse,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ TRAP( error, ret = iQuery->ValidateContactL( *optionResp ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // wrong contact header
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilityTestDataFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ TRAP( error, ret = iQuery->ValidateContactL( *optionResp ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ CleanupStack::PopAndDestroy( optionResp );
+ }
+
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_PrepareL()
+ {
+ RPointerArray<CSIPHeaderBase> headers;
+ CleanupClosePushL(headers);
+
+ iQuery->Prepare( headers );
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryPrepared );
+
+ iQuery->DoRetryL();
+
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ iQuery->Prepare( headers );
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ iQuery->DoRetryL();
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+
+ CleanupStack::PopAndDestroy( &headers );
+ }
+
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_DoCompletedLL()
+ {
+
+ // response elements are NULL
+ CSIPClientTransaction* optionResp = NULL;
+ optionResp = CapabilityTestHelper::OptionsResponseL(
+ KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KNullDesC8,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ optionResp->SetResponseElements( NULL );
+
+ TRAPD( error, iQuery->DoCompletedL( *optionResp ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrGeneral );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // status code KMUSAVASIPNotImplemented
+ optionResp = CapabilityTestHelper::OptionsResponseL(
+ KMUSAVASIPNotImplemented,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KNullDesC8,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompletedL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesReady );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // status code KMUSAVASIPTemporarilyUnavailable
+ optionResp = CapabilityTestHelper::OptionsResponseL(
+ KMUSAVASIPTemporarilyUnavailable,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KNullDesC8,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompletedL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCreated );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityQueryNotReady );
+ TRAP( error, iQuery->DoRetryL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // status code KMUSAVASIPServerInternalError
+ optionResp = CapabilityTestHelper::OptionsResponseL(
+ KMUSAVASIPServerInternalError,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KNullDesC8,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ TRAP( error, iQuery->DoCompletedL( *optionResp ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ }
+
+
+void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_DoCompleted200OKLL()
+ {
+
+ // no content
+ CSIPClientTransaction* optionResp = CapabilityTestHelper::OptionsResponseL(
+ KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KNullDesC8 );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(), CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+ CleanupStack::PopAndDestroy( optionResp );
+
+
+ // wrong content type header
+ optionResp =
+ CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+
+ const TDesC8& sdp = KCapabilityTestSDP;
+ HBufC8* content = NULL;
+ content = sdp.AllocL();
+ CleanupStack::PushL( content );
+ const CSIPResponseElements* response = optionResp->ResponseElements();
+ CSIPMessageElements& message =
+ CONST_CAST(CSIPResponseElements*, response)->MessageElements();
+
+ CSIPContentTypeHeader* contentTypeHeader = CSIPContentTypeHeader::NewLC(
+ KMUSAVASIPMediaTypeApplication,
+ KMUSAVASIPParamFalse );
+
+ message.SetContentL( content, contentTypeHeader );
+ CleanupStack::Pop( contentTypeHeader );
+ CleanupStack::Pop( content );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+
+ content = sdp.AllocL();
+ CleanupStack::PushL( content );
+ contentTypeHeader = CSIPContentTypeHeader::NewLC( KMUSAVASIPParamFalse,
+ KMUSAVASIPMediaSubTypeSDP );
+ message.SetContentL( content, contentTypeHeader );
+ CleanupStack::Pop( contentTypeHeader );
+ CleanupStack::Pop( content );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+
+ CleanupStack::PopAndDestroy( optionResp );
+
+
+ // wrong codec
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDPWrongCodec );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // set standard
+ MultimediaSharingSettings::SetOperatorVariantSettingL(
+ MusSettingsKeys::EStandard );
+
+ // wrong attribute (no application, no type ), wrong feature tag
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeatureFalse,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDPNoAppNoType );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+ CleanupStack::PopAndDestroy( optionResp );
+
+
+ // good attribute, wrong feature tag => KCapabilityCapabilitesReady
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeatureFalse,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+ CleanupStack::PopAndDestroy( optionResp );
+
+ // wrong attribute (no application, no type ), good feature tag => KCapabilityCapabilitesReady
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDPNoAppNoType );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesReady );
+ CleanupStack::PopAndDestroy( optionResp );
+
+
+
+ // set operator specific
+ MultimediaSharingSettings::SetOperatorVariantSettingL(
+ MusSettingsKeys::EOperatorSpecific );
+
+ // operator specific, wrong attribute (no application, no type )
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeature,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDPNoAppNoType );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+ CleanupStack::PopAndDestroy( optionResp );
+
+
+ // operator specific, wrong feature tag
+ optionResp = CapabilityTestHelper::OptionsResponseL( KMUSAVASIP200,
+ SipStrConsts::EPhraseOk,
+ KCapabilityTestAddress_B,
+ KCapabilitySwisFeatureFalse,
+ KCapabilityTestTerminalID_B,
+ KPAssertedIdentity_B,
+ KCapabilityTestSDP );
+ CleanupStack::PushL( optionResp );
+ iQuery->DoCompleted200OKL( *optionResp );
+ EUNIT_ASSERT_EQUALS( iQuery->State(),
+ CMusAvaCapabilityQueryBase::ECapabilityQueryCompleted );
+ EUNIT_ASSERT_EQUALS( iQuery->Result(), KCapabilityCapabilitesNotFound );
+ CleanupStack::PopAndDestroy( optionResp );
+
+
+ }
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusAvaCapabilityQuery,
+ "CMusAvaCapabilityQuery",
+ "UNIT" )
+
+EUNIT_TEST(
+ "NewL - test ",
+ "CMusAvaCapabilityQuery",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_NewLL, Teardown)
+
+EUNIT_TEST(
+ "ExecuteL - test ",
+ "CMusAvaCapabilityQuery",
+ "ExecuteL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_ExecuteLL, Teardown)
+
+EUNIT_TEST(
+ "Canceled - test ",
+ "CMusAvaCapabilityQuery",
+ "Canceled",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_CanceledL, Teardown)
+
+EUNIT_TEST(
+ "CompletedL - test ",
+ "CMusAvaCapabilityQuery",
+ "CompletedL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_CompletedLL, Teardown)
+
+EUNIT_TEST(
+ "CompletedL1 - test ",
+ "CMusAvaCapabilityQuery",
+ "CompletedL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_CompletedL1L, Teardown)
+
+EUNIT_TEST(
+ "CompletedL2 - test ",
+ "CMusAvaCapabilityQuery",
+ "CompletedL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_CompletedL2L, Teardown)
+
+EUNIT_TEST(
+ "ValidateAndStoreCodecsL - test ",
+ "CMusAvaCapabilityQuery",
+ "ValidateAndStoreCodecsL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_ValidateAndStoreCodecsLL, Teardown)
+
+EUNIT_TEST(
+ "ValidateAttributesL - test ",
+ "CMusAvaCapabilityQuery",
+ "ValidateAttributesL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_ValidateAttributesLL, Teardown)
+
+EUNIT_TEST(
+ "ValidateContactL - test ",
+ "CMusAvaCapabilityQuery",
+ "ValidateContactL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_ValidateContactLL, Teardown)
+
+EUNIT_TEST(
+ "Prepare - test ",
+ "CMusAvaCapabilityQuery",
+ "Prepare",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_PrepareL, Teardown)
+
+EUNIT_TEST(
+ "DoCompletedL - test ",
+ "CMusAvaCapabilityQuery",
+ "DoCompletedL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_DoCompletedLL, Teardown)
+
+EUNIT_TEST(
+ "DoCompleted200OKL - test ",
+ "CMusAvaCapabilityQuery",
+ "DoCompleted200OKL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaCapabilityQuery_DoCompleted200OKLL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE