authorisation/userpromptservice/test/tups_install/tupsstep.h
changeset 8 35751d3474b7
--- /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__