mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSip.cpp
changeset 22 496ad160a278
parent 0 f0cf47e981f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSip.cpp	Fri Jun 11 13:36:18 2010 +0300
@@ -0,0 +1,478 @@
+/*
+* 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_CMusAvaSip.h"
+#include "muslogger.h"
+#include "mussettings.inl"
+#include "CSipSseTestTls.h"
+#include "mussettingskeys.h"
+#include "musavasipdefaulthandler.h"
+#include "sipconnectionobserver.h"
+#include "musavasipdefaulthandler.h"
+#include "musavasipconnectionadapter.h"
+#include "musavasettingsimp.h"
+#include "musavaregisteravailability.h"
+#include "musavasipprofileregistryobserver.h"
+#include "musavacapabilitytesthelper.h" //remove compilation warning
+#include "CSipSseTestTls.h"
+
+//  EXTERNAL INCLUDES
+#include <digia/eunit/eunitmacros.h>
+#include <e32base.h>
+//#include <telephonyinternalpskeys.h>
+#include <sipprofileregistry.h>
+#include <sip.h>
+#include <siperr.h>
+#include <digia/eunit/eunitdecorators.h>
+
+
+//  INTERNAL INCLUDES
+#include "musavasip.h"
+
+
+
+// CONSTRUCTION
+UT_CMusAvaSip* UT_CMusAvaSip::NewL()
+    {
+    UT_CMusAvaSip* self = UT_CMusAvaSip::NewLC(); 
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+UT_CMusAvaSip* UT_CMusAvaSip::NewLC()
+    {
+    UT_CMusAvaSip* self = new( ELeave ) UT_CMusAvaSip();
+    CleanupStack::PushL( self );
+
+	self->ConstructL(); 
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+UT_CMusAvaSip::~UT_CMusAvaSip()
+    {
+    }
+
+// Default constructor
+UT_CMusAvaSip::UT_CMusAvaSip()
+    {
+    }
+
+// Second phase construct
+void UT_CMusAvaSip::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+    }
+
+//  METHODS
+
+
+
+void UT_CMusAvaSip::SetupL(  )
+    {
+    SIPStrings::OpenL();
+    CSipSseTestTls::OpenL();
+    iProfileId = MultimediaSharingSettings::SipProfileSettingL();    
+    iMusAvaSip = CMusAvaSip::NewL();	
+    } 
+
+void UT_CMusAvaSip::Teardown(  )
+    {
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    MultimediaSharingSettings::SetSipProfileSettingL( iProfileId );    
+    CSipSseTestTls::Close();
+    SIPStrings::Close();
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_NewLL(  )
+    {
+    EUNIT_ASSERT( iMusAvaSip->iSip );
+    EUNIT_ASSERT( iMusAvaSip->iSipObserver );
+    EUNIT_ASSERT( iMusAvaSip->iSipConnectionObserver );
+    EUNIT_ASSERT( iMusAvaSip->iSipProfileRegistryObserver );
+    }  
+
+void UT_CMusAvaSip::UT_CMusAvaSip_AddAdapterLL()
+    {
+    CMusAvaSipDefaultHandler* defaultHandler 
+                                = new( ELeave ) CMusAvaSipDefaultHandler();
+    CleanupStack::PushL( defaultHandler );
+    iMusAvaSip->AddAdapterL( *defaultHandler );
+    EUNIT_ASSERT( iMusAvaSip->iSipConnectionObserver );
+    CleanupStack::PopAndDestroy( defaultHandler ); 
+    }
+ 		
+void UT_CMusAvaSip::UT_CMusAvaSip_RemoveAdapterL()
+    {
+    CMusAvaSipDefaultHandler* defaultHandler 
+                                = new( ELeave ) CMusAvaSipDefaultHandler();
+    CleanupStack::PushL( defaultHandler );
+    iMusAvaSip->AddAdapterL( *defaultHandler );
+    EUNIT_ASSERT( iMusAvaSip->iSipConnectionObserver );
+    iMusAvaSip->RemoveAdapter( *defaultHandler );
+ //   EUNIT_ASSERT( !iMusAvaSip->iSipConnectionObserver->iObservers.Count() );
+    CleanupStack::PopAndDestroy( defaultHandler ); 
+    }
+void UT_CMusAvaSip::UT_CMusAvaSip_CreateProfileL()
+    {
+    // Test Profile
+    //No profile
+    TInt ret = NULL;
+    TRAPD( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    TInt count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ret == KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT ( ret );
+
+    // Test Profile
+    //Profile created
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    iMusAvaSip->iSipProfileRegistry = CSIPProfileRegistry::NewL(
+                                    *iMusAvaSip->iSip,
+                                    *iMusAvaSip->iSipProfileRegistryObserver );
+    iMusAvaSip->iSipProfile = 
+            iMusAvaSip->GetMusProfileL( *iMusAvaSip->iSipProfileRegistry );
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( KErrNoMemory );
+    EUNIT_ASSERT ( ret );
+
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    //Test sip profile registry
+    //No profile registry, registry creation fails
+    CSipSseTestTls::Storage()->iRegistryBehavior = KRegistryLeaveAtConstruct;
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( !ret );
+    CSipSseTestTls::Storage()->Reset();
+       
+    //Create sip profile registry
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    
+    iMusAvaSip->iSipProfileRegistry = CSIPProfileRegistry::NewL(
+                                    *iMusAvaSip->iSip,
+                                    *iMusAvaSip->iSipProfileRegistryObserver );
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( ret );
+
+    //Test sip profile registry
+    //No profile registry, registry creation ok
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( ret );
+    //Create sip profile registry
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    iMusAvaSip->iSipProfileRegistry = CSIPProfileRegistry::NewL(
+                                    *iMusAvaSip->iSip,
+                                    *iMusAvaSip->iSipProfileRegistryObserver );
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( ret );
+    // Test profile settings
+    // Resolve profile fail
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    // Profile found, profile id not found
+    CSipSseTestTls::Storage()->iProfileBehavior = KSIPProfileIdFetchFails;
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( ret );
+    CSipSseTestTls::Storage()->Reset();
+    
+    // Profile found, iap id not found
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    CSipSseTestTls::Storage()->iProfileBehavior = KSIPIapIdFetchFails;
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( !ret );
+    CSipSseTestTls::Storage()->Reset();
+
+    // All ok
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    TRAP( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( ret );
+
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_CreateSipProfileL()
+	{
+	// Test Profile
+    //No profile
+    TInt ret = NULL;
+    TRAPD( error, ret = iMusAvaSip->CreateSipProfile() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    TInt count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ret == KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT ( ret );
+    // Test Profile
+    //Profile created
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    iMusAvaSip->iSipProfileRegistry = CSIPProfileRegistry::NewL(
+                                    *iMusAvaSip->iSip,
+                                    *iMusAvaSip->iSipProfileRegistryObserver );
+    iMusAvaSip->iSipProfile = 
+            iMusAvaSip->GetMusProfileL( *iMusAvaSip->iSipProfileRegistry );
+	TRAP( error, ret = iMusAvaSip->CreateSipProfile() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ret == KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT ( ret );
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_ProfileL()
+    {
+    //No profile
+    EUNIT_ASSERT( iMusAvaSip->Profile() == NULL );
+    //Profile created
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    EUNIT_ASSERT( iMusAvaSip->CreateProfileL());  
+    EUNIT_ASSERT( iMusAvaSip->Profile() != NULL );
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_ProfileRegistryL()
+    {
+    //Create SIP Profile Registry
+    CSIPProfileRegistry* registry = &iMusAvaSip->ProfileRegistryL();
+    EUNIT_ASSERT( registry != NULL );
+    //SIP Profile Registry is created
+    registry = &iMusAvaSip->ProfileRegistryL();
+    EUNIT_ASSERT( registry != NULL );
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_ConnectionL()
+    {
+    //No connection
+    EUNIT_ASSERT( iMusAvaSip->iSipConnection == NULL );
+    //Connection is created when SIP profile is created
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    EUNIT_ASSERT( iMusAvaSip->CreateProfileL() );  
+    
+    //Still no connection
+    EUNIT_ASSERT( iMusAvaSip->iSipConnection == NULL );
+    
+    TRAPD( err, iMusAvaSip->ConnectionL( EFalse ) );
+    EUNIT_ASSERT( err == KErrSIPInvalidRegistrationState );
+    
+    // Forced creation (done normally when profile is registered).
+    EUNIT_ASSERT( iMusAvaSip->ConnectionL() != NULL );
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_ConnectionObserverL()
+    {
+    MSIPConnectionObserver& con = iMusAvaSip->ConnectionObserver();
+    EUNIT_ASSERT( &con != NULL );
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_SipL()
+    {
+     CSIP& sip = iMusAvaSip->Sip();
+    EUNIT_ASSERT( &sip != NULL );
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_CreateSIPConnectionLL()
+    {
+    TUint32 iapId;
+    //Profile created
+    delete iMusAvaSip;
+    iMusAvaSip = NULL;
+    iMusAvaSip = CMusAvaSip::NewL();
+    MultimediaSharingSettings::SetSipProfileSettingL( 0 );
+    iMusAvaSip->CreateSipProfile();
+    iMusAvaSip->Profile()->GetParameter( KSIPAccessPointId, iapId );
+    iMusAvaSip->iIapId = iapId;
+    iMusAvaSip->CreateSIPConnectionL();
+   	EUNIT_ASSERT( iMusAvaSip->ConnectionL( EFalse )->IapId() == iapId );
+    }
+
+void UT_CMusAvaSip::UT_CMusAvaSip_OwnDomainL()
+    {
+    // Profile does not exist
+    HBufC* ownDomain = iMusAvaSip->OwnDomainLC();
+    EUNIT_ASSERT( ownDomain->Length() == 0 );
+    CleanupStack::PopAndDestroy( ownDomain );
+    ownDomain = NULL;
+    
+    // Profile exists, no aors 
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    TInt ret = NULL;
+    TRAPD( error, ret = iMusAvaSip->CreateProfileL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    TInt count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ret == KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT ( ret );
+    ownDomain = iMusAvaSip->OwnDomainLC();
+    EUNIT_ASSERT( ownDomain->Length() == 0 );
+    CleanupStack::PopAndDestroy( ownDomain );
+    ownDomain = NULL;
+    
+    // Empty aors
+    CSIPProfile* profile = iMusAvaSip->Profile();
+    delete profile->iArray;
+    profile->iArray = NULL;
+    profile->iArray = new ( ELeave ) CDesC8ArrayFlat( 1 );
+    ownDomain = iMusAvaSip->OwnDomainLC();
+    EUNIT_ASSERT( ownDomain->Length() == 0 );
+    CleanupStack::PopAndDestroy( ownDomain );
+    ownDomain = NULL;
+    
+    // Aors found
+    profile->iArray->AppendL( _L8("sip:user@domain.com") );
+    ownDomain = iMusAvaSip->OwnDomainLC();
+    EUNIT_ASSERT( ownDomain->Length() > 0 );
+    CleanupStack::PopAndDestroy( ownDomain );
+    }
+   
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE( 
+    UT_CMusAvaSip,
+    "CMusAvaSip.",
+    "UNIT" )
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CMusAvaSip",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_NewLL, Teardown)
+    
+EUNIT_TEST(
+    "AddAdapterL - test ",
+    "CMusAvaSip",
+    "AddAdapterL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_AddAdapterLL, Teardown)
+    
+EUNIT_TEST(
+    "RemoveAdapter - test ",
+    "CMusAvaSip",
+    "RemoveAdapter",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_RemoveAdapterL, Teardown)    
+
+
+EUNIT_TEST(
+    "CreateProfile - test ",
+    "CMusAvaSip",
+    "CreateProfile",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_CreateProfileL, Teardown)
+
+EUNIT_TEST(
+    "CreateSipProfile - test ",
+    "CMusAvaSip",
+    "CreateSipProfile",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_CreateSipProfileL, Teardown)    
+    
+
+EUNIT_TEST(
+    "ProfileL - test ",
+    "CMusAvaSip",
+    "ProfileL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_ProfileL, Teardown)
+    
+EUNIT_TEST(
+    "ProfileRegistry - test ",
+    "CMusAvaSip",
+    "ProfileRegistry",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_ProfileRegistryL, Teardown)
+    
+    EUNIT_TEST(
+    "Connection - test ",
+    "CMusAvaSip",
+    "Connection",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_ConnectionL, Teardown)
+    
+EUNIT_TEST(
+    "ConnectionObserver - test ",
+    "CMusAvaSip",
+    "ConnectionObserver",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_ConnectionObserverL, Teardown)
+    
+EUNIT_TEST(
+    "Sip - test ",
+    "CMusAvaSip",
+    "Sip",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_SipL, Teardown)
+    
+EUNIT_TEST(
+    "CreateSIPConnectionL - test ",
+    "CMusAvaSip",
+    "CreateSIPConnectionL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_CreateSIPConnectionLL, Teardown)
+
+EUNIT_TEST(
+    "OwnDomainLC - test ",
+    "CMusAvaSip",
+    "OwnDomainLC",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaSip_OwnDomainL, Teardown)
+    
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE