diff -r abbed5a4b42a -r 8d540f55e491 networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_ups_step.cpp --- a/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_ups_step.cpp Tue Aug 31 16:45:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,613 +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 "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: -// - -/** - @file - @test - @internalComponent - Internal Symbian test code -*/ - -#include "te_ipups_ups_step.h" -#include "upstestnotifierproperties.h" -#include - -static TInt ThreadFunction(TAny *) - { - return KErrNone; - } - -CIpUpsStep::~CIpUpsStep() -/** - * Destructor - */ - { - } // End of function - - -CIpUpsStep::CIpUpsStep() -/** - * Constructor - */ - { - SetTestStepName(KIpUpsClientStep); - } // End of function - - -TVerdict CIpUpsStep::doTestStepPreambleL() -/** - * @return - TVerdict code - * Override of base class virtual - */ - { - TSecurityPolicy nullPolicy(ECapability_None); - TInt err; - - //Properties modified to be returned to test harness from test notifier - err = RProperty::Define(KUidPSUPSTestNotifCategory, KUnNotifyCount, KUnCountKeyType, nullPolicy, nullPolicy); - if (err != KErrAlreadyExists && err != KErrNone) - { - User::LeaveIfError(err); - } - - err = RProperty::Define(KUidPSUPSTestNotifCategory, KUnNotifyValues, KUnNotifyValuesKeyType, nullPolicy, nullPolicy); - if (err != KErrAlreadyExists && err != KErrNone) - { - User::LeaveIfError(err); - } - - //Properties test notifier requires from test harness about the button press and delay - err = RProperty::Define(KUidPSUPSTestNotifCategory, KUtButtonPress, KUtButtonPressKeyType, nullPolicy, nullPolicy); - if (err != KErrAlreadyExists && err != KErrNone) - { - User::LeaveIfError(err); - } - - err = RProperty::Define(KUidPSUPSTestNotifCategory, KUtButtonPressDelay, KUtButtonPressDelayKeyType, nullPolicy, nullPolicy); - if (err != KErrAlreadyExists && err != KErrNone) - { - User::LeaveIfError(err); - } - - //Get the testNotifier working mode, filemode or P&S mode - User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUtFileOverride, iTestNotifierMode)); - - //Set the property to override working of testNotifier in P&S mode instead of filemode - User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtFileOverride, KFileOverride)); - - //Initialise optional data iNoOfAuthoriseCalls (should be '1' minimum). - iNoOfAuthoriseCalls = 1; - - //Initialise optional data iPromptTriggerCount (Initialising with '-1' means no check if user not specfied in INI file). - iPromptTriggerCount = -1; - - //Read data from INI file - GetHexFromConfig(ConfigSection(), KIpUpsServiceId, iServiceUID); - GetStringFromConfig(ConfigSection(),KIpUpsDestination, iDestination); - GetStringFromConfig(ConfigSection(),KIpUpsOpaqueData, iOpaqueData); - GetStringFromConfig(ConfigSection(),KIpUpsDialogOptionSelection, iDialogOption); - GetBoolFromConfig(ConfigSection(),KIpUpsPlatSecPass, iPlatSecPass); - GetStringFromConfig(ConfigSection(),KIpUpsExpectedDecision, iExpectedUpsDecision); - GetIntFromConfig(ConfigSection(),KIpUpsPromptTriggerCount, iPromptTriggerCount); - GetIntFromConfig(ConfigSection(),KIpUpsNoOfAuthoriseCalls, iNoOfAuthoriseCalls); - GetBoolFromConfig(ConfigSection(),KIpUpsCancelPromptCall, iCancelPromptCall); - - GetBoolFromConfig(ConfigSection(),KIpUpsAlwaysOpenNewSession, iAlwaysOpenNewSession); - - GetBoolFromConfig(ConfigSection(),KIpUpsUseSameSubSession, iUseSameSubSession); - GetBoolFromConfig(ConfigSection(),KIpUpsUseSameSubSessionAfterClose, iUseSameSubSessionAfterClose); - GetBoolFromConfig(ConfigSection(),KIpUpsAlwaysOpenNewSubSession, iAlwaysOpenNewSubSession); - - //Keep the initial count of the notifier recorded, should be '0' - User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, iNotifyCount)); - - SetTestStepResult(EPass); - return TestStepResult(); - } // End of function. - - -TVerdict CIpUpsStep::doTestStepL() -/** - * @return - TVerdict code - * Override of base class virtual - */ - { - UserPromptService::RUpsSession upsSession; - UserPromptService::RUpsSubsession upsSubSession[KMaxNoOfAuthoriseCalls]; - - RThread dummyThread[KMaxNoOfAuthoriseCalls]; - TRequestStatus threadStatus; - - TInt notifyCountBeforeTest = iNotifyCount; - TInt notifyCountAfterTest = 0; - - TServiceId serviceId = TUid::Uid(iServiceUID); - - TInt subSessionCntr = 0; - - //Repeat call to Authorise as specified in INI file (through NoOfAuthoriseCalls data) - for (TInt cntr=0; cntr dummyThreadName; - dummyThreadName.Copy(_L("DummyThread_0123456789")); - - User::LeaveIfError(dummyThread[subSessionCntr].Create(dummyThreadName.Right(dummyThreadName.Length()-subSessionCntr), ThreadFunction, 4096, 4096, 4096, 0, EOwnerThread)); - - dummyThread[subSessionCntr].Rendezvous(threadStatus); - dummyThread[subSessionCntr].Resume(); - User::WaitForRequest(threadStatus); - - upsSubSession[subSessionCntr] = UserPromptService::RUpsSubsession(); - User::LeaveIfError(upsSubSession[subSessionCntr].Initialise(upsSession, dummyThread[subSessionCntr])); - INFO_PRINTF1(_L("UPS SubSession Initialised.")); - } - - //Get the dialog option for this iteration (specified in the INI file through - //DialogOptionSelection data, separated using KIniFileDelimeter). - TBuf<32> dialogOption; - GetValueAt(cntr, iDialogOption, KIniFileDelimeter, dialogOption); - - UserPromptService::TPromptResult promptResult; - promptResult.iSelected = ButtonToOption(dialogOption); - - TPckg resultPckg(promptResult); - - //Set the Dialog Option selection by user (specifies through DialogOptionSelection data value in INI file). - User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtButtonPress, resultPckg)); - User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtButtonPressDelay, iCancelPromptCall?1:0)); - - INFO_PRINTF2(_L("Dialog Option Selection ( %S )."), &dialogOption); - - //Get the Notify Count BEFORE call to Authorise - User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, notifyCountBeforeTest)); - - TUpsDecision upsDecision; - TRequestStatus status; - - if ( iOpaqueData.Length() > 0 ) - { - HBufC8* converter = HBufC8::NewLC(iOpaqueData.Length()); - converter->Des().Copy(iOpaqueData); - iOpaqueDataStored = converter->Ptr(); - CleanupStack::PopAndDestroy(); //converter - - INFO_PRINTF1(_L("Opaque data present.")); - upsSubSession[subSessionCntr].Authorise(iPlatSecPass, serviceId, iDestination, iOpaqueDataStored, upsDecision, status); - } - else - { - INFO_PRINTF1(_L("Opaque data NOT present.")); - upsSubSession[subSessionCntr].Authorise(iPlatSecPass, serviceId, iDestination, upsDecision, status); - } - - - if (iCancelPromptCall) - { - upsSubSession[subSessionCntr].CancelPrompt(); - INFO_PRINTF1(_L("CancelPrompt called on UPS SubSession.")); - } - - User::WaitForRequest(status); - - SetTestStepError(status.Int()); - User::LeaveIfError(status.Int()); - - //Get the Notify Count AFTER call to Authorise - User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, notifyCountAfterTest)); - - INFO_PRINTF3(_L("NotifyCount Before Authorise ( %d ) <> NotifyCount After Authorise ( %d )"), notifyCountBeforeTest, notifyCountAfterTest); - - if ( iExpectedUpsDecision.Length() > 0 ) - { - //Get the expected UPS decision for this iteration (specified in the INI file through - //ExpectedUpsDecision data, separated using KIniFileDelimeter). - TBuf<32> expectedUpsDecision; - GetValueAt(cntr, iExpectedUpsDecision, KIniFileDelimeter, expectedUpsDecision); - - TPtrC upsDecisionString = TUpsDecisionToString(upsDecision); - - INFO_PRINTF3(_L("UPS Decision Expected ( %S ) <> UPS Decision Returned ( %S )"), &expectedUpsDecision, &upsDecisionString); - - //Compare the expected and returned UPS decision - TEST( expectedUpsDecision.Compare(TUpsDecisionToString(upsDecision)) == 0); - } - - VerifyAndPrintPromptDataL(); - - //Check what user requested to do with SubSession for further iterations (if any). - if ( iUseSameSubSession ) - { - INFO_PRINTF2(_L("Using UPS SubSession ( %d )."), subSessionCntr); - } - if ( iUseSameSubSessionAfterClose || iAlwaysOpenNewSession ) - { - upsSubSession[subSessionCntr].Close(); - INFO_PRINTF2(_L("UPS SubSession Closed ( %d )."), subSessionCntr); - dummyThread[subSessionCntr].Close(); - } - else if ( iAlwaysOpenNewSubSession ) - { - ++subSessionCntr; - } - - if ( iAlwaysOpenNewSession ) - { - upsSession.Close(); - INFO_PRINTF1(_L("UPS Session Closed.")); - } - } //End - for loop - - - //As with multiple clients , its better not to try to synchronize the calls which change the notify count. - //When all the concurrent calls are done , check the count finally through test step notifycount. - if (iPromptTriggerCount >= 0) - { - TEST( notifyCountAfterTest == (iNotifyCount+iPromptTriggerCount) ); - } - - //Ensure all sub sessions are closed - for (TInt cntr=0; cntrDes()); - - User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyValues, bufPtr)); - - RDesReadStream promptDataStream(bufPtr); - - iPromptData = UserPromptService::CPromptData::NewL(); - CleanupStack::PushL(iPromptData); - iPromptData->InternalizeL(promptDataStream); - - INFO_PRINTF2(_L("Client Name ( %S )"), &iPromptData->iClientName); - INFO_PRINTF2(_L("Vendor Name ( %S )"), &iPromptData->iVendorName); - INFO_PRINTF2(_L("Destination ( %S )"), &iPromptData->iDestination); - INFO_PRINTF2(_L("ClientSid ( %08x )"), iPromptData->iClientSid.iId); - INFO_PRINTF2(_L("ServerSid ( %08x )"), iPromptData->iServerSid.iId); - INFO_PRINTF2(_L("ServiceId ( %08x )"), iPromptData->iServiceId); - - TInt count = iPromptData->iDescriptions.Count(); - for (TInt cntr = 0; cntr < count; ++cntr) - { - INFO_PRINTF3(_L("Descriptions(%d) : %S "), cntr, iPromptData->iDescriptions[cntr]); - } - - //Print Dialog Flags - TBuf<64> dialogFlags; - - if ( iPromptData->iFlags & UserPromptService::ETrustedClient ) - { - dialogFlags.Append(_L(" TrustedClient ")); - } - if ( iPromptData->iFlags & UserPromptService::EBuiltInApp ) - { - dialogFlags.Append(_L(" BuiltInApp ")); - } - INFO_PRINTF2(_L("DialogFlags Set to ( %S )"), &dialogFlags); - - TPtrC expectedDialogOptions; - TBuf<64> bufOptions; - - GetStringFromConfig(ConfigSection(),KExpectedDialogOptions, iExpectedDialogOptions); - - if (iExpectedDialogOptions.Length() > 0) - { - INFO_PRINTF2(_L("Options Expected ( %S )"), &iExpectedDialogOptions); - - //Check if options presented are as expected - TBool result = OptionsFlagToString(iPromptData->iOptions, bufOptions); - TEST(result != EFalse); - } - else - { - OptionsFlagToString(iPromptData->iOptions, bufOptions, EFalse); - } - - INFO_PRINTF2(_L("Options Presented ( %S )"), &bufOptions); - - TEST(iPromptData->iServiceId.iUid == iServiceUID); - TEST(iPromptData->iDestination == iDestination); - - CleanupStack::PopAndDestroy(2); //buf, iPromptData - - return EFalse; - } // End of function. - -TBool CIpUpsStep::OptionsFlagToString(TUint aOptions, TDes& aOptionString, TBool aCheckAgainstExpectedOpt) -/** OptionsFlagToString converts the dialog option(s) presented to string and check if the presented option - * is amongst the one which is expected(from INI file) or not if aCheckAgainstExpectedOpt is set to ETrue. - * - * @return - TBool - ETrue if presented options are the ones which are expected as specified in the INI file. - * - */ - { - _LIT(KOptionYes, "Yes"); - _LIT(KOptionNo, "No"); - _LIT(KOptionSessionYes, "SessionYes"); - _LIT(KOptionAlways, "Always"); - _LIT(KOptionNever, "Never"); - _LIT(KOptionSessionNo, "SessionNo"); - - const TPtrC policyOptions[] = {KOptionYes(), KOptionNo(), KOptionSessionYes(), KOptionAlways(), - KOptionNever(), KOptionSessionNo()}; - - TInt optionsCntr = 0; - TBool isOptionExpected = ETrue; - - aOptionString.Append(_L("-")); - - if (aOptions & UserPromptService::CPolicy::EYes) - { - aOptionString.Copy(policyOptions[optionsCntr]); - aOptionString.Append(_L("-")); - - if (aCheckAgainstExpectedOpt) - { - if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound) - { - isOptionExpected = EFalse; - } - } - } - ++optionsCntr; - - if (aOptions & UserPromptService::CPolicy::ENo) - { - aOptionString.Append(policyOptions[optionsCntr]); - aOptionString.Append(_L("-")); - - if (aCheckAgainstExpectedOpt) - { - if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound) - { - isOptionExpected = EFalse; - } - } - } - ++optionsCntr; - - if (aOptions & UserPromptService::CPolicy::ESessionYes) - { - aOptionString.Append(policyOptions[optionsCntr]); - aOptionString.Append(_L("-")); - - if (aCheckAgainstExpectedOpt) - { - if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound) - { - isOptionExpected = EFalse; - } - } - } - ++optionsCntr; - - if (aOptions & UserPromptService::CPolicy::EAlways) - { - aOptionString.Append(policyOptions[optionsCntr]); - aOptionString.Append(_L("-")); - - if (aCheckAgainstExpectedOpt) - { - if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound) - { - isOptionExpected = EFalse; - } - } - } - ++optionsCntr; - - if (aOptions & UserPromptService::CPolicy::ENever) - { - aOptionString.Append(policyOptions[optionsCntr]); - aOptionString.Append(_L("-")); - - if (aCheckAgainstExpectedOpt) - { - if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound) - { - isOptionExpected = EFalse; - } - } - } - ++optionsCntr; - - if (aOptions & UserPromptService::CPolicy::ESessionNo) - { - aOptionString.Append(policyOptions[optionsCntr]); - aOptionString.Append(_L("-")); - - if (aCheckAgainstExpectedOpt) - { - if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound) - { - isOptionExpected = EFalse; - } - } - } - - return isOptionExpected; - } // End of function. - -/** GetValueAt provides the value of data at a specific index (specified by aPos) -* String containing the values is specified thorugh aArrayString and multiple values -* are separated by delimeter aDelimeter. -* aValue is returned. -*/ -void CIpUpsStep::GetValueAt(const TInt aPos, const TPtrC& aArrayString, const TChar aDelimeter, TDes& aValue) - { - TInt posCntr=0; - TInt itemCntr = -1; - - //Initialise it with blank string to avoid any previous copies - aValue.Copy(_L("")); - - while (posCntr < aArrayString.Length() && itemCntr != aPos) - { - if (aArrayString[posCntr] != aDelimeter) - { - aValue.Append(aArrayString[posCntr]); - } - else - { - ++itemCntr; - //Is this the item we are looking for, if not, make space to next one - if (itemCntr != aPos) - { - aValue.Copy(_L("")); - } - } - ++posCntr; - } - } - -/* TUpsDecisionToString converts TUpsDecision to string. -*/ -TPtrC CIpUpsStep::TUpsDecisionToString(TUpsDecision aDecision) - { - if(aDecision == EUpsDecYes) - { - return _L("Yes"); - } - else if(aDecision == EUpsDecNo) - { - return _L("No"); - } - else if(aDecision == EUpsDecSessionYes) - { - return _L("SessionYes"); - } - else if(aDecision == EUpsDecSessionNo) - { - return _L("SessionNo"); - } - else - { - ERR_PRINTF1(_L("Invalid UPS Descision, returning No by default.")); - return _L("No"); - } - } // End of function. - -/* TUpsDecisionFromString converts string value to TUpsDecision. -*/ -TUpsDecision CIpUpsStep::TUpsDecisionFromString(const TPtrC& aDecision) - { - if(aDecision.CompareF(_L("Yes"))==0) - { - return EUpsDecYes; - } - else if(aDecision.CompareF(_L("No"))==0) - { - return EUpsDecNo; - } - else if(aDecision.CompareF(_L("SessionYes"))==0) - { - return EUpsDecSessionYes; - } - else if(aDecision.CompareF(_L("SessionNo"))==0) - { - return EUpsDecSessionNo; - } - else - { - ERR_PRINTF1(_L("Invalid UPS Descision, returning No by default.")); - return EUpsDecNo; - } - } // End of function. - -/* ButtonToOption converts string value of button presented to CPolicy::TOptions. -*/ -UserPromptService::CPolicy::TOptions CIpUpsStep::ButtonToOption(const TPtrC& aButton) - { - if(aButton.CompareF(_L("Yes"))==0) - { - return UserPromptService::CPolicy::EYes; - } - else if(aButton.CompareF(_L("No"))==0) - { - return UserPromptService::CPolicy::ENo; - } - else if(aButton.CompareF(_L("Session"))==0) - { - return UserPromptService::CPolicy::ESession; - } - else if(aButton.CompareF(_L("SessionYes"))==0) - { - return UserPromptService::CPolicy::ESessionYes; - } - else if(aButton.CompareF(_L("Always"))==0) - { - return UserPromptService::CPolicy::EAlways; - } - else if(aButton.CompareF(_L("Never"))==0) - { - return UserPromptService::CPolicy::ENever; - } - else if(aButton.CompareF(_L("SessionNo"))==0) - { - return UserPromptService::CPolicy::ESessionNo; - } - else - { - ERR_PRINTF1(_L("Invalid Button Option, returning Policy Option No by default.")); - return UserPromptService::CPolicy::ENo; - } - } // End of function.