networksecurity/tlsprovider/Test/tlstest2/updateentrystep.cpp
changeset 0 af10295192d8
--- /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;
+		}
+	}