mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaOptionHandler.cpp
changeset 0 f0cf47e981f9
child 32 73a1feb507fb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaOptionHandler.cpp	Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,401 @@
+/*
+* Copyright (c) 2004 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 "sipprofile.h"
+#include "UT_CMusAvaOptionHandler.h"
+
+//  EXTERNAL INCLUDES
+#include <digia/eunit/eunitmacros.h>
+#include <digia/eunit/eunitdecorators.h>
+#include <EscapeUtils.h>
+#include <sipstrings.h>
+#include <sipstrconsts.h>
+#include <stringpool.h>
+#include <sipservertransaction.h>
+#include <siptransactionbase.h>
+//  INTERNAL INCLUDES
+#include "musavaoptionhandler.h"
+#include "musavaavailabilityobserver.h"
+#include "musavaavailabilityobserverimp.h"
+#include "musavasettingsimp.h"
+#include "musavaobserverimp.h"
+#include "muslogger.h"
+#include "musavasharedobject.h"
+#include "mussettingskeys.h"
+#include "mussettings.h"
+#include "musavasip.h"
+#include "CSipSseTestTls.h"
+#include "musavacapabilitytesthelper.h"
+
+
+// CONSTRUCTION
+UT_CMusAvaOptionHandler* UT_CMusAvaOptionHandler::NewL()
+    {
+    UT_CMusAvaOptionHandler* self = UT_CMusAvaOptionHandler::NewLC(); 
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+UT_CMusAvaOptionHandler* UT_CMusAvaOptionHandler::NewLC()
+    {
+    UT_CMusAvaOptionHandler* self = new( ELeave ) UT_CMusAvaOptionHandler();
+    CleanupStack::PushL( self );
+	self->ConstructL(); 
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+UT_CMusAvaOptionHandler::~UT_CMusAvaOptionHandler()
+    {
+    }
+
+// Default constructor
+UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler()
+    {
+    }
+
+// Second phase construct
+void UT_CMusAvaOptionHandler::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+    }
+
+//  METHODS
+
+void UT_CMusAvaOptionHandler::SetupL(  )
+    {
+    iSharedObject = CMusAvaSharedObject::GetSingletonL();
+    iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL();
+    iConcreteSettings = CMusAvaSettingsImp::NewL();
+    iOptionHandler = CMusAvaOptionHandler::NewL( *iAvailabilityObserver,
+                                    *iConcreteSettings );
+
+    MSIPConnectionObserver& connectionObserver = 
+                            iSharedObject->MusAvaSip().ConnectionObserver();
+    CSIP& sip = iSharedObject->MusAvaSip().Sip();
+    CSipSseTestTls::OpenL();
+    iStorage = CSipSseTestTls::Storage();
+    iSharedObject->MusAvaSip().CreateProfileL();
+    iProfile = iSharedObject->MusAvaSip().Profile();
+    iSharedObject->MusAvaSip().ConnectionL( );
+
+    if ( !iProfile->iArray )
+        {
+        iProfile->iArray = new ( ELeave ) CDesC8ArrayFlat( 1 );
+        iProfile->iArray->AppendL( _L8("sip:user@domain.com") );
+        }
+    if ( !iProfile->iRegisteredContact )
+        {
+        iProfile->iRegisteredContact = KRegisteredContact().AllocL();
+        }
+
+    MultimediaSharingSettings::SetCapabilityQuerySettingL(
+                                                MusSettingsKeys::ESequential );
+    } 
+
+void UT_CMusAvaOptionHandler::Teardown(  )
+    {
+    CMusAvaSharedObject::DeleteSingleton();
+    delete iAvailabilityObserver;
+    delete iConcreteSettings;
+    if ( iStorage )
+        {
+        iStorage->Clear();
+        CSipSseTestTls::Close();
+        iStorage = NULL;
+        }
+    delete iOptionHandler;
+    }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_NewLL(  )
+    {
+    EUNIT_ASSERT( iOptionHandler );
+    EUNIT_ASSERT( iOptionHandler->State() == 
+                            MMusAvaObserver::EMusAvaStatusNotExecuted );
+    }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_DoExecuteLL()
+    {   
+    // test for B-party && Cingular variant
+    iOptionHandler->iSettings.SetCallDirection( 2 );
+    MultimediaSharingSettings::SetOperatorVariantSettingL( 
+                                        MusSettingsKeys::EOperatorSpecific );
+    iOptionHandler->DoExecuteL();
+    EUNIT_ASSERT( iOptionHandler->State() ==  
+                            MMusAvaObserver::EMusAvaStatusOptionsNotSent ); 
+    iOptionHandler->iSettings.SetCallDirection( 1 );
+    MultimediaSharingSettings::SetOperatorVariantSettingL( 
+                                        MusSettingsKeys::EStandard );
+                            
+    // usual case    
+    TBufC16<16> str(KCapabilityTestSIPAddressUri_B);
+    HBufC16* ptr;
+    ptr = str.AllocLC(); 
+    CDesCArrayFlat* sipAddress = new( ELeave ) CDesCArrayFlat( 1 );
+    CleanupStack::PushL( sipAddress );
+    sipAddress->AppendL( *ptr );
+    iOptionHandler->iSettings.SetSipAddressesL( *sipAddress );
+    sipAddress->Reset();
+    CleanupStack::PopAndDestroy( sipAddress );
+    CleanupStack::PopAndDestroy(); //ptr   
+    
+    MultimediaSharingSettings::SetCapabilityQuerySettingL(
+                                                MusSettingsKeys::ESequential );
+    EUNIT_ASSERT( iSharedObject->MusAvaSip().CreateProfileL() == ETrue );
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    TRAPD( error, iOptionHandler->DoExecuteL() );
+    TInt count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    EUNIT_ASSERT( error == KErrNoMemory || error == KErrNone );
+    if ( error == KErrNoMemory ) User::Leave( error );
+        
+    if ( count > 0 )
+        {
+        EUNIT_ASSERT( iOptionHandler->State() ==  
+                            MMusAvaObserver::EMusAvaOptionNotAvailable ); 
+        }
+    else
+        {
+        EUNIT_ASSERT( iOptionHandler->State() ==  
+                            MMusAvaObserver::EMusAvaStatusOptionsSent ); 
+    
+        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 );
+        }
+
+    // when needed sip profile and not registered yet. means sip connection is still
+    // null
+    MultimediaSharingSettings::SetCapabilityQuerySettingL(
+                                                MusSettingsKeys::ESequential );
+    EUNIT_ASSERT( iSharedObject->MusAvaSip().CreateProfileL() == ETrue );
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    iSharedObject->MusAvaSip().ConnectionL(EFalse);
+    
+    delete iSharedObject->MusAvaSip().iSipConnection;
+    iSharedObject->MusAvaSip().iSipConnection = NULL;
+    
+    iOptionHandler->SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+    
+    iOptionHandler->DoExecuteL();
+    EUNIT_ASSERT( iOptionHandler->State() ==  
+                            MMusAvaObserver::EMusAvaStatusNotExecuted );
+    }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_NameL()
+    {
+     EUNIT_ASSERT( iOptionHandler->Name() == 
+                            MMusAvaObserver::EMusAvaOptionHandler );
+    }
+  
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_StatusL()
+    {
+    EUNIT_ASSERT( iOptionHandler->State() == 
+                            MMusAvaObserver::EMusAvaStatusNotExecuted );
+    }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_StopL()
+    {
+    iOptionHandler->Stop();
+    }
+    
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_CapabilitiesResolvedL()
+    {
+    _LIT( KSipAddress ,   "b@foobar.com" );
+    _LIT( KSipAddressA ,   "a@foobar.com" );
+    _LIT( KEmpty, "" );
+    
+    EUNIT_ASSERT( iOptionHandler->State() == 
+                            MMusAvaObserver::EMusAvaStatusNotExecuted );
+	iOptionHandler->CapabilitiesResolvedL( KEmpty );
+	EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount() == 0 );
+    EUNIT_ASSERT( iOptionHandler->State() == 
+                            MMusAvaObserver::EMusAvaStatusNotExecuted );
+	
+    iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusNotExecuted;
+	iOptionHandler->CapabilitiesResolvedL( KSipAddress );
+    EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaPoint( 0 ).
+        Compare( KSipAddress() ) == KErrNone ); 
+    EUNIT_ASSERT( iOptionHandler->State() == 
+                            MMusAvaObserver::EMusAvaStatusNotExecuted );
+        
+    iOptionHandler->CapabilitiesResolvedL( KSipAddressA );    
+    EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaPoint( 0 ).
+        Compare( KSipAddressA() ) == KErrNone ); 
+                
+    EUNIT_ASSERT( iOptionHandler->State() == 
+                            MMusAvaObserver::EMusAvaStatusNotExecuted );
+    }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_CapabilitiesResolvedForCingularL()
+    {
+    EUNIT_ASSERT( iOptionHandler->CapabilitiesResolvedForCingular() == EFalse );
+    iOptionHandler->SetCapabilitiesResolvedForCingular();
+    EUNIT_ASSERT( iOptionHandler->CapabilitiesResolvedForCingular() == ETrue );
+    }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_SipHeadersL()
+    {    
+    CDesCArrayFlat* headers = new( ELeave ) CDesCArrayFlat( 1 );    
+    CleanupStack::PushL(headers);
+    headers->AppendL(_L("sip:test1@10.21.32.51"));
+    iOptionHandler->SipHeadersL(*headers,SipStrConsts::EToHeader);    
+    EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==1 );
+
+    _LIT( KPAssertedIdentityTelNumber, "+4455667788");
+    headers->Reset();
+    headers->AppendL(KPAssertedIdentity_B_16);
+    headers->AppendL(KPAssertedIdentity_B1_16);
+    iOptionHandler->SipHeadersL(*headers,SipStrConsts::EToHeader);    
+    EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==1 );
+    EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaPoint( 0 ).Compare( 
+        KPAssertedIdentity_B_16() ) == KErrNone );
+    EUNIT_ASSERT( iOptionHandler->iSettings.TelNumber().Compare( 
+        KPAssertedIdentityTelNumber ) == 0 );
+
+    headers->Reset();
+    iOptionHandler->SipHeadersL(*headers,SipStrConsts::EToHeader);            
+    EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==0 );
+
+    headers->Reset();
+    headers->AppendL(_L("sip:test1@10.21.32.51"));
+    iOptionHandler->SipHeadersL(*headers,SipStrConsts::EFromHeader);        
+    EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==0 );
+
+    CleanupStack::PopAndDestroy(headers);
+    
+    
+    }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_VideoCodecsResolvedLL()
+    {
+    _LIT16( KVideoCodec , "H.264" );
+    TBufC16<16> str(KVideoCodec);
+    HBufC16* ptr;
+    ptr = str.AllocLC();
+
+    CDesCArrayFlat* videoCodecs = new( ELeave ) CDesCArrayFlat( 1 );
+    CleanupStack::PushL( videoCodecs );
+
+    videoCodecs->AppendL( *ptr );
+    iOptionHandler->VideoCodecsResolvedL( *videoCodecs );
+    EUNIT_ASSERT ( iOptionHandler->iSettings.iVideoCodecs->MdcaCount() > KErrNone );
+    EUNIT_ASSERT ( iOptionHandler->iSettings.iVideoCodecs->MdcaPoint(0).Compare ( *ptr ) == 0 );
+
+    videoCodecs->Reset();
+    CleanupStack::PopAndDestroy( videoCodecs );
+    CleanupStack::PopAndDestroy();
+    
+    }
+
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE( 
+    UT_CMusAvaOptionHandler,
+    "CMusAvaOptionHandler",
+    "UNIT" )
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CMusAvaOptionHandler",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_NewLL, Teardown)
+    
+EUNIT_TEST(
+    "DoExecuteL - test ",
+    "CMusAvaOptionHandler",
+    "DoExecuteL",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_DoExecuteLL, Teardown)        
+
+EUNIT_TEST(
+    "Name - test ",
+    "CMusAvaOptionHandler",
+    "Name",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_NameL, Teardown)
+    
+
+EUNIT_TEST(
+    "Status - test ",
+    "CMusAvaOptionHandler",
+    "Status",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_StatusL, Teardown)
+
+EUNIT_TEST(
+    "Stop - test ",
+    "CMusAvaOptionHandler",
+    "Stop",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_StopL, Teardown)   
+     
+EUNIT_TEST(
+    "CapabilitiesResolved - test ",
+    "CMusAvaOptionHandler",
+    "CapabilitiesResolved",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_CapabilitiesResolvedL, Teardown)   
+     
+EUNIT_TEST(
+    "CapabilitiesResolvedForCingular - test ",
+    "CMusAvaOptionHandler",
+    "CapabilitiesResolvedForCingular",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_CapabilitiesResolvedForCingularL, 
+    Teardown)   
+
+EUNIT_TEST(
+    "SipHeadersL - test ",
+    "CMusAvaOptionHandler",
+    "SipHeadersL",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_SipHeadersL, 
+    Teardown)  
+     
+EUNIT_TEST(
+    "VideoCodecsResolvedL - test ",
+    "CMusAvaOptionHandler",
+    "VideoCodecsResolvedL",
+    "FUNCTIONALITY",
+    SetupL,UT_CMusAvaOptionHandler_VideoCodecsResolvedLL, 
+    Teardown) 
+
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE