--- a/authenticationservices/authenticationserver/test/tAuthSvr/src/step_authenticate.cpp Thu Aug 19 11:18:56 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,681 +0,0 @@
-/*
-* Copyright (c) 2006-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:
-* CTestStep derived implementation
-*
-*/
-
-
-#include "tAuthSvrStep.h"
-
-#include "authserver/authclient.h"
-#include "authserver/authmgrclient.h"
-#include "authrepository.h"
-#include "testutilclient.h"
-
-using namespace AuthServer;
-
-
-class CAuthActive2 : public CActive
- {
- public:
- CAuthActive2(RAuthMgrClient& aClient, CAuthExpression* aExpression,
- TInt aFresh, TBool aClientSpecific, TBool aAuthViaAlias, const TDesC& aClientMessage, TBool aStop = ETrue) :
- CActive(EPriorityNormal),
- iClient(aClient),
- iResult(EFail),
- iRunCount(0),
- iAe(aExpression),
- iStop(aStop),
- iFresh(aFresh),
- iIdToStore(0),
- iClientSpecific(aClientSpecific),
- iAuthViaAlias(aAuthViaAlias),
- iClientMessage(aClientMessage)
- {
- CActiveScheduler::Add(this);
- }
-
- void doAuth()
- {
- SetActive();
- TRequestStatus* status = &iStatus;
- User::RequestComplete(status, KErrNone);
- iRunCount = 0;
- }
- void DoCancel()
- {
- }
-
- TInt RunError(TInt aError)
- {
- iErr = aError;
- CActiveScheduler::Stop();
- return KErrNone;
- }
-
- void RunL()
- {
- iErr = iStatus.Int();
-
- switch (iRunCount)
- {
- case 0:
- {
- iId = 0;
- TUid clientSid = {0};
- iClient.AuthenticateL(*iAe, iFresh, iClientSpecific, clientSid, EFalse, iClientMessage, iId, iStatus);
-
- SetActive();
-
- break;
- }
-
- case 1:
- if (0 != iId)
- {
- iIdToStore = iId->Id();
- delete iId;
- iId = NULL;
- }
-
- iResult = iStatus == KErrNone ? EPass : EFail;
- iErr = iStatus.Int();
- if (iStop)
- {
- CActiveScheduler::Stop();
- }
-
- break;
-
- default:
- iResult = EFail;
-
- if (iStop)
- {
- CActiveScheduler::Stop();
- }
- }
- ++iRunCount;
- }
-
- ~CAuthActive2()
- {
- if(iId != NULL)
- delete iId;
- }
-
-
- RAuthMgrClient& iClient;
- TVerdict iResult;
- TInt iRunCount;
- CAuthExpression* iAe;
- CIdentity* iId;
- TBool iStop;
- TInt iErr;
- TInt iFresh;
- TIdentityId iIdToStore;
- TBool iClientSpecific;
- TBool iAuthViaAlias;
- const TDesC& iClientMessage;
- };
-
-//====================================================================================================
-CTAuthenticate::CTAuthenticate(CTAuthSvrServer& aParent): iParent(aParent)
-/**
- Constructor
- */
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KTAuthenticate);
- }
-
-CTAuthenticate::~CTAuthenticate()
-/**
- Destructor
- */
- {}
-
-TVerdict CTAuthenticate::doTestStepPreambleL()
-/**
- @return - TVerdict code
- Override of base class virtual
- */
- {
- //Call the parent class preamble, setting up the file server, etc
- CTStepActSch::doTestStepPreambleL();
-
- return TestStepResult();
- }
-
-TVerdict CTAuthenticate::doTestStepL()
-/**
- @return - TVerdict code
- Override of base class pure virtual
-
- */
- {
- SetTestStepResult(EFail);
-
-__UHEAP_MARK; // Check for memory leaks
-
- //-----------------------------------------------------------------------------------------------------
- TPtrC displayMessage;
- TBool messageSent = (GetStringFromConfig(ConfigSection(),_L("DisplayMessage"), displayMessage) != EFalse);
- TBuf<100> message(displayMessage);
- ClientMessage(messageSent, displayMessage);
- if(!messageSent)
- {
- message = KNullDesC();
- }
- 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.
- // the pin value generate through the reference plugin is a random
- // value which should be retrieved from the output file and given
- // as an input back for creation of the input file again.
- // If the ini file specified a pin use that instead
- TPtrC pin;
- if (GetStringFromConfig(ConfigSection(),_L("pinvalue"), pin))
- {
- TPinValue pinValue;
- pinValue.Copy(pin);
- //pinValue.
- CreatePinPluginInputFileL(EPinPluginIdentify, pinValue);
- }
- else
- {
- TPinValue pinValue = GetPinFromOutputFileL();
- CreatePinPluginInputFileL(EPinPluginIdentify, pinValue);
- }
-
- CActiveScheduler::Install(iActSchd);
- //Connect to the AuthServer
- AuthServer::RAuthMgrClient authMgrClient1;
- TInt connectVal = authMgrClient1.Connect();
- if (KErrNotFound == connectVal)
- {
- //Retry after a delay
- TTimeIntervalMicroSeconds32 timeInterval = 2000; //2 Milliseconds
- User::After(timeInterval);
- connectVal = authMgrClient1.Connect();
- }
- if (KErrNone != connectVal)
- {
- ERR_PRINTF2(_L("Unable to start a session or other connection error. Err = %d"), connectVal);
- User::LeaveIfError(connectVal);
- }
-
- CleanupClosePushL(authMgrClient1);
-
- //-----------------------------------------------------------------------------------------------------
- // Authenticate by reading the user input
-
- //Check that alias or pluginId is quoted in the ini file
- TPtrC exprString;
- TBool authViaAlias = GetStringFromConfig(ConfigSection(),_L("alias"), exprString);
- TBool authViaExpr = EFalse;
- if(!authViaAlias)
- {
- authViaExpr = GetStringFromConfig(ConfigSection(),_L("plugin1Id"), exprString);
- }
-
- if( ! authViaAlias && ! authViaExpr)
- {
- INFO_PRINTF1(_L("Neither plugin1Id nor alias was specified in the ini file"));
- }
- else
- {
- 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;
- }
-
- TBool defaultpluginusage = EFalse;
- if(GetBoolFromConfig(ConfigSection(),_L("defaultpluginusage"), defaultpluginusage ) == EFalse)
- {
- defaultpluginusage = EFalse;
- }
-
- TBool isSynchronous = EFalse;
- //Retrieve the value of 'synchronous' from the ini file, but if it's absent use the default value
- if(GetBoolFromConfig(ConfigSection(),_L("synchronous"), isSynchronous) != EFalse)
- {
- CallSyncAuthenticateL(authMgrClient1, exprString, freshnessVal, clientSpecificKeyVal, authViaAlias, defaultpluginusage, message);
- }
- else
- {
- CallAsyncAuthenticateL(authMgrClient1, exprString, freshnessVal, clientSpecificKeyVal, authViaAlias, defaultpluginusage, message);
- }
-
- }
-
- CleanupStack::PopAndDestroy(&authMgrClient1); // authClient1
- //Garbage collect the last previously destroyed implementation
- // and close the REComSession if no longer in use
- REComSession::FinalClose();
-__UHEAP_MARKEND;
- return TestStepResult();
- }
-
-
-TVerdict CTAuthenticate::doTestStepPostambleL()
-/**
- @return - TVerdict code
- Override of base class virtual
- */
- {
- //Call the parent postamble, releasing the file handle, etc
- CTStepActSch::doTestStepPostambleL();
- return TestStepResult();
- }
-
-
-void CTAuthenticate::setLastAuthIdL(AuthServer::TIdentityId idToStore)
-/**
- Utility function that stores the most recently authenticated identity in the GlobalDb file
- This should only be called by the Authenticate test step class
- */
- {
- TBuf<100> bufToWrite;
- _LIT16(KFormatLastAuth,"%u");
-
- bufToWrite.Format(KFormatLastAuth, idToStore); //generates:
-
- TDriveUnit sysDrive (RFs::GetSystemDrive());
- TBuf<128> authSvrPolicyFile (sysDrive.Name());
- authSvrPolicyFile.Append(KAuthSvrPolicyFile);
-
- CIniData* policyFile=NULL;
- TRAP_IGNORE(policyFile=CIniData::NewL(authSvrPolicyFile));
- CleanupStack::PushL(policyFile);
-
- TInt ret = writeToNamedConfig(policyFile, KLastAuthIdTag, bufToWrite);
-
- policyFile->WriteToFileL();
- CleanupStack::PopAndDestroy(policyFile);
-
- if (KErrNotFound == ret)
- {
- ERR_PRINTF3(_L("Error while setting last AuthId. Tag %S not found in %S file"), KLastAuthIdTag, &authSvrPolicyFile);
- }
- else
- {
- INFO_PRINTF2(_L("Setting last AuthId was successful. Id = %S"), &bufToWrite);
- }
- }
-
-void CTAuthenticate::CallSyncAuthenticateL(RAuthMgrClient& aAuthMgrClient, const TDesC& aInputString, TInt aFreshness, TBool aClientSpecificKey, TBool aIsAlias, TBool aIsDefault, const TDesC& aClientMessage )
- {
- CIdentity* id = 0;
- TInt error;
- TUid val = TUid::Uid(0);
-
- CAuthExpression* expr = NULL;
-
- if(!aIsAlias)
- {
- if(!aIsDefault)
- {
- CAuthExpression* expr = CreateAuthExprLC(aInputString);
- TRAP(error, id = aAuthMgrClient.AuthenticateL(*expr, aFreshness, aClientSpecificKey, val, EFalse, aClientMessage));
- CleanupStack::PopAndDestroy(expr);
- }
- else
- {
- CAuthExpression* expr = CreateAuthExprLC(KNullDesC());
- TRAP(error, id = aAuthMgrClient.AuthenticateL(*expr, aFreshness, aClientSpecificKey, val, EFalse, aClientMessage));
- CleanupStack::PopAndDestroy(expr);
- }
- }
-
- else
- {
- TRAPD(err,expr = aAuthMgrClient.CreateAuthExpressionL(aInputString));
- if(err != KErrNone)
- {
- SetTestStepError(err);
- return;
- }
-
- CleanupStack::PushL(expr);
- TUid clientSid = {0};
- TRAP(error, id = aAuthMgrClient.AuthenticateL(*expr, aFreshness, aClientSpecificKey, clientSid, EFalse, KNullDesC));
- CleanupStack::PopAndDestroy(expr);
- }
-
- if(error != KErrNone)
- {
- ERR_PRINTF2(_L("Authentication Result error = %d"), error);
- SetTestStepError(error);
- return;
- }
-
- //Main check
- if (0 == id->Id())
- {
- ERR_PRINTF1(_L("Authentication failed. No identity returned"));
- delete id;
- }
-
- else
- {
- INFO_PRINTF1(_L("Authentication successful."));
- CleanupStack::PushL(id);
- //Store the id in the Global Db file
- setLastAuthIdL(id->Id());
- CleanupStack::PopAndDestroy(id);
- SetTestStepResult(EPass);
- }
- }
-
-void CTAuthenticate::CallAsyncAuthenticateL(RAuthMgrClient& aAuthMgrClient, TDesC& aInputString, TInt aFreshness, TBool aClientSpecificKey, TBool aIsAlias, TBool aIsDefault, const TDesC& aClientMessage)
- {
- CAuthExpression* expr = 0;
- if(!aIsAlias)
- {
- if(!aIsDefault)
- {
- expr = CreateAuthExprLC(aInputString);
- }
- else
- {
- expr = CreateAuthExprLC(KNullDesC());
- }
- }
- else
- {
- TRAPD(err,expr = aAuthMgrClient.CreateAuthExpressionL(aInputString));
- if(err != KErrNone)
- {
- SetTestStepError(err);
- return;
- }
- CleanupStack::PushL(expr);
- }
-
- CAuthActive2 active1(aAuthMgrClient, expr, aFreshness, aClientSpecificKey, aIsAlias, aClientMessage);
- active1.doAuth();
- CActiveScheduler::Start();
-
- if(expr)
- {
- CleanupStack::PopAndDestroy(expr);
- }
-
-
- if(EPass != active1.iResult)
- {
- ERR_PRINTF3(_L("Authentication Result error = %d, iResult = %d\n"), active1.iErr, active1.iResult);
- SetTestStepError(active1.iErr);
- }
-
- else if ((KErrNone == active1.iErr) && (EPass == active1.iResult))
- {
- INFO_PRINTF1(_L("No Authentication Errors."));
- }
-
- else
- {
- ERR_PRINTF3(_L("Unexpected Authentication Result. error = %d, iResult = %d\n"), active1.iErr, active1.iResult);
- }
-
- //Main check
- if (0 == active1.iIdToStore)
- {
- ERR_PRINTF1(_L("Authentication failed. No identity returned"));
- }
-
- else
- {
- INFO_PRINTF1(_L("Authentication successful."));
- //Store the id in the Global Db file
- setLastAuthIdL(active1.iIdToStore);
- SetTestStepResult(EPass);
- }
- }
-
-//---------------------------------------------------------------------------------------------------------------------------------
-
-CTInitCenRep::CTInitCenRep(CTAuthSvrServer& aParent): iParent(aParent)
-/**
- Constructor
-*/
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KTInitCenRep);
- }
-
-
- CTInitCenRep::~CTInitCenRep()
-/**
- Destructor
-*/
- {}
-
-TVerdict CTInitCenRep::doTestStepPreambleL()
-/**
- @return - TVerdict code
- Override of base class virtual
-*/
- {
- //Call the parent class preamble, setting up the file server, etc
- CTStepActSch::doTestStepPreambleL();
- return TestStepResult();
- }
-
-TVerdict CTInitCenRep::doTestStepL()
-/**
- @return - TVerdict code
- Override of base class pure virtual
-
- */
- {
-
- __UHEAP_MARK; // Check for memory leaks
-
- //Initialize the repository
- CRepository* repository = CRepository::NewL(KUidAuthServerRepository);
- CleanupStack::PushL(repository);
-
- //If default plugin is specified, set it
- TPtrC defaultPluginFromFile;
- if(GetStringFromConfig(ConfigSection(),_L("default"), defaultPluginFromFile) != EFalse)
- {
- TLex pluginIdString = TLex(defaultPluginFromFile);
- TPluginId defaultPluginId(0);
-
- pluginIdString.Val(defaultPluginId, EHex );
- SetDefaultPluginIdL(defaultPluginId);
-
- //Retrieve the value
- TInt value(0);
- User::LeaveIfError(repository->Get(KAuthDefaultPlugin, value));
- CleanupStack::PopAndDestroy(repository);
- SetTestStepResult(EPass);
- return TestStepResult();
- }
- TInt aliasCount = 0;
-
- // Retrieve the value of 'aliasCount' from the ini file, but if it's absent use the default value.
- // This value is used for validation of cenrep file.
- if(GetIntFromConfig(ConfigSection(),_L("aliasCount"), aliasCount) != EFalse)
- {
- User::LeaveIfError(repository->Set(EAuthAliasesCount, aliasCount));
- CleanupStack::PopAndDestroy(repository);
- SetTestStepResult(EPass);
- return TestStepResult();
- }
-
- User::LeaveIfError(repository->Get(EAuthAliasesCount, aliasCount));
- // since we will only have four aliases in the cenrep file.
- __ASSERT_DEBUG(aliasCount == 4, User::Leave(KErrArgument));
-
- // Retrieve the value of 'unicode' from the ini file, but if it's absent use the default value.
- // For unicode tests we need to set the aliases in addition to thier corresponding alias string.
- TBool isUnicode = EFalse;
- if(GetBoolFromConfig(ConfigSection(),_L("unicode"), isUnicode) != EFalse)
- {
- TBuf<24> alias;
- TPtrC aliasValue;
-
- for(TInt i = 0; i < aliasCount; ++i)
- {
- alias.Format(_L("alias%d"), i);
- if (GetStringFromConfig(ConfigSection(), alias, aliasValue) != EFalse)
- {
- User::LeaveIfError(repository->Set(EAuthAliases+i, aliasValue));
- }
- }
- }
-
- // for each alias ,set the corresponding alias string expression.
- TBuf<24> aliasString;
- TPtrC aliasStringValue;
-
- for(TInt i = 0; i < aliasCount; ++i)
- {
- aliasString.Format(_L("aliasString%d"), i);
- if (GetStringFromConfig(ConfigSection(), aliasString, aliasStringValue) != EFalse)
- {
- User::LeaveIfError(repository->Set(EAuthAliasesExpr+i, aliasStringValue));
- }
- }
-
- CleanupStack::PopAndDestroy(repository);
- SetTestStepResult(EPass);
-
-__UHEAP_MARKEND;
- return TestStepResult();
- }
-
-TVerdict CTInitCenRep::doTestStepPostambleL()
-/**
- @return - TVerdict code
- Override of base class virtual
- */
- {
- //Call the parent postamble, releasing the file handle, etc
- CTStepActSch::doTestStepPostambleL();
- return TestStepResult();
- }
-
-//====================================================================================================
-
-CTSysTimeUpdate::CTSysTimeUpdate(CTAuthSvrServer& aParent): iParent(aParent)
-/**
- Constructor
- */
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KTUpdateSysTime);
- }
-
-
-CTSysTimeUpdate::~CTSysTimeUpdate()
-/**
- Destructor
- */
- {}
-
-TVerdict CTSysTimeUpdate::doTestStepPreambleL()
-/**
- @return - TVerdict code
- Override of base class virtual
- */
- {
- //Call the parent class preamble, setting up the file server, etc
- CTStepActSch::doTestStepPreambleL();
-
- return TestStepResult();
- }
-
-TVerdict CTSysTimeUpdate::doTestStepL()
-/**
- @return - TVerdict code
- Override of base class pure virtual
-
- */
- {
- SetTestStepResult(EFail);
-
-__UHEAP_MARK; // Check for memory leaks
-
- //Get the "time" which must be added to the system time.
- TInt timeVal(0);
- GetIntFromConfig(ConfigSection(), _L("time"), timeVal);
-
- TTime currentTime;
- currentTime.UniversalTime();
-
- if(timeVal == 0 )
- {
- //Set the secure clock time.
- RTestUtilSession session;
- session.Connect();
- CleanupClosePushL(session);
- TInt ret = session.SetSecureClock(0);
- INFO_PRINTF2(_L("Set the secure clock --- %d"), ret);
- CleanupStack::PopAndDestroy(&session);
- }
- else
- {
- //Increment the time only if secure clock is present
- TInt err = currentTime.UniversalTimeSecure();
- INFO_PRINTF2(_L("Getting the secure clock time returned %d"), err );
- if(!err)
- {
- INFO_PRINTF1(_L("Secure clock found !"));
- TTimeIntervalSeconds increment(timeVal);
- currentTime += increment;
- User::LeaveIfError(User::SetUTCTime(currentTime));
- }
- else
- {
- INFO_PRINTF1(_L("Secure clock not found !"));
- }
-
- }
-
-
- SetTestStepResult(EPass);
-
-__UHEAP_MARKEND;
- return TestStepResult();
- }
-
-
-TVerdict CTSysTimeUpdate::doTestStepPostambleL()
-/**
- @return - TVerdict code
- Override of base class virtual
- */
- {
- //Call the parent postamble, releasing the file handle, etc
- CTStepActSch::doTestStepPostambleL();
- return TestStepResult();
- }