authenticationservices/authenticationserver/test/tAuthSvr/src/step_resultavailability.cpp
changeset 102 deec7e509f66
parent 94 0e6c5a9328b5
child 108 ca9a0fc2f082
--- a/authenticationservices/authenticationserver/test/tAuthSvr/src/step_resultavailability.cpp	Thu Aug 19 11:18:56 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,586 +0,0 @@
-/*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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: 
-*
-*/
-
-
-#include "tAuthSvrStep.h"
-#include <s32file.h>
-using namespace AuthServer;
-class CAuthActive3 : public CActive
-    {
-    public:
-    CAuthActive3(RAuthMgrClient& aClient, CAuthExpression* aExpr,
-				 TInt aFresh, TBool aClientSpecific, TBool aStop = ETrue) : 
-         CActive(EPriorityNormal),
-         iClient(aClient),
-		 iResult(EFail),
-         iRunCount(0),
-         iAe(aExpr),
-         iStop(aStop),
-         iFresh(aFresh),
-         iIdToStore(0), 
-         iClientSpecific(aClientSpecific)
-        {
-        CActiveScheduler::Add(this);
-        }
-    void doAuth() 
-        {
-        SetActive();		
-		TRequestStatus* status = &iStatus;		    
-		User::RequestComplete(status, KErrNone);
-		iRunCount = 0;
-        }
-    void doDeAuth()
-        {
-        iClient.DeauthenticateL();
-        }
-	void DoCancel() 
-        {
-        }
-     void RunL() 
-        {
-        iErr = iStatus.Int();
-		switch (iRunCount)
-		  {
-		  case 0:
-            iStatus = KRequestPending;
-			iId = 0;
-
-			iClient.AuthenticateL(*iAe, iFresh, iClientSpecific, EFalse, iId, iStatus);
-			SetActive();
-
-			break;
-		  case 1:
-			if (0 != iId)
-				{
-				iIdToStore = iId->Id();
-				delete iId;
-				}
-			iStatus = KRequestPending;
-			TRequestStatus* status;
-			status = &iStatus;				
-			User::RequestComplete(status, iErr);				
-			SetActive();
-			
-			break;
-   		  case 2:
-			iResult = iStatus == KErrNone ? EPass : EFail;
-            iErr = iStatus.Int();
-			if (iStop)
-                {
-                CActiveScheduler::Stop();
-                }
-
-			break;
-     	  default:
-			iResult = EFail;
-			
-			if (iStop)
-				{
-			    CActiveScheduler::Stop();
-			    }
-		    }
-		  ++iRunCount;
-          }
-	RAuthMgrClient& iClient;
-	TVerdict iResult;
-	TInt iRunCount;
-	CAuthExpression* iAe;
-	CIdentity* iId;
-    TBool iStop;
-    TInt iErr;
-    TInt iFresh;
-    TIdentityId iIdToStore;
-    TBool iClientSpecific;
-    };
-
-//====================================================================================================
-
-
-class CRegActive2 : public CActive
-    {
-    public:
-    CRegActive2(RAuthMgrClient& aClient, CIdentity*& aResult) : 
-         CActive(EPriorityNormal),
-         iFirstTime(true),
-         iClient(aClient), 
-         iResult(aResult),
-         iErr(KErrNone)
-        {
-        CActiveScheduler::Add(this);
-        }
-    void doReg()
-        {
-        SetActive();		
-		TRequestStatus* status = &iStatus;
-		User::RequestComplete(status, KErrNone);
-		iFirstTime = ETrue;
-        }
-        void DoCancel() 
-        {
-        }
-     void RunL() 
-        {
-        iErr = iStatus.Int();
-        if (iFirstTime)
-            {
-			SetActive();
-            iStatus = KRequestPending;
-            iClient.RegisterIdentityL(iResult, _L("SOMENAME"), iStatus);
-            iFirstTime = false;
-            }
-        else
-            {
-            iErr = iStatus.Int();
-            CActiveScheduler::Stop();
-			}
-        }
-        
-    TBool iFirstTime;
-    RAuthMgrClient& iClient;
-    CIdentity*& iResult;
-    TInt iErr;
-    };
-//====================================================================================================     
-CResultAvailability::~CResultAvailability()
-/**
-  Destructor
- */
-	{}
-
-CResultAvailability::CResultAvailability(CTAuthSvrServer& aParent): iParent(aParent)
-/**
-  Constructor
- */
-	{
-	
-	SetTestStepName(KTResultAvailability);
-	}
-
-TVerdict CResultAvailability::doTestStepPreambleL()
-/**
-  @return - TVerdict code
-
- */
-	{
-
-	CTStepActSch::doTestStepPreambleL();	
-	return TestStepResult();
-	}
-
-
-TVerdict CResultAvailability::doTestStepL()
-	{
-		SetTestStepResult(EFail);	
-		__UHEAP_MARK;		// Check for memory leaks
-
-		//-----------------------------------------------------------------------------------------------------	
-		//Get the Identity published by KUidAuthServerLastAuth property .
-		
-		TLastAuth lastAuth;
-		TPckg<TLastAuth> authPkg(lastAuth);
-		RProperty::Get(KAuthServerSecureId, KUidAuthServerLastAuth, authPkg);
-		
-		//Get the Last Authenticated Id from the authsvrpolicy.ini file
-		
-		TPtrC userIdString;
-		GetStringFromConfig(ConfigSection(),_L("LastAuthId"), userIdString);
-		
-		TLex lex = TLex(userIdString);
-		TUint userId(0);
-		
-		lex.Val(userId);
-		INFO_PRINTF3(_L("The UserId published by KUidAuthServerLastAuth property is %x and the UserId from AuthSvrPolicy.ini is %x"), lastAuth.iId, userId );
-		if(lastAuth.iId == userId )
-			{
-			SetTestStepResult(EPass);	
-
-			}
-
-		 __UHEAP_MARKEND;
-		 return TestStepResult();
-	}
-TVerdict CResultAvailability::doTestStepPostambleL()
-/**
-  @return - TVerdict code
-
- */
-	{
-	
-	CTStepActSch::doTestStepPostambleL();
-	return TestStepResult();
-	}
-//====================================================================================================
-CResultChangeNotify::~CResultChangeNotify()
-/**
-  Destructor
- */
-	{}
-
-CResultChangeNotify::CResultChangeNotify(CTAuthSvrServer& aParent): iParent(aParent)
-/**
-  Constructor
- */
-	{
-	
-	SetTestStepName(KTResultChangeNotify);
-	}
-
-TVerdict CResultChangeNotify::doTestStepPreambleL()
-/**
-  @return - TVerdict code
-
- */
-	{
-
-	CTStepActSch::doTestStepPreambleL();	
-	return TestStepResult();
-	}
-
-TVerdict CResultChangeNotify::doTestStepL()
-	{
-	SetTestStepResult(EPass);	
-	__UHEAP_MARK;		// Check for memory leaks
-	SetPinPluginStateL();
-
-	//-----------------------------------------------------------------------------------------------------	
-	InitAuthServerFromFileL();	// Set things like 'iSupportsDefaultData' and 'DefaultPlugin'
-	
-	// this method creates the dat file from where the test implementation
-	// of pin plugin notifier reads user input.
-	// as the pin plugin fails without this data it has been included 
-	// in the code as a default step for initializing the pin plugin
-	// data.
-	TPinValue aPinValue;
-	CreatePinPluginInputFileL(EPinPluginTraining,aPinValue);
-	CActiveScheduler::Install(iActSchd);
-	
-	// KUidAuthServerAuthChangeEvent Property retrieves the last authenticated identity
-	TInt AuthIdChange = 0;
-	RProperty::Get(KAuthServerSecureId, KUidAuthServerAuthChangeEvent, AuthIdChange);
-	INFO_PRINTF2(_L("Last Authenticated Identity is %x" ), AuthIdChange );
-	
-	//Connect to the AuthServer	
-	AuthServer::RAuthMgrClient authMgrClient;	
-	TInt connectVal = authMgrClient.Connect();
-	if (KErrNotFound == connectVal)
-		{
-			//Retry after a delay
-			TTimeIntervalMicroSeconds32 timeInterval = 2000;	//2 Milliseconds
-			User::After(timeInterval);
-			connectVal = authMgrClient.Connect();
-		}
-	if (KErrNone != connectVal)
-		{
-		ERR_PRINTF2(_L("Unable to start a session or other connection error. Err = %d"), connectVal);
-		User::LeaveIfError(connectVal);		
-		}	
-		
-	CleanupClosePushL(authMgrClient);
-
-	
-	//Register a new Identity
-	INFO_PRINTF1(_L("Registering a new Identity"));
-	CIdentity* identity = 0;
-	CRegActive2 regactive(authMgrClient, identity);
-	regactive.doReg();
-	CActiveScheduler::Start();
-	
-	if (0 != identity)
-	  	{
-	  		INFO_PRINTF1(_L("Registration Successful"));
-	  		INFO_PRINTF3(_L("Id = %x , KeyLength = %d\n"), identity->Id(), identity->Key().KeyData().Size());
-	  	}
-			
-	
-
-	//Authenticate the new Id.
-	
-	TPtrC exprString;	
-	TInt deAuth;
-	if (GetStringFromConfig(ConfigSection(), _L("plugin1Id"), exprString) != EFalse) // the tag 'pluginId1' was present
-		{
-				 	
-			TInt freshnessVal = 0;	//Default value
-			//Retrieve the value of 'freshness' from the ini file, but if it's absent use the default value
-			 if(GetIntFromConfig(ConfigSection(), _L("freshness"), freshnessVal) == EFalse)
-				 {
-				 	freshnessVal = 10;
-				 }
-				 		
-			TBool clientSpecificKeyVal = EFalse;	 	
-			//Retrieve the value of 'clientSpecificKey' from the ini file, but if it's absent use the default value
-			if(GetBoolFromConfig(ConfigSection(), _L("clientSpecificKey"), clientSpecificKeyVal) == EFalse)
-				 {
-				 	clientSpecificKeyVal = EFalse;
-				 }	 	
-				
-			if(GetIntFromConfig(ConfigSection(), _L("deauth"), deAuth) == EFalse)
-				{
-					deAuth = 0;
-				}
-			
-			TBool stop;
-			if(GetBoolFromConfig(ConfigSection(), _L("stop"), stop ) == EFalse)
-							{
-								stop = ETrue;
-							}
-			
-			//Create a CResultPropertyWatch object which subscribes to the KUidAuthServerAuthChangeEvent Property
-					
-			CResultPropertyWatch* watch = CResultPropertyWatch::NewLC();
-					
-				
-			//Train the plugin again with this identity.
-			CAuthExpression* expr = CreateAuthExprLC(exprString);
-		
-			CAuthActive3 authactive(authMgrClient, expr, freshnessVal, clientSpecificKeyVal,stop);
-	
-			INFO_PRINTF1(_L("Authenticating the new Identity"));
-			authactive.doAuth();		
-			CActiveScheduler::Start();
-		
-			//Check if Authentication successful.
-			if(authactive.iIdToStore)
-				{
-					INFO_PRINTF2(_L(" Successful Authentication Id = %x"), authactive.iIdToStore);
-				}
-			else
-				{
-					INFO_PRINTF1(_L(" Authentication Failed ."));
-				}
-			
-			if(watch->iNotified)
-				{
-				TInt AuthIdChange;
-					
-				//Get the published value
-				RProperty::Get(KAuthServerSecureId, KUidAuthServerAuthChangeEvent, AuthIdChange);	
-				INFO_PRINTF2(_L("Successfully received Notification. New User Identity is %x " ), AuthIdChange );
-				}
-			else
-				{
-				INFO_PRINTF1(_L("No Notification received "));
-				}
-			CleanupStack::PopAndDestroy(2,watch);
-			//Authenticate the same User again to verify that KUidAuthServerAuthChangeEvent 
-			//does not get published again
-			
-			//Create a CResultPropertyWatch object which subscribes to the KUidAuthServerAuthChangeEvent Property
-			
-			CResultPropertyWatch* watch2 = CResultPropertyWatch::NewLC();	
-			
-			CAuthExpression* expr2 = CreateAuthExprLC(exprString);
-			CAuthActive3 authactive2(authMgrClient, expr, freshnessVal, clientSpecificKeyVal);
-			authactive2.doAuth();		
-			CActiveScheduler::Start();
-		
-			//Check if Authentication successful.
-			if(authactive.iIdToStore)
-				{
-					INFO_PRINTF2(_L(" Successful Authentication Id = %x"), authactive.iIdToStore);
-				}
-			else
-				{
-					INFO_PRINTF1(_L(" Authentication Failed ."));
-					
-				}
-						
-			if(watch2->iNotified)
-				{
-					TInt AuthIdChange;	
-					//Get the published value
-					RProperty::Get(KAuthServerSecureId, KUidAuthServerAuthChangeEvent, AuthIdChange);	
-					INFO_PRINTF2(_L("Successfully received Notification. New User Identity is %x " ), AuthIdChange );
-					SetTestStepResult(EFail);
-				}
-			else
-				{
-					INFO_PRINTF1(_L("No Notification received "));
-				}
-			CleanupStack::PopAndDestroy(2,watch2);
-			// If deAuth flag is set ,subscribe to the KUidAuthServerAuthChangeEvent property
-			// and deauthenticate 
-			if(deAuth)
-			{
-								
-				INFO_PRINTF1(_L(" Trying to DeAuthenticate "));
-				//Creating a subscriber active object
-				CResultPropertyWatch* watch3 = CResultPropertyWatch::NewLC();
-		
-				TInt err;
-				TRAP(err,authactive.doDeAuth());
-				CActiveScheduler::Start();
-		
-				if(err != KErrNone)
-					{
-					INFO_PRINTF1(_L(" DeAuthentication Failed "));
-					SetTestStepResult(EFail);
-
-					}
-				else
-					{
-					INFO_PRINTF1(_L(" DeAuthentication Succeeded "));
-					}
-				
-				if(watch3->iNotified)
-					{
-					TInt AuthIdChange;	
-					//Get the published value
-					RProperty::Get(KAuthServerSecureId, KUidAuthServerAuthChangeEvent, AuthIdChange);	
-					INFO_PRINTF2(_L("Successfully received Notification. New User Identity is %x " ), AuthIdChange );
-					}
-				else
-					{
-					INFO_PRINTF1(_L(" No Notification of the change in the Authenticated Identity "));
-					SetTestStepResult(EFail);
-					}
-				CleanupStack::PopAndDestroy(watch3);
-				INFO_PRINTF1(_L(" Checking the Id published by KUidAuthServerLastAuth upon DeAuthentication"));
-				TLastAuth lastAuth;
-				TPckg<TLastAuth> authPkg(lastAuth);
-				RProperty::Get(KAuthServerSecureId, KUidAuthServerLastAuth, authPkg);
-		
-				INFO_PRINTF2(_L("Id published by KUidAuthServerLastAuth = %x"), lastAuth.iId);
-		
-				if(lastAuth.iId != 0)
-					{
-					SetTestStepResult(EFail);
-					}
-			
-				}
-			}
-			
-		RemovePinPluginFileL();	
-		delete identity;
-		CleanupStack::PopAndDestroy(&authMgrClient);
-		 __UHEAP_MARKEND;
-		 return TestStepResult();
-	}
-
-	
-void CResultChangeNotify::SetPinPluginStateL()
-	{
-	TPtrC activeStateFromFile;
-	
-	_LIT(KPinPlugin,"pinplugin_inactive.txt");
-	
-	TFileName filename;
-	filename.Copy(KPinPlugin); // convert from 8 -> 16 bit descriptor
-		
-	TDriveUnit sysDrive = RFs::GetSystemDrive();
-	TDriveName sysDriveName (sysDrive.Name());
-	filename.Insert(0,sysDriveName);
-	filename.Insert(2,_L("\\"));		
-	
-	RFileWriteStream stream;
-	RFs fs;
-	CleanupClosePushL(fs);
-	User::LeaveIfError(fs.Connect());
-	fs.Delete(filename);
-		
-	if (GetStringFromConfig(ConfigSection(),_L("Pin200032E5Active"), activeStateFromFile)) 
-		{
-		if(activeStateFromFile == _L("false"))
-			{		
-			User::LeaveIfError(stream.Create(fs, filename, EFileWrite | EFileShareExclusive));
-			stream.Close();
-			}
-		}
-	CleanupStack::PopAndDestroy(); // fs
-	}
-
-void CResultChangeNotify::RemovePinPluginFileL()
-	{
-	TPtrC activeStateFromFile;
-	_LIT(KPinPlugin,"pinplugin_inactive.txt");
-	TFileName filename;
-	filename.Copy(KPinPlugin); // convert from 8 -> 16 bit descriptor
-			
-	TDriveUnit sysDrive = RFs::GetSystemDrive();
-	TDriveName sysDriveName (sysDrive.Name());
-	filename.Insert(0,sysDriveName);
-	filename.Insert(2,_L("\\"));
-		
-	RFs fs;
-	CleanupClosePushL(fs);
-	User::LeaveIfError(fs.Connect());
-	fs.Delete(filename);
-	CleanupStack::PopAndDestroy(); // fs
-	}
-
-
-TVerdict CResultChangeNotify::doTestStepPostambleL()
-/**
-  @return - TVerdict code
-
- */
-	{
-	
-	CTStepActSch::doTestStepPostambleL();
-	return TestStepResult();
-	}
-
-//====================================================================================================     
-
-
-CResultPropertyWatch* CResultPropertyWatch::NewLC()
-{
-	CResultPropertyWatch* me=new(ELeave) CResultPropertyWatch;
-	CleanupStack::PushL(me);
-	me->ConstructL();
-	return me;
-}
-
-CResultPropertyWatch::CResultPropertyWatch() :CActive(EPriority)
-	{
-		iNotified = EFalse;
-	}
-
-
-void CResultPropertyWatch::ConstructL()
-{
-	User::LeaveIfError(iProperty.Attach(KAuthServerSecureId,
-			 KUidAuthServerAuthChangeEvent));
-	CActiveScheduler::Add(this);
-	// Subscribe to the KUidAuthServerAuthChangeEvent property
-	iProperty.Subscribe(iStatus);
-	SetActive();
-	
-	}
-CResultPropertyWatch::~CResultPropertyWatch()
-{
-	Cancel();
-	iProperty.Close();
-
-}
-void CResultPropertyWatch::DoCancel()
-{
-	iProperty.Cancel();
-}
-void CResultPropertyWatch::RunL()
-{	
-	TInt AuthIdChange;
-	
-	//Get the published value
-	iProperty.Get(KAuthServerSecureId, KUidAuthServerAuthChangeEvent, AuthIdChange);
-	iNotified = ETrue;
-	RDebug::Print(_L("Received Notification. New User Identity is %x " ), AuthIdChange );
-	CActiveScheduler::Stop();
-		
-}
-
-