--- a/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_ups_step.cpp Tue Feb 02 01:27:53 2010 +0200
+++ /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 <s32mem.h>
-
-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<iNoOfAuthoriseCalls && cntr<KMaxNoOfAuthoriseCalls; cntr++)
- {
- if (upsSession.Handle() == KNullHandle)
- {
- User::LeaveIfError(upsSession.Connect());
- INFO_PRINTF1(_L("UPS Session Started."));
- }
-
- if (upsSubSession[subSessionCntr].SubSessionHandle() == KNullHandle)
- {
- //Create dummy thread with different names
- TBuf<32> 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<UserPromptService::TPromptResult> 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; cntr<subSessionCntr; cntr++)
- {
- if ( upsSubSession[cntr].SubSessionHandle() != KNullHandle )
- {
- INFO_PRINTF2(_L("UPS SubSession Closed ( %d )."), cntr);
- upsSubSession[cntr].Close();
- dummyThread[cntr].Close();
- }
- }
-
- //Ensure session is closed
- if ( upsSession.Handle() != KNullHandle )
- {
- upsSession.Close();
- INFO_PRINTF1(_L("UPS Session Closed."));
- }
-
- return TestStepResult();
- } // End of function
-
-
-TVerdict CIpUpsStep::doTestStepPostambleL()
-/**
- * @return - TVerdict code
- * Override of base class virtual
- */
- {
- //ReSet the property to specify working of testNotifier in P&S or filemode
- User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtFileOverride, iTestNotifierMode));
-
- return TestStepResult();
- } // End of function.
-
-TBool CIpUpsStep::VerifyAndPrintPromptDataL()
-/**
- * @return - TBool - ETrue of prompt data returned matched the data expected as specified in INI file, else EFalse.
- *
- */
- {
- //Get the Prompt Information
- const TInt KMaxPromptDataLenght = 512;
- HBufC8* buf=HBufC8::NewLC(KMaxPromptDataLenght);
- TPtr8 bufPtr(buf->Des());
-
- 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.