networksecurity/tlsprovider/Test/ttlscertcache/updateentrystep.cpp
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/tlsprovider/Test/ttlscertcache/updateentrystep.cpp	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,138 @@
+// 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 "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:
+//
+
+#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");
+	_LIT(KCertEntryDenied, "denied");
+	_LIT(KMessageFmt, "Certificate entry will be %S with a delay of %d seconds.");
+	
+	// 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)
+		{
+		Logger().WriteFormat(KMessageFmt, &KResponseDelay, iResponseDelay);		
+		}
+	else if (!GetBoolFromConfig(ConfigSection(), KCertEntryApproved, iApproveEntry))
+		{
+		_LIT(KErrorMessage, "Could not read certificate approval status from INI, abort.");
+		Logger().Write(KErrorMessage);
+		
+		SetTestStepResult(EAbort);
+		return EAbort;
+		}
+	else if (iApproveEntry)
+		{
+		Logger().WriteFormat(KMessageFmt, &KCertEntryApproved, iResponseDelay);
+		}
+	else
+		{
+		Logger().WriteFormat(KMessageFmt, &KCertEntryDenied, 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)
+		{
+		_LIT(KMessageFormat, "State of cache entry for certificate '%S' is %d, but should be %d (ENewEntry).");
+		Logger().WriteFormat(KMessageFormat, SubjectLC(), state, ENewEntry);
+		CleanupStack::PopAndDestroy(1); // subject	
+		SetTestStepResult(EFail);
+		return EFail;
+		}
+	else
+		{
+		_LIT(KMessageFormat, "State of cache entry for certificate '%S' is ENewEntry.");
+		Logger().WriteFormat(KMessageFormat, SubjectLC());
+		CleanupStack::PopAndDestroy(1); // subject			
+		}
+
+	// Wait specifed number of seconds
+	User::After(iResponseDelay * 1000000);
+
+	if (iCancel)
+		{
+		Session().Cancel();
+		// log the action
+		_LIT(KMessageFormat, "Cancelled cert cache session opened for certificate '%S'.");
+		Logger().WriteFormat(KMessageFormat, SubjectLC());
+		CleanupStack::PopAndDestroy(1); // subject
+		}
+	else
+		{
+		Session().SetStateL(iApproveEntry ? EEntryApproved : EEntryDenied);
+		// log the action
+		_LIT(KMessageFormat, "Updated cache entry for certificate '%S'.");
+		Logger().WriteFormat(KMessageFormat, SubjectLC());
+		CleanupStack::PopAndDestroy(1); // subject
+		}
+	
+	
+	SetTestStepResult(EPass);
+	return EPass;
+	}
+	
+TVerdict CUpdateEntryStep::doTestStepPostambleL()
+	{
+	if (TestStepResult() == EPass)
+		{
+		_LIT(KMessage, "Step suceeded.");
+		Logger().Write(KMessage);
+		return EPass;
+		}
+	else
+		{
+		_LIT(KMessage, "Step failed.");
+		Logger().Write(KMessage);
+		return EFail;
+		}
+	}