diff -r 641f389e9157 -r a71299154b21 authenticationservices/authenticationserver/test/tauthcliserv/step_mgrclient.cpp --- a/authenticationservices/authenticationserver/test/tauthcliserv/step_mgrclient.cpp Tue Aug 31 17:00:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,501 +0,0 @@ -/* -* Copyright (c) 2005-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 -#include -#include - -#include "authserver/authmgrclient.h" -#include "authserver/identity.h" -#include "tauthcliservstep.h" - -using namespace AuthServer; - -class CRegActive : public CActive - { - public: - CRegActive(RAuthMgrClient& aClient, CIdentity*& aResult, TBool aStop = ETrue) : - CActive(EPriorityNormal), - iFirstTime(true), - iClient(aClient), - iResult(aResult), - iStop(aStop) - { - CActiveScheduler::Add(this); - } - void doReg() - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - iFirstTime = ETrue; - } - void DoCancel() - { - } - void RunL() - { - if (iFirstTime) - { - SetActive(); - iStatus = KRequestPending; - iClient.RegisterIdentityL(iResult, _L("SOMENAME"), iStatus); - iFirstTime = false; - } - else - { - if (iStop) - { - CActiveScheduler::Stop(); - } - iErr = iStatus.Int(); - } - } - TBool iFirstTime; - RAuthMgrClient& iClient; - CIdentity*& iResult; - TBool iStop; - TInt iErr; - }; - -class CTrainActive : public CActive - { - public: - CTrainActive(RAuthMgrClient& aClient, TBool aStop = ETrue) : - CActive(EPriorityNormal), - iClient(aClient), - iResult(EFail), - iRunCount(0), - iStop(aStop) - { - CActiveScheduler::Add(this); - } - void doTrain() - { - - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - iRunCount = 0; - } - void DoCancel() - { - } - void RunL() - { - iErr = iStatus.Int(); - if (iStatus.Int() != KErrNone) - { - } - switch (iRunCount) - { - case 0: - iStatus = KRequestPending; - iAe = AuthExpr(0x10274104); - iId = 0; - - iClient.AuthenticateL(*iAe, 10, EFalse, EFalse, iId, iStatus); - SetActive(); - - break; - case 1: - delete iAe; - delete iId; - iStatus = KRequestPending; - iClient.TrainPlugin(22, 0x10274104, iStatus); - SetActive(); - - break; - case 2: - iResult = iStatus.Int() == 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; - }; - -class CTrainActive2 : public CActive - { - public: - CTrainActive2(RAuthMgrClient& aClient, TBool aStop = ETrue) : - CActive(EPriorityNormal), - iClient(aClient), - iRunCount(0), - iStop(aStop) - { - CActiveScheduler::Add(this); - } - void doTrain() - { - SetActive(); - iClient.TrainPlugin(22, 0x10274105, iStatus); - } - void DoCancel() - { - } - void RunL() - { - iErr = iStatus.Int(); - if (iStop) - { - CActiveScheduler::Stop(); - } - } - - RAuthMgrClient& iClient; - TInt iRunCount; - CAuthExpression* iAe; - CIdentity* iId; - TBool iStop; - TInt iErr; - }; - -class CCancelActive : public CActive - { - public: - CCancelActive(RAuthMgrClient& aClient) : - CActive(EPriorityNormal), - iClient(aClient), - iResult(EFail), - iRunCount(0) - { - CActiveScheduler::Add(this); - } - void doIdCancel() - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - iMode = 1; - iRunCount = 0; - } - void doRegCancel() - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - iMode = 2; - iRunCount = 0; - } - void doTrainCancel() - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - iMode = 0; - iRunCount = 0; - } - void DoCancel() - { - } - void RunL() - { - if (iStatus.Int() != KErrNone) - { - //RDebug::Printf("CCancelActive error: %d", iStatus.Int()); - } - switch (iRunCount) - { - case 0: - iStatus = KRequestPending; - iAe = AuthExpr(0x10274105); - iId = 0; - switch (iMode) - { - case 2: - iClient.RegisterIdentityL(iId, _L("RegCancelID"), iStatus); - break; - case 1: - iClient.AuthenticateL(*iAe, 0, EFalse, ETrue, iId, iStatus); - break; - case 0: - iClient.TrainPlugin(22, 0x10274105, iStatus); - break; - } - SetActive(); - User::After(1000000); - iClient.Cancel(); - - break; - case 1: - //iStatus = KRequestPending; - - delete iAe; - delete iId; - //SetActive(); - - //break; - case 2: - iResult = iStatus.Int() == KErrCancel ? EPass : EFail; - CActiveScheduler::Stop(); - - break; - default: - iResult = EFail; - CActiveScheduler::Stop(); - } - ++iRunCount; - } - RAuthMgrClient& iClient; - TVerdict iResult; - TInt iRunCount; - CAuthExpression* iAe; - CIdentity* iId; - TInt iMode; - }; - - -CTStepMgrClient::CTStepMgrClient() - { - SetTestStepName(KTStepMgrClient); - } - - -TBool CTStepMgrClient::TestMultiRegisterL(RAuthMgrClient& client) - { - CIdentity* result = 0; - CRegActive active(client, result); - - CIdentity* result2 = 0; - RAuthMgrClient client2; - User::LeaveIfError(client2.Connect()); - CleanupClosePushL(client2); - - CRegActive active2(client2, result2, EFalse); - - active.doReg(); - active2.doReg(); - - CActiveScheduler::Start(); - - TEST(active.iErr == KErrNone); - TEST(active2.iErr == KErrServerBusy); - - delete result; - delete result2; - CleanupStack::PopAndDestroy(&client2); - return ETrue; - - } - -TBool CTStepMgrClient::TestRegister(RAuthMgrClient& client) - { - CIdentity* result = 0; - CRegActive active(client, result); - - active.doReg(); - - CActiveScheduler::Start(); - if (result == 0) - { - return EFalse; - } - - INFO_PRINTF3(_L("Id = %d , KeyLength = %d\n"), result->Id(), result->Key().KeyData().Size()); - delete result; - result = 0; - return ETrue; - } - -TBool CTStepMgrClient::TestMultiTrainL(RAuthMgrClient& client) - { - CTrainActive2 active(client); - active.doTrain(); - - RAuthMgrClient client2; - User::LeaveIfError(client2.Connect()); - CleanupClosePushL(client2); - - CTrainActive2 active2(client2, EFalse); - active2.doTrain(); - - CActiveScheduler::Start(); - - TEST(active.iErr == KErrAuthServPluginCancelled); // blocking plugin returns - // cancelled if left to - // complete - TEST(active2.iErr == KErrServerBusy); - - CleanupStack::PopAndDestroy(&client2); - INFO_PRINTF3(_L("Training Result (%d,%d)\n"), - active.iErr, - active2.iErr); - - return true; - } - - -TBool CTStepMgrClient::TestTrain(RAuthMgrClient& client) - { - CTrainActive active(client); - active.doTrain(); - CActiveScheduler::Start(); - INFO_PRINTF2(_L("Training Result = %d\n"), active.iResult == EPass); - return active.iResult == EPass; - } - -TBool CTStepMgrClient::TestCancellation(RAuthMgrClient& client) - { - CCancelActive active(client); - - active.doTrainCancel(); - CActiveScheduler::Start(); - TEST(active.iResult == EPass); - INFO_PRINTF2(_L("Training Cancel Result = %d\n"), active.iResult == EPass); - - active.doTrainCancel(); - CActiveScheduler::Start(); - TEST(active.iResult == EPass); - INFO_PRINTF2(_L("Training Cancel Result = %d\n"), active.iResult == EPass); - - active.doTrainCancel(); - CActiveScheduler::Start(); - TEST(active.iResult == EPass); - INFO_PRINTF2(_L("Training Cancel Result = %d\n"), active.iResult == EPass); - - //User::After(5000000); - active.doIdCancel(); - CActiveScheduler::Start(); - TEST(active.iResult == EPass); - INFO_PRINTF2(_L("Id Cancel Result = %d\n"), active.iResult == EPass); - - active.doIdCancel(); - CActiveScheduler::Start(); - TEST(active.iResult == EPass); - INFO_PRINTF2(_L("Id Cancel Result = %d\n"), active.iResult == EPass); - - active.doRegCancel(); - CActiveScheduler::Start(); - TEST(active.iResult == EPass); - INFO_PRINTF2(_L("Registration Cancel Result = %d\n"), active.iResult == EPass); - - return active.iResult == EPass; - } - -TVerdict CTStepMgrClient::doTestStepL() - { - TInt r = 0; - - if (TestStepResult() != EPass) - { - INFO_PRINTF1(_L("Previous step failed")); - - return TestStepResult(); - } - - - WaitForServerToReleaseDb(); - - - TDriveUnit sysDrive (RFs::GetSystemDrive()); - TDriveName sysDriveName (sysDrive.Name()); - - _LIT(KDbSrcFile ,"\\authdb0.db"); - TBuf<64> dbSrcFileName (sysDriveName); - dbSrcFileName.Append(KDbSrcFile); - - TBuf<128> dbName(KDbName); - dbName[0] = 'A' + sysDrive; - - r = BaflUtils::CopyFile(iFs, dbSrcFileName, dbName); - - INFO_PRINTF2(_L("File copy returned %d"), r); - - User::LeaveIfError(r); - - - - __UHEAP_MARK; - SetTestStepResult(EPass); - - CActiveScheduler::Install(iActSchd); - - - RAuthMgrClient mgrclient; - User::LeaveIfError(mgrclient.Connect()); - CleanupClosePushL(mgrclient); - - mgrclient.RemoveIdentityL(2); - - - RIdentityIdArray ids; - mgrclient.IdentitiesL(ids); - CleanupClosePushL(ids); - - TESTL(ids.Count() == 3); - - // ensure each expected identity occurs once. - // (This technique is simple but doesn't generalise.) - TInt sum = 0; - for (TInt i = 0; i < 3; ++i) - { - TIdentityId id = ids[i]; - TESTL(id == 1 || id == 3 || id == 22); - sum += id; - } - TESTL(sum == 1 + 3 + 22); - - CleanupStack::PopAndDestroy(&ids); - - TEST(TestRegister(mgrclient)); - - mgrclient.IdentitiesL(ids); - CleanupClosePushL(ids); - TEST(ids.Count() == 4); - CleanupStack::PopAndDestroy(&ids); - - TEST(TestTrain(mgrclient)); - - INFO_PRINTF1(_L("Testing cancellation")); - TEST(TestCancellation(mgrclient)); - - INFO_PRINTF1(_L("Testing simultaneous registrations are blocked")); - TEST(TestMultiRegisterL(mgrclient)); - - INFO_PRINTF1(_L("Testing simultaneous trainings are blocked")); - TestMultiTrainL(mgrclient); - - // Last plugin can't be removed - TRAPD(err, mgrclient.ForgetPluginL(22,0x10274104)); - TEST(err == KErrAuthServCanNotRemoveLastPlugin); - - CleanupStack::PopAndDestroy(1, &mgrclient); - - __UHEAP_MARKEND; - return EPass; - }