--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/authorisation/userpromptservice/test/tups_install/tupsstep.h Thu Sep 10 14:01:51 2009 +0300
@@ -0,0 +1,277 @@
+/*
+* Copyright (c) 2004-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:
+* tswisstep.h
+* SWIS test step declaration
+*
+*/
+
+
+
+
+/**
+ @file
+*/
+
+#ifndef __TSWISSTEP_H__
+#define __TSWISSTEP_H__
+
+#include <test/testexecutestepbase.h>
+#include "../../testutil/client/testutilclient.h"
+#include "tupsserver.h"
+#include "tuiscriptadaptors.h"
+
+#include "e32base.h"
+
+namespace Swi
+ {
+ class CInstallPrefs;
+ }
+
+/**
+ * Base test step class containing handy functions
+ * @test
+ * @internalComponent
+ */
+class CUpsTestStep : public CTestStep
+ {
+protected:
+
+ enum TReadType
+ {
+ ESimpleType, //to read "numexist" and "numnonexist" value from INI.
+ ECancelType, //to read "numexistcancel" and "numnonexistcancel" value from INI.
+ ERegisteredType //to read "numregistered" value from INI.
+ };
+
+ /**
+ * Get the file names for checking if present or missing.
+ * The test step's INI file must contain entry "numexistcancel=<n>" and one or more entries
+ * "existcancel<i>=<fname>".
+ * The test step's INI file must contain entry "numnonexistcancel=<n>" and one or more entries
+ * "nonexistcancel<i>=<fname>".
+ * The test step's INI file must contain entry "numexist=<n>" and one or more entries
+ * "exist<i>=<fname>".
+ * The test step's INI file must contain entry "numnonexist=<n>" and one or more entries
+ * "nonexist<i>=<fname>".
+ *
+ * @param aFileNumExist this array contains the name of the files which must exist after
+ * installation/un-installation/cancellation.
+ * @param aFileNumNonExist this array contains the name of the files which must not exist after
+ * installation/un-installation/cancellation.
+ * @param aDoCancelTest Used to make decision for reading from the INI file.
+ * ETrue Cancel Testing is enabled, so read entries "numexistcancel" and "numnonexistcancel".
+ * EFalse Read entries "numexist" and "numnonexist".
+ */
+ void GetFileNamesForCheck(RArray<TPtrC>& aFileNumExist,RArray<TPtrC>& aFileNumNonExist, TReadType aReadType);
+
+ /**
+ * Extract the file names from the INI file.
+ * @param aEntries Number of file name entries.
+ * @param aEntryBase Base name of the keys specifying names of files to
+ * check; an index (0..n-1) is appended to the base
+ * name to get the actual key name.
+ * @param aFileArray Contains all the file names to check for missing or present.
+ */
+ void ExtractFileName(TInt aEntries, const TDesC& aEntryBase, RArray<TPtrC>& aFileArray);
+
+ /**
+ * Checks for files that should exist if the installation was successful,
+ * and which shouldn't exist if the installation was cancelled.
+ * @param aCheckExist Controls the kind of testing done
+ * ETrue Files must exist
+ * EFalse Files must not exist
+ * @param aFileArray Contains all the file names to check for missing or present depending
+ * on the aCheckExist. If ETrue, this contains the names of files that must exist
+ * else if EFalse contains the names of files that must not be present.
+ * @param aTestUtil Contains reference to the testutilserver session.
+ * @param aMsecTimeout Timeout to wait for file to be created, if not already existing
+ */
+ void CheckIfFilesExist(TBool aCheckExist, const RArray<TPtrC>& aFileArray, RTestUtilSession& aTestUtil, TInt aMsecTimeout=0);
+
+ /**
+ * Checks whether certain files do or do not exist by checking the registry entry and
+ * sets test step result accordingly.
+ * @param aFileArray Contains all the file names to check for missing/present.
+ */
+ void CheckRegistryEntry(RArray<TPtrC>& aFileArray);
+
+ /**
+ * Checks that the correct dialogs have been called during the installation.
+ */
+ void CheckDialogsCalled(const Swi::Test::CUIScriptAdaptor& ui);
+
+ /**
+ * Checks whether a fatal OCSP response was encountered during the installation.
+ */
+ void CheckFatalOcspResponse(const Swi::Test::CUIScriptAdaptor& ui);
+
+ /**
+ * Checks whether the values of ocsp outcomes in the ini file matches with that of
+ * the DisplayOcspResultL function.
+ */
+ void CheckExpectedOcspOutcomes(const Swi::Test::CUIScriptAdaptor& ui);
+
+ /**
+ * Copy files from one place to another.
+ *
+ * @param aNumEntries Name of the key that specifies number of file name
+ * entries
+ * @param aFrom Base name of the keys specifying names of files to
+ * copy from; an index (0..n-1) is appended to the base
+ * name to get the actual key name
+ * @param aTo Base name of the keys specifying names of files to
+ * copy to; an index (0..n-1) is appended to the base
+ * name to get the actual key name
+ */
+ void CopyFilesL(const TDesC& aNumEntries, const TDesC& aFrom, const TDesC& aTo);
+
+ /**
+ * Delete files.
+ *
+ * @param aNumEntries Name of the key that specifies number of file name
+ * entries
+ * @param aDeleteKeyBase Base name of the keys specifying names of files
+ * to delete; an index (0..n-1) is appended to the
+ * base name to get the actual key name
+ */
+ void DeleteFilesL(const TDesC& aNumEntries, const TDesC& aDeleteKeyBase);
+
+ /**
+ * Stores all the values of expected install sizes as indicated in the test
+ * step's INI file.
+ * @param aNumExpectedSizeEntries Name of key that specifies the number of
+ * expected install sizes.
+ * @param aExpectedInstallSize A reference to the array of install sizes.
+ */
+ void StoreExpectedInstallSizesL(TInt aNumExpectedSizeEntries, RArray<TTableOfInstallSizes>& aExpectedValue);
+
+ /** Verify the Pub and Sub value of the current installation/uninstallation */
+ void CheckPubSubStatus(TDesC& aPubSubStatus);
+
+ /**
+ * Check that the pub and sub status returns to KErrNone after a test.
+ * This check should typically be last, whereas the previous method should
+ * be done ASAP after an install/uninstall since there's a race condition.
+ */
+ void CheckPubSubStatusIdle();
+
+ /**
+ * Set or clear read only bit on files.
+ *
+ * @param aNumEntries Name of the key that specifies number of file name
+ * entries
+ * @param aFileKeyBase Base name of the keys specifying names of files
+ * to set; an index (0..n-1) is appended to the
+ * base name to get the actual key name
+ * @param aFileKeyBase Base name of the keys specifying operation on files
+ * ; an index (0..n-1) is appended to the
+ * base name to get the actual key name.
+ */
+ void SetClearReadOnlyFilesL(const TDesC& aNumEntries,
+ const TDesC& aFileKeyBase,
+ const TDesC& aSetClearOpBase);
+
+ /**
+ * Check current step result against list of expected result codes.
+ */
+ void CheckExpectedResultCodesL();
+
+ /**
+ * Compares hashes for pairs of files read from config section, sets the
+ * test step result to fail if any pair does not match or if there is an
+ * error attempting to get a hash.
+ */
+ void CompareFilesL();
+
+ /**
+ * Compares file contents with buffer. Sets test step result to fail if
+ * the contents do not match or there is an error in performing the
+ * operation.
+ */
+ void CompareFileWithBufferL(const Swi::Test::CUIScriptAdaptor& ui);
+ };
+
+/**
+ * Installation test step class
+ * @test
+ * @internalComponent
+ */
+class CUpsInstallStep : public CUpsTestStep
+ {
+public:
+ enum TInstallType { EUseFileName };
+
+ CUpsInstallStep(TInstallType aInstallType);
+ ~CUpsInstallStep();
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepPostambleL();
+ virtual TVerdict doTestStepL();
+private:
+ TInt DoInstallL(Swi::CInstallPrefs& aInstallPrefs);
+ void GetFilesToHoldOpenL();
+
+private:
+ TFileName iSisFileName; // name of the file to install
+ TFileName iXmlFileName; // name of the file containing dialog data
+ Swi::Test::CUIScriptAdaptor* iUi; // XML script-based UI implementation
+ TInstallType iInstallType; // use file handle to install
+ RArray<TTableOfInstallSizes> iExpectedValue; // array of expected install sizes
+ TBool iDoCancelTest;
+ TPtrC iExpectedHash;
+ TInt iExpectedDialog;
+ TInt iKErrCode;
+ TPtrC Outcomes;// outcomes as received from ini file
+ TUid iUid;
+ TInt iExpectedUserDrive; // -1 if not checked
+ TPtrC iPubSubStatus;
+ TBool iExpectFileChange;
+ };
+
+/**
+ * Uninstallation test step class
+ * @test
+ * @internalComponent
+ */
+class CUpsUninstallStep : public CUpsTestStep
+ {
+public:
+ enum TUninstallType { EByUid, EByPackage };
+
+ CUpsUninstallStep(TUninstallType aType);
+ ~CUpsUninstallStep();
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepPostambleL();
+ virtual TVerdict doTestStepL();
+private:
+ TInt DoUninstallL();
+
+private:
+ TUid iUid;
+ TFileName iXmlFileName; // name of the file containing dialog data
+ TPtrC iVendorName;
+ TInt iKErrCode;
+ Swi::Test::CUIScriptAdaptor* iUi; // XML script-based UI implementation
+ TPtrC iPackageName;
+ TUninstallType iType;
+ };
+
+
+_LIT(KUpsInstallStep, "InstallStep");
+
+_LIT(KUpsUnInstallAugStep, "UninstallAugStep");
+
+_LIT(KUpsUnInstallStep, "UninstallStep");
+
+#endif // __TSWISSTEP_H__