authenticationservices/authenticationserver/test/tAuthSvr/src/step_FirstStart.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/authenticationservices/authenticationserver/test/tAuthSvr/src/step_FirstStart.cpp Tue Nov 24 09:06:03 2009 +0200
@@ -0,0 +1,223 @@
+/*
+* 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:
+* CTestStep derived implementation
+*
+*/
+
+
+#include "tAuthSvrStep.h"
+
+#include "authserver/authclient.h"
+#include "authserver/authmgrclient.h"
+#include "authrepository.h"
+using namespace AuthServer;
+
+CTFirstStart::CTFirstStart()
+/**
+ * Constructor
+ */
+ {
+ // Call base class method to set up the human readable name for logging
+ SetTestStepName(KTFirstStart);
+ }
+
+TVerdict CTFirstStart::doTestStepPreambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+ {
+ CTAuthSvrStepBase::doTestStepPreambleL();
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+TVerdict CTFirstStart::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ *
+ */
+ {
+ // remove trained identity 22 for these tests
+ CAuthDb2* db = CAuthDb2::NewLC(iFs);
+ db->RemoveIdentityL(22);
+ CleanupStack::PopAndDestroy(db);
+
+ //INFO_PRINTF1(_L("In FirstStart Step"));
+
+ //User::SetJustInTime(ETrue); //a panic will kill just the thread, not the whole emulator.
+
+ //If any test step leaves or panics, the test step thread exits and no further calls are made.
+ if (TestStepResult() != EPass)
+ {
+ return TestStepResult();
+ }
+
+__UHEAP_MARK; // Check for memory leaks
+
+ SetTestStepResult(EPass);
+
+ TDriveUnit sysDrive (RFs::GetSystemDrive());
+ TDriveName sysDriveName (sysDrive.Name());
+ TBuf<128> fileName (sysDriveName);
+ fileName.Append(KAuthSvrPolicyFile);
+ CIniData* policyFile=NULL;
+ policyFile=CIniData::NewL(fileName);
+ CleanupStack::PushL(policyFile);
+
+ fileName.Copy(sysDriveName);
+ fileName.Append(KPluginIniFile);
+
+ CIniData* pluginFile=NULL;
+ pluginFile=CIniData::NewL(fileName);
+ CleanupStack::PushL(pluginFile);
+ //Set a default plugin using an ini file. Read this value from a file if it is specified
+ //Set this to be the default plugin (update the policy file) if the test case specifies it (in the script's ini file).
+ TInt defaultPluginFromFile;
+ if (GetIntFromConfig(ConfigSection(),_L("defaultPlugin"), defaultPluginFromFile) != EFalse) // the tag 'defaultPlugin' was present
+ {
+
+ //Write this value to the policy file, Which is picked up by the AuthServer (not implemented yet)
+ //writeToNamedConfig(policyFile, KDefaultPluginTag, defaultPluginFromFile);
+ SetDefaultPluginIdL(defaultPluginFromFile);
+ }
+
+ //Set whether a plugin supports default data. Read this value from a file if it is specified
+ _LIT(KTrueText,"true");
+ _LIT(KFalseText,"false");
+
+ TBool iSupportsDefaultDataFromFile(ETrue); //Default case - the plugin supports default data
+
+ TBufC<16> trueBuf1(KTrueText);
+ TBufC<16> falseBuf1(KFalseText);
+ TPtr valueToWrite = trueBuf1.Des(); //Default case - the plugin supports default data
+
+
+ if (GetBoolFromConfig(ConfigSection(),_L("iSupportsDefaultData"), iSupportsDefaultDataFromFile) != EFalse) // the tag 'isTrusted' was present
+ {
+ //Set the value that will be picked up by the constructor of the plugin
+ //writeToNamedConfig(pluginIniFile, KPluginIniSection, _L("iSupportsDefaultData"), iSupportsDefaultDataFromFile);
+ if (iSupportsDefaultDataFromFile)
+ { valueToWrite = trueBuf1.Des(); }
+ else
+ { valueToWrite = falseBuf1.Des(); }
+
+ writeToNamedConfig(pluginFile, KPluginIniSection, _L("iSupportsDefaultData"), valueToWrite);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("The iSupportsDefaultData tag was not specified in the testexecute ini file."));
+ //Use the default value of false
+ writeToNamedConfig(pluginFile, KPluginIniSection, _L("iSupportsDefaultData"), valueToWrite);
+ }
+
+ //Carry out the other initialisation that is required.
+ // TODO.
+
+
+ //-----------------------------------------------------------------------------------------------------
+ //Connect to the AuthServer
+ AuthServer::RAuthClient authClient1;
+ //TInt connectVal = User::LeaveIfError(authClient1.Connect());
+ TInt connectVal = authClient1.Connect();
+ if (KErrNotFound == connectVal)
+ {
+ //Retry after a delay
+ TTimeIntervalMicroSeconds32 timeInterval = 2000; //2 Milliseconds
+ User::After(timeInterval);
+ connectVal = authClient1.Connect();
+ }
+ if (KErrNone != connectVal)
+ {
+ ERR_PRINTF2(_L("Unable to start a session or other connection error. Err = %d"), connectVal);
+ User::LeaveIfError(connectVal);
+ }
+ CleanupClosePushL(authClient1);
+
+
+ //Check that the default identity has been created
+ //Call the Enumerate Identity API
+ //AuthServer::RIdentityIdList idList;
+ AuthServer::RIdentityIdArray idArray;
+ CleanupClosePushL(idArray);
+ //TInt ret = User::LeaveIfError(authClient1.IdentitiesL(idArray));
+ TInt ret = KErrNone;
+ TRAP(ret, authClient1.IdentitiesL(idArray));
+ if (KErrNone != ret)
+ {
+ ERR_PRINTF2(_L("IdentitiesL left with errorcode: %d"), ret);
+ SetTestStepResult(EFail);
+ }
+
+ else
+ {
+
+ //List the present identities by their strings
+ for (TInt i = 0; i < idArray.Count(); i++)
+ {
+ HBufC* idName = 0;
+ //TRAP(ret, idName = authClient1.IdentityStringL(idArray[i]));
+ idName = authClient1.IdentityStringL(idArray[i]);
+ INFO_PRINTF3(_L("Id %d has the name %S"), i, idName);
+ delete idName;
+ }
+ //Retrieve the expected information from the ini file
+ TInt expNumIdentities;
+
+ if(GetIntFromConfig(ConfigSection(),_L("NumIdentities"), expNumIdentities) != EFalse) // the tag 'NumIdentities' was present
+ {
+ //Do the compare
+ if ((idArray.Count()) != expNumIdentities)
+ {
+ ERR_PRINTF2(_L("expNumIdentities differs from expected, Number of Identities = %d"), (idArray.Count()));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ TBool expIsDefaultPlugin = EFalse;
+ if(GetBoolFromConfig(ConfigSection(), _L("isDefaultPlugin"), expIsDefaultPlugin) != EFalse) // the tag 'isDefaultPlugin' was present
+ {
+ if(!expIsDefaultPlugin && (KErrServerTerminated != ret) )
+ {
+ //The plugin is not a default plugin as defined in the policy file, and thus the server should have been terminated
+ ERR_PRINTF2(_L("connectVal differs from expected, connectVal= %d"), connectVal);
+ SetTestStepResult(EFail);
+ }
+ }
+
+ }
+
+
+ //Maybe check the individual identifier -not predictable though..
+ CleanupStack::PopAndDestroy(&idArray);
+ CleanupStack::PopAndDestroy(&authClient1);
+
+ REComSession::FinalClose(); //garbage collect the last previously destroyed implementation and close the REComSession if no longer in use
+__UHEAP_MARKEND;
+ return TestStepResult();
+ }
+
+//TVerdict CTFirstStart::doTestStepPostambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+/* {
+ INFO_PRINTF1(_L("Test Step Postamble"));
+ return TestStepResult();
+ }
+*/