--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/tlsprovider/Test/tlstest2/updateentrystep.cpp Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,134 @@
+// 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 updateentrystep.h
+ @internalTechnology
+*/
+
+#include "updateentrystep.h"
+
+#include <x509cert.h>
+
+const TInt KDefaultResponseDelay = 3;
+
+CUpdateEntryStep::CUpdateEntryStep()
+ : iResponseDelay(KDefaultResponseDelay)
+ {
+ SetTestStepName(KUpdateEntryStep);
+ }
+
+TVerdict CUpdateEntryStep::doTestStepPreambleL()
+ {
+ // Initialise the tests
+ InitializeL();
+
+ // Parse the parameters required
+ _LIT(KCertEntryApproved, "approved");
+ _LIT(KResponseDelay, "delay");
+ _LIT(KCancel, "cancelled");
+
+ // Ignore return code from GetBoolFromConfig to keep default of EFalse.
+ GetBoolFromConfig(ConfigSection(), KCancel, iCancel);
+
+ // Ignore return status from GetIntFromConfig to keep default value.
+ GetIntFromConfig(ConfigSection(), KResponseDelay, iResponseDelay);
+
+ if (iCancel)
+ {
+ INFO_PRINTF3(_L("Certificate entry will be %S with a delay of %d seconds."), &KResponseDelay, iResponseDelay);
+ }
+ else if (!GetBoolFromConfig(ConfigSection(), KCertEntryApproved, iApproveEntry))
+ {
+ INFO_PRINTF1(_L("Could not read certificate approval status from INI, abort."));
+
+ SetTestStepResult(EAbort);
+ return EAbort;
+ }
+ else if (iApproveEntry)
+ {
+ INFO_PRINTF3(_L("Certificate entry will be %S with a delay of %d seconds."), &KResponseDelay, iResponseDelay);
+ }
+ else
+ {
+ INFO_PRINTF3(_L("Certificate entry will be %S with a delay of %d seconds."), &KResponseDelay, iResponseDelay);
+ }
+
+
+ return EPass;
+
+ }
+
+TVerdict CUpdateEntryStep::doTestStepL()
+ {
+
+ // don't continue if previous phases have aborted
+ if (TestStepResult() != EPass)
+ {
+ return TestStepResult();
+ }
+
+ // Entry state should be ENewEntry at this point.
+ TCacheEntryState state = Session().GetStateL();
+
+ if (state != ENewEntry)
+ {
+ INFO_PRINTF4(_L("State of cache entry for certificate '%S' is %d, but should be %d (ENewEntry)."), SubjectLC(), state, ENewEntry);
+ CleanupStack::PopAndDestroy(1); // subject
+ SetTestStepResult(EFail);
+ return EFail;
+ }
+ else
+ {
+ INFO_PRINTF2(_L("State of cache entry for certificate '%S' is ENewEntry."), SubjectLC());
+ CleanupStack::PopAndDestroy(1); // subject
+ }
+
+ // Wait specifed number of seconds
+ User::After(iResponseDelay * 1000000);
+
+ if (iCancel)
+ {
+ Session().Cancel();
+ // log the action
+ INFO_PRINTF2(_L("Cancelled cert cache session opened for certificate '%S'."), SubjectLC());
+ CleanupStack::PopAndDestroy(1); // subject
+ }
+ else
+ {
+ Session().SetStateL(iApproveEntry ? EEntryApproved : EEntryDenied);
+ // log the action
+ INFO_PRINTF2(_L("Updated cache entry for certificate '%S'."), SubjectLC());
+ CleanupStack::PopAndDestroy(1); // subject
+ }
+
+
+ SetTestStepResult(EPass);
+ return EPass;
+ }
+
+TVerdict CUpdateEntryStep::doTestStepPostambleL()
+ {
+ if (TestStepResult() == EPass)
+ {
+ INFO_PRINTF1(_L("Step suceeded."));
+ return EPass;
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Step failed."));
+ return EFail;
+ }
+ }