--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/tlsprovider/Test/tlstest2/entrystatusstep.cpp Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,237 @@
+// 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 entrystatusstep.cpp
+ @internalTechnology
+*/
+
+#include "entrystatusstep.h"
+#include <x509cert.h>
+
+// Default delay before checking state
+const TInt KStateCheckDelay = 1000000;
+
+CEntryStatusStep::CEntryStatusStep()
+ {
+ SetTestStepName(KEntryStatus);
+ }
+
+TVerdict CEntryStatusStep::doTestStepPreambleL()
+ {
+ InitializeL();
+ SetTestStepResult(EPass);
+
+ _LIT(KRequestChangeNotify, "requestchangenotify");
+ _LIT(KCertEntryState, "state");
+ _LIT(KNewEntryString, "ENewEntry");
+ _LIT(KEntryAwaitingApprovalString, "EEntryAwaitingApproval");
+ _LIT(KEntryDeniedString, "EEntryDenied");
+ _LIT(KEntryApprovedString, "EEntryApproved");
+ _LIT(KCancelPoint, "cancelpoint");
+ _LIT(KOpen, "Open");
+ _LIT(KGetState, "GetStateL");
+ _LIT(KChangeNotify, "ChangeNotify");
+
+ TPtrC cancelPoint;
+ if (!GetStringFromConfig(ConfigSection(), KCancelPoint, cancelPoint))
+ {
+ iCancelPoint = ENoCancel;
+ }
+ else if (cancelPoint.CompareF(KOpen) == 0)
+ {
+ iCancelPoint = EAfterOpen;
+ INFO_PRINTF2(_L("This test step will call Cancel() on the cert cache session after %S()"),&KOpen);
+ }
+ else if (cancelPoint.CompareF(KGetState) == 0)
+ {
+ iCancelPoint = EAfterGetState;
+ INFO_PRINTF2(_L("This test step will call Cancel() on the cert cache session after %S()"),&KGetState);
+ }
+ else if (cancelPoint.CompareF(KChangeNotify) == 0)
+ {
+ iCancelPoint = EAfterChangeNotify;
+ INFO_PRINTF2(_L("This test step will call Cancel() on the cert cache session after %S()"),&KChangeNotify);
+ }
+
+ // Check if this step should wait for change notification.
+ if (!GetBoolFromConfig(ConfigSection(), KRequestChangeNotify, iRequestChangeNotify))
+ {
+ iRequestChangeNotify = EFalse;
+ }
+ else if (iRequestChangeNotify)
+ {
+ if (iCancelPoint == ENoCancel)
+ {
+ INFO_PRINTF1(_L("This test step will wait for change notification."));
+ }
+ else if (iCancelPoint != EAfterChangeNotify)
+ {
+ INFO_PRINTF1(_L("Invalid test config, requesting notification but cancelling earlier."));
+ SetTestStepResult(EAbort);
+ return EAbort;
+ }
+
+ _LIT(KRequirePendingApproval, "requirependingapproval");
+ if (!GetBoolFromConfig(ConfigSection(), KRequirePendingApproval, iRequirePendingApproval))
+ {
+ iRequirePendingApproval = ETrue;
+ }
+ if (iRequirePendingApproval)
+ {
+ INFO_PRINTF1(_L("This step will fail if the state is not initially EEntryAwaitingApproval."));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Notification will be requested even if the state is not initially EEntryAwaitingApproval."));
+ }
+ }
+
+ TPtrC expectedState;
+
+ if (!GetStringFromConfig(ConfigSection(), KCertEntryState, expectedState))
+ {
+ INFO_PRINTF1(_L("Could not read expected certificate approval state from INI, abort."));
+ SetTestStepResult(EAbort);
+ }
+ else
+ {
+ if (expectedState.CompareF(KNewEntryString) == 0)
+ {
+ iExpectedState = ENewEntry;
+ INFO_PRINTF2(_L("Certificate state is expected to be %S."),&KNewEntryString);
+ }
+ else if (expectedState.CompareF(KEntryAwaitingApprovalString) == 0)
+ {
+ iExpectedState = EEntryAwaitingApproval;
+ INFO_PRINTF2(_L("Certificate state is expected to be %S."),&KEntryAwaitingApprovalString);
+ }
+ else if (expectedState.CompareF(KEntryApprovedString) == 0)
+ {
+ iExpectedState = EEntryApproved;
+ INFO_PRINTF2(_L("Certificate state is expected to be %S."),&KEntryApprovedString);
+ }
+ else if (expectedState.CompareF(KEntryDeniedString) == 0)
+ {
+ iExpectedState = EEntryDenied;
+ INFO_PRINTF2(_L("Certificate state is expected to be %S."),&KEntryDeniedString);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Invalid expected certificate state, abort."));
+ SetTestStepResult(EAbort);
+ }
+ }
+ return TestStepResult();
+ }
+
+TVerdict CEntryStatusStep::doTestStepL()
+ {
+ // don't continue if previous phases have aborted
+ if (TestStepResult() != EPass)
+ {
+ return TestStepResult();
+ }
+
+ // Delay briefly to ensure that any update entry steps in concurrent tests can
+ // check first (which sets the state to EAwaitingApproval.)
+ User::After(KStateCheckDelay);
+
+ // Cancel if set to do so before checking state.
+ if (iCancelPoint == EAfterOpen)
+ {
+ INFO_PRINTF1(_L("Cancelling..."));
+ Session().Cancel();
+ }
+
+ iState = Session().GetStateL();
+
+ // log the action
+ INFO_PRINTF3(_L("State of cache entry for certificate '%S' is %d."), SubjectLC(), iState);
+ CleanupStack::PopAndDestroy(1); // subject
+
+ if (iCancelPoint == EAfterGetState)
+ {
+ INFO_PRINTF1(_L("Cancelling..."));
+ Session().Cancel();
+ iState = Session().GetStateL();
+ INFO_PRINTF3(_L("State of cache entry for certificate '%S' is %d."), SubjectLC(), iState);
+ CleanupStack::PopAndDestroy(1); // subject
+ }
+ else if (iRequestChangeNotify)
+ {
+ if (iState == EEntryAwaitingApproval || !iRequirePendingApproval)
+ {
+ TRequestStatus status;
+ Session().RequestNotify(status);
+ if (iCancelPoint == EAfterChangeNotify)
+ {
+ INFO_PRINTF1(_L("Cancelling..."));
+ Session().Cancel();
+ }
+
+ User::WaitForRequest(status);
+
+ User::LeaveIfError(status.Int());
+ iState = Session().GetStateL();
+
+ // log the action
+ INFO_PRINTF3(_L("Got cache change notify for certificate '%S', state = %d."), SubjectLC(), iState);
+ CleanupStack::PopAndDestroy(1); // certificate status
+ }
+ else
+ {
+ // log the action
+ INFO_PRINTF2(_L("Cannot wait for change notify, entry state is not %d (EEntryAwaitingApproval.)"), EEntryAwaitingApproval);
+ SetTestStepResult(EFail) ;
+ }
+ }
+
+ return TestStepResult();
+
+ }
+
+TVerdict CEntryStatusStep::doTestStepPostambleL()
+ {
+
+ if (TestStepResult() == EPass)
+ {
+ INFO_PRINTF1(_L("Step suceeded. Checking result..."));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Step failed."));
+ return TestStepResult();
+ }
+
+ if (iExpectedState == iState)
+ {
+ INFO_PRINTF1(_L("Expected state %d matches actual state."));
+ SetTestStepResult(EPass);
+ return EPass;
+ }
+ else
+ {
+ INFO_PRINTF3(_L("Expected state %d does not match actual state %d!"), iExpectedState, iState);
+ SetTestStepResult(EFail);
+ return EFail;
+ }
+
+ }
+
+
+
+
+