telephonyserverplugins/common_tsy/test/component/src/cctsyauthorisationandauthenticationfu.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsyauthorisationandauthenticationfu.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,460 @@
+// Copyright (c) 2007-2009 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:
+// The TEFUnit test suite for AuthorisationAndAuthentication in the Common TSY.
+// 
+//
+
+/**
+ @file 
+*/
+
+#include "cctsyauthorisationandauthenticationfu.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <mmretrieve.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "tmockltsydata.h"
+#include <ctsy/serviceapi/gsmerror.h>
+#include "cctsyactiveretriever.h"
+
+CTestSuite* CCTsyAuthorisationAndAuthenticationFU::CreateSuiteL(const TDesC& aName)
+	{
+	SUB_SUITE;
+
+	ADD_TEST_STEP_ISO_CPP(CCTsyAuthorisationAndAuthenticationFU, TestStart0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAuthorisationAndAuthenticationFU, TestStart0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAuthorisationAndAuthenticationFU, TestStart0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAuthorisationAndAuthenticationFU, TestStart0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAuthorisationAndAuthenticationFU, TestSmartCardAuthenticate0001L);
+
+	END_SUITE;
+	}
+
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CTSY-AAA-ARAI-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CAsyncRetrieveAuthorizationInfo::Start
+@SYMTestPriority High
+@SYMTestActions Invokes CAsyncRetrieveAuthorizationInfo::Start
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAuthorisationAndAuthenticationFU::TestStart0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+	
+	RMobilePhone::CImsAuthorizationInfoV5* authInfo = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(authInfo);
+
+	RMobilePhone::CImsAuthorizationInfoV5* expectedAuthInfo = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(expectedAuthInfo);
+	
+	CAsyncRetrieveAuthorizationInfo* asyncRetrieveAuthorizationInfo = CAsyncRetrieveAuthorizationInfo::NewL(iPhone, *authInfo);    
+	CleanupStack::PushL(asyncRetrieveAuthorizationInfo);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeAuthorizationInfoRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveAuthorizationInfo);
+	CleanupStack::PushL(activeAuthorizationInfoRetriever);
+	scheduler.AddRetrieverL(*activeAuthorizationInfoRetriever);
+	
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobilePhoneAuthorizationInfoPhase1, KErrNotSupported);
+
+	asyncRetrieveAuthorizationInfo->Start(activeAuthorizationInfoRetriever->Status());
+	activeAuthorizationInfoRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNotSupported, activeAuthorizationInfoRetriever->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+
+	iMockLTSY.ExpectL(EMobilePhoneAuthorizationInfoPhase1, KErrNone);
+
+	HBufC8* expBuf(NULL);
+	expectedAuthInfo->ExternalizeL(expBuf);
+	CleanupStack::PushL(expBuf);
+	data.Create(*expBuf);
+	CleanupStack::PopAndDestroy(expBuf);
+	iMockLTSY.CompleteL(EMobilePhoneAuthorizationInfoPhase1, KErrGeneral, data, 0);
+
+	asyncRetrieveAuthorizationInfo->Start(activeAuthorizationInfoRetriever->Status());
+	activeAuthorizationInfoRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrGeneral, activeAuthorizationInfoRetriever->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// CAsyncRetrieveAuthorizationInfo::Start when result is not cached.
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobilePhoneAuthorizationInfoPhase1, KErrNone);
+
+	expectedAuthInfo->iAuthenticationDataSource = RMobilePhone::EFromISIM;
+	expectedAuthInfo->iIMPI.Copy(_L("asta"));
+	TBuf8<255> tmpBuf;
+	tmpBuf.Copy(_L("la"));
+	expectedAuthInfo->iIMPUArray.Append(tmpBuf);
+	tmpBuf.Copy(_L("vista"));
+	expectedAuthInfo->iIMPUArray.Append(tmpBuf);
+	tmpBuf.Copy(_L("baby"));
+	expectedAuthInfo->iIMPUArray.Append(tmpBuf);
+	expectedAuthInfo->iHomeNetworkDomainName.Copy(_L("!!!"));
+
+	expBuf = NULL;
+	expectedAuthInfo->ExternalizeL(expBuf);
+	CleanupStack::PushL(expBuf);
+	data.Create(*expBuf);
+	CleanupStack::PopAndDestroy(expBuf);
+    iMockLTSY.CompleteL(EMobilePhoneAuthorizationInfoPhase1, KErrNone, data);
+
+	asyncRetrieveAuthorizationInfo->Start(activeAuthorizationInfoRetriever->Status());
+	activeAuthorizationInfoRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNone, activeAuthorizationInfoRetriever->iStatus.Int());
+	
+	HBufC8* buf(NULL);
+	authInfo->ExternalizeL(buf);
+	CleanupStack::PushL(buf);	
+	expBuf = NULL;
+	expectedAuthInfo->ExternalizeL(expBuf);
+	CleanupStack::PushL(expBuf);	
+	ASSERT_EQUALS(*expBuf, *buf);
+	CleanupStack::PopAndDestroy(2); // expBuf, buf
+	
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of CAsyncRetrieveAuthorizationInfo::Start
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+
+	TRequestStatus requestStatus;
+	iMockLTSY.NotifyTerminated(requestStatus);	
+
+    iMockLTSY.CompleteL(EMobilePhoneAuthorizationInfoPhase1, KErrNone, data);
+
+	User::WaitForRequest(requestStatus);
+
+	ASSERT_EQUALS(KErrNone, requestStatus.Int());
+	AssertMockLtsyStatusL();
+
+	CleanupStack::PopAndDestroy(4); // activeAuthorizationInfoRetriever, asyncRetrieveAuthorizationInfo, expectedAuthInfo, authInfo
+	CActiveScheduler::Install(NULL);
+	CleanupStack::PopAndDestroy(2, this); // data, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-AAA-ARAI-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of CAsyncRetrieveAuthorizationInfo::Start
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of CAsyncRetrieveAuthorizationInfo::Start
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAuthorisationAndAuthenticationFU::TestStart0002L()
+	{
+
+// This test should test cancellation of Start
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+
+	RMobilePhone::CImsAuthorizationInfoV5* authInfo = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(authInfo);
+
+	RMobilePhone::CImsAuthorizationInfoV5* expectedAuthInfo = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(expectedAuthInfo);
+	
+	CAsyncRetrieveAuthorizationInfo* asyncRetrieveAuthorizationInfo = CAsyncRetrieveAuthorizationInfo::NewL(iPhone, *authInfo);    
+	CleanupStack::PushL(asyncRetrieveAuthorizationInfo);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeAuthorizationInfoRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveAuthorizationInfo);
+	CleanupStack::PushL(activeAuthorizationInfoRetriever);
+	scheduler.AddRetrieverL(*activeAuthorizationInfoRetriever);
+	
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of CAsyncRetrieveAuthorizationInfo::Start
+ 	//-------------------------------------------------------------------------
+ 	
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+    iMockLTSY.ExpectL(EMobilePhoneAuthorizationInfoPhase1, KErrNone);
+
+	HBufC8* expBuf(NULL);
+	expectedAuthInfo->ExternalizeL(expBuf);
+	CleanupStack::PushL(expBuf);
+	data.Create(*expBuf);
+	CleanupStack::PopAndDestroy(expBuf);
+    iMockLTSY.CompleteL(EMobilePhoneAuthorizationInfoPhase1, KErrNone, data, 10);
+
+	asyncRetrieveAuthorizationInfo->Start(activeAuthorizationInfoRetriever->Status());
+	activeAuthorizationInfoRetriever->Activate(CActiveRetriever::ECaseGeneralCancelCase);
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrCancel, activeAuthorizationInfoRetriever->iStatus.Int());
+
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+	AssertMockLtsyStatusL();
+
+    iMockLTSY.ExpectL(EMobilePhoneAuthorizationInfoPhase1, KErrNone);
+    iMockLTSY.CompleteL(EMobilePhoneAuthorizationInfoPhase1, KErrNone, data);
+
+	asyncRetrieveAuthorizationInfo->Start(activeAuthorizationInfoRetriever->Status());
+	activeAuthorizationInfoRetriever->Activate(CActiveRetriever::ECasePhase2Cancel);
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrCancel, activeAuthorizationInfoRetriever->iStatus.Int());
+
+	AssertMockLtsyStatusL();
+
+	CleanupStack::PopAndDestroy(4); // activeAuthorizationInfoRetriever, asyncRetrieveAuthorizationInfo, expectedAuthInfo, authInfo
+	CActiveScheduler::Install(NULL);
+	CleanupStack::PopAndDestroy(2); // data, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-AAA-ARAI-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to CAsyncRetrieveAuthorizationInfo::Start
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to CAsyncRetrieveAuthorizationInfo::Start
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAuthorisationAndAuthenticationFU::TestStart0004L()
+	{
+
+					
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	// Open second client
+	RTelServer telServer2;
+	TInt ret = telServer2.Connect();
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(telServer2);
+
+	RMobilePhone phone2;
+	ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(phone2);
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+	
+	RMobilePhone::CImsAuthorizationInfoV5* authInfo = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(authInfo);
+
+	RMobilePhone::CImsAuthorizationInfoV5* expectedAuthInfo = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(expectedAuthInfo);
+	
+	CAsyncRetrieveAuthorizationInfo* asyncRetrieveAuthorizationInfo = CAsyncRetrieveAuthorizationInfo::NewL(iPhone, *authInfo);    
+	CleanupStack::PushL(asyncRetrieveAuthorizationInfo);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeAuthorizationInfoRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveAuthorizationInfo);
+	CleanupStack::PushL(activeAuthorizationInfoRetriever);
+	scheduler.AddRetrieverL(*activeAuthorizationInfoRetriever);
+	
+
+	RMobilePhone::CImsAuthorizationInfoV5* authInfo2 = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(authInfo2);
+
+	CAsyncRetrieveAuthorizationInfo* asyncRetrieveAuthorizationInfo2 = CAsyncRetrieveAuthorizationInfo::NewL(phone2, *authInfo2);    
+	CleanupStack::PushL(asyncRetrieveAuthorizationInfo2);
+
+	CActiveRetriever* activeAuthorizationInfoRetriever2 = 
+						CActiveRetriever::NewL(*asyncRetrieveAuthorizationInfo2);
+	CleanupStack::PushL(activeAuthorizationInfoRetriever2);
+	scheduler.AddRetrieverL(*activeAuthorizationInfoRetriever2);
+	
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting CAsyncRetrieveAuthorizationInfo::Start
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobilePhoneAuthorizationInfoPhase1, KErrNone);
+	HBufC8* expBuf(NULL);
+	expectedAuthInfo->ExternalizeL(expBuf);
+	CleanupStack::PushL(expBuf);
+	data.Create(*expBuf);
+	CleanupStack::PopAndDestroy(expBuf);
+    iMockLTSY.CompleteL(EMobilePhoneAuthorizationInfoPhase1, KErrNone, data);
+
+	asyncRetrieveAuthorizationInfo->Start(activeAuthorizationInfoRetriever->Status());
+	activeAuthorizationInfoRetriever->Activate();
+
+	asyncRetrieveAuthorizationInfo2->Start(activeAuthorizationInfoRetriever2->Status());
+	activeAuthorizationInfoRetriever2->Activate();
+
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNone, activeAuthorizationInfoRetriever->iStatus.Int());
+	ASSERT_EQUALS(KErrServerBusy, activeAuthorizationInfoRetriever2->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+	// Done !
+	CleanupStack::PopAndDestroy(3); // activeAuthorizationInfoRetriever2, asyncRetrieveAuthorizationInfo2, authInfo2
+	CleanupStack::PopAndDestroy(4); // activeAuthorizationInfoRetriever, asyncRetrieveAuthorizationInfo, expectedAuthInfo, authInfo
+	CActiveScheduler::Install(NULL);
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-AAA-ARAI-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CAsyncRetrieveAuthorizationInfo::Start with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes CAsyncRetrieveAuthorizationInfo::Start and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAuthorisationAndAuthenticationFU::TestStart0005L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+
+	RMobilePhone::CImsAuthorizationInfoV5* authInfo = RMobilePhone::CImsAuthorizationInfoV5::NewL();
+	CleanupStack::PushL(authInfo);
+
+	CAsyncRetrieveAuthorizationInfo* asyncRetrieveAuthorizationInfo = CAsyncRetrieveAuthorizationInfo::NewL(iPhone, *authInfo);    
+	CleanupStack::PushL(asyncRetrieveAuthorizationInfo);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeAuthorizationInfoRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveAuthorizationInfo);
+	CleanupStack::PushL(activeAuthorizationInfoRetriever);
+	scheduler.AddRetrieverL(*activeAuthorizationInfoRetriever);
+	
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of CAsyncRetrieveAuthorizationInfo::Start
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobilePhoneAuthorizationInfoPhase1, KErrNone);
+
+	asyncRetrieveAuthorizationInfo->Start(activeAuthorizationInfoRetriever->Status());
+	activeAuthorizationInfoRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrTimedOut, activeAuthorizationInfoRetriever->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+	CleanupStack::PopAndDestroy(3); // activeAuthorizationInfoRetriever, asyncRetrieveAuthorizationInfo, authInfo
+	CActiveScheduler::Install(NULL);
+	CleanupStack::PopAndDestroy(2, this); // data, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-AAA-MSCA-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::SmartCardAuthenticate
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::SmartCardAuthenticate
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAuthorisationAndAuthenticationFU::TestSmartCardAuthenticate0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RMobilePhone::TSmartCardAuthenticateDataV6 authenticateData;
+	RMobilePhone::TSmartCardAuthenticateDataV6Pckg authenticateDataPckg(authenticateData);
+	
+	TRequestStatus reqStatus;
+	iPhone.SmartCardAuthenticate(reqStatus, authenticateDataPckg);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+	RMobilePhone::TAID AID;
+	iPhone.SmartCardAuthenticate(reqStatus, AID, authenticateDataPckg);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+	CleanupStack::PopAndDestroy(this);
+	
+	}