authenticationservices/authenticationserver/test/tauthcliserv/step_authexpr_build.cpp
branchRCL_3
changeset 62 a71299154b21
parent 61 641f389e9157
child 63 94225563cd41
--- a/authenticationservices/authenticationserver/test/tauthcliserv/step_authexpr_build.cpp	Tue Aug 31 17:00:08 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,759 +0,0 @@
-/*
-* 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: 
-*
-*/
-
-
-#include <s32mem.h>
-#include "tauthcliservstep.h"
-#include <scs/scsclient.h>
-using namespace AuthServer;
-
-inline void CorruptTypeField(const CAuthExpressionImpl* aExpr)
-/**
-	Corrupt the type field of the supplied
-	expression so the invariant-checking code fails.
-	
-	@param	aExpr			Expression to corrupt.  This
-							is const, even though it is
-							modified, because Left and
-							Right return pointers to const
-							expressions.
- */
-	{
-	// 4 == _FOFF(CAuthExpression, iType), but iType is private
-	// sizeof(CAuthExpression::iType) == 8
-	*(((TUint32*)aExpr) + 2) = ~0;
-	}
-
-
-CTStepAuthExprBuild::CTStepAuthExprBuild()
-/**
-	Record this test step's name.
- */
-	{
-	SetTestStepName(KTStepAuthExprBuild);
-	}
-
-
-TVerdict CTStepAuthExprBuild::doTestStepL()
-/**
-	Implement CTestStep by creating simple and
-	complex expression types.  In debug mode this
-	function also ensures the operations fail
-	cleanly in OOM.
- */
-	{
-	RunTestsL();		// create all expression types
-	TestFailedCombsL();
-	TestCorruptPersistL();
-	
-	// create all expression types in OOM
-#ifdef _DEBUG
-	TInt i = 1;
-	TBool failed = EFalse;
-	
-	do
-		{
-		__UHEAP_SETFAIL(RAllocator::EDeterministic, i);
-		TRAPD(r, RunTestsL());
-		TESTL(r == KErrNone || r == KErrNoMemory);
-		__UHEAP_RESET;
-		
-		failed = (r == KErrNoMemory);
-		++i;
-		} while (failed);
-	
-	// i is now one greater than the last alloc count.
-	// run the tests again, to ensure there really was
-	// enough memory, and this wasn't just an error case
-	// that wasn't handled properly.
-	
-	TInt lim = i * 2;
-	while (i++ < lim)
-		{
-		__UHEAP_SETFAIL(RAllocator::EDeterministic, i);
-		RunTestsL();
-		__UHEAP_RESET;
-		}
-#endif	
-	
-	return EPass;
-	}
-
-
-void CTStepAuthExprBuild::RunTestsL()
-/**
-	Helper function for doTestStepL.  This generates
-	authentication expressions.
-	
-	1. creating simple type and plugin id nodes.
-	2. creating simple AND and OR combinations
-	3. creating complex (multi-level) AND and OR combinations.
- */
-	{
-	TestSimpleExprL();
-	TestSimpleExprCombsConsL();
-	TestComplexExprCombsConsL();
-	}
-
-
-void CTStepAuthExprBuild::TestExprLD(
-	void (CTStepAuthExprBuild::*aTestFuncL)(CAuthExpression*),
-	CAuthExpression* aExpr)
-/**
-	Run the supplied test function on the supplied expression.
-	This function only exists to place the expression on the
-	cleanup stand and delete it afterwards.
-	
-	This function leaves with KErrNoMemory if the supplied
-	expression is NULL.
- */
-	{
-	User::LeaveIfNull(aExpr);
-	
-	CleanupStack::PushL(aExpr);
-	(this->*aTestFuncL)(aExpr);
-	
-	// test externalization and internalization
-	// (this can fail because of OOM.)
-	TSizeStream ss;
-	RWriteStream ws(&ss);
-	aExpr->ExternalizeL(ws);
-	
-	HBufC8* buf = HBufC8::NewLC(ss.Size());
-	TPtr8 bufPtr(buf->Des());	
-	RDesWriteStream dws(bufPtr);
-	aExpr->ExternalizeL(dws);
-	dws.CommitL();
-	
-	RDesReadStream drs(*buf);
-	CAuthExpression* aeRestore = CAuthExpressionImpl::NewL(drs);
-	CleanupStack::PushL(aeRestore);
-	
-	(this->*aTestFuncL)(aExpr);
-	
-	CleanupStack::PopAndDestroy(3, aExpr);
-	}
-
-
-void CTStepAuthExprBuild::TestSimpleExprL()
-/**
-	Test constructing leaf node expressions from
-	a plugin ID and a plugin type.
- */
-	{
-	__UHEAP_MARK;
-	
-	TestExprLD(&CTStepAuthExprBuild::TestPluginIdL, AuthExpr(KTestPluginId0));
-	TestExprLD(&CTStepAuthExprBuild::TestPluginTypeL, AuthExpr(EAuthKnowledge));
-
-	__UHEAP_MARKEND;
-	}
-
-
-void CTStepAuthExprBuild::TestPluginIdL(CAuthExpression* aExpr)
-/**
-	Tests the supplied expression is a simple expression
-	for plugin ID KTestPluginId0.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KPluginId);
-	TESTL(impl->PluginId() == KTestPluginId0);
-	}
-
-
-void CTStepAuthExprBuild::TestPluginTypeL(CAuthExpression* aExpr)
-/**
-	Tests the supplied expression is a simple expression
-	for plugin type EAuthKnowledge.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KPluginType);
-	TESTL(impl->PluginType() == EAuthKnowledge);
-	}
-
-
-void CTStepAuthExprBuild::TestSimpleExprCombsConsL()
-/**
-	Tests combining two simple types (plugin type or plugin id)
-	with the AuthAnd and AuthOr functions, and with the overloaded
-	binary AND (&) and OR (|) operators.
- */
-	{
-	__UHEAP_MARK;
-	
-	// type AND type
-	OpTestExprLD(&CTStepAuthExprBuild::TestTypeAndTypeL, AuthExpr(EAuthKnowledge) & AuthExpr(EAuthBiometric));
-	TestExprLD(&CTStepAuthExprBuild::TestTypeAndTypeL, AuthAnd(AuthExpr(EAuthKnowledge), AuthExpr(EAuthBiometric)));
-	
-	// id OR id
-	OpTestExprLD(&CTStepAuthExprBuild::TestTypeOrTypeL, AuthExpr(EAuthKnowledge) | AuthExpr(EAuthBiometric));
-	TestExprLD(&CTStepAuthExprBuild::TestTypeOrTypeL, AuthOr(AuthExpr(EAuthKnowledge), AuthExpr(EAuthBiometric)));
-	
-	// ID AND type
-	OpTestExprLD(&CTStepAuthExprBuild::TestIdAndTypeL, AuthExpr(KTestPluginId0) & AuthExpr(EAuthBiometric));
-	TestExprLD(&CTStepAuthExprBuild::TestIdAndTypeL, AuthAnd(AuthExpr(KTestPluginId0), AuthExpr(EAuthBiometric)));
-	
-	// type AND ID
-	OpTestExprLD(&CTStepAuthExprBuild::TestTypeAndIdL, AuthExpr(EAuthBiometric) & AuthExpr(KTestPluginId0));
-	TestExprLD(&CTStepAuthExprBuild::TestTypeAndIdL, AuthAnd(AuthExpr(EAuthBiometric), AuthExpr(KTestPluginId0)));
-	
-	// id AND id
-	OpTestExprLD(&CTStepAuthExprBuild::TestIdAndIdL, AuthExpr(KTestPluginId0) & AuthExpr(KTestPluginId1));
-	TestExprLD(&CTStepAuthExprBuild::TestIdAndIdL, AuthAnd(AuthExpr(KTestPluginId0), AuthExpr(KTestPluginId1)));
-	
-	__UHEAP_MARKEND;
-	}
-
-
-void CTStepAuthExprBuild::TestTypeAndTypeL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says know & bio.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KAnd);
-	TESTL(impl->Left()->Type() == KPluginType);
-	TESTL(impl->Left()->PluginType() == EAuthKnowledge);
-	TESTL(impl->Right()->Type() == KPluginType);
-	TESTL(impl->Right()->PluginType() == EAuthBiometric);
-	}
-
-
-void CTStepAuthExprBuild::TestTypeOrTypeL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says know | bio.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KOr);
-	TESTL(impl->Left()->Type() == KPluginType);
-	TESTL(impl->Left()->PluginType() == EAuthKnowledge);
-	TESTL(impl->Right()->Type() == KPluginType);
-	TESTL(impl->Right()->PluginType() == EAuthBiometric);
-	}
-
-
-void CTStepAuthExprBuild::TestIdAndTypeL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says id0 & bio.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KAnd);
-	TESTL(impl->Left()->Type() == KPluginId);
-	TESTL(impl->Left()->PluginId() == KTestPluginId0);
-	TESTL(impl->Right()->Type() == KPluginType);
-	TESTL(impl->Right()->PluginType() == EAuthBiometric);
-	}
-
-
-void CTStepAuthExprBuild::TestTypeAndIdL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says bio & id0.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KAnd);
-	TESTL(impl->Left()->Type() == KPluginType);
-	TESTL(impl->Left()->PluginType() == EAuthBiometric);
-	TESTL(impl->Right()->Type() == KPluginId);
-	TESTL(impl->Right()->PluginId() == KTestPluginId0);
-	}
-
-
-void CTStepAuthExprBuild::TestIdAndIdL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says id0 & id1.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KAnd);
-	TESTL(impl->Left()->Type() == KPluginId);
-	TESTL(impl->Left()->PluginId() == KTestPluginId0);
-	TESTL(impl->Right()->Type() == KPluginId);
-	TESTL(impl->Right()->PluginId() == KTestPluginId1);
-	}
-
-
-void CTStepAuthExprBuild::TestComplexExprCombsConsL()
-/**
-	Test complex AND and OR combinations.
-	For the overloaded operators, this additionally checks
-	that precedence works as expected.
- */
-	{
-	__UHEAP_MARK;
-	
-	// complex combinations - ensure precedence works
-	
-	// id AND id AND id == (id AND id) AND id
-	OpTestExprLD(&CTStepAuthExprBuild::TestAndAndL, AuthExpr(KTestPluginId0) & AuthExpr(KTestPluginId1) & AuthExpr(KTestPluginId2));
-	TestExprLD(&CTStepAuthExprBuild::TestAndAndL, AuthAnd(AuthAnd(AuthExpr(KTestPluginId0), AuthExpr(KTestPluginId1)), AuthExpr(KTestPluginId2)));
-	
-	// id AND id AND id == (id AND id) OR id
-	OpTestExprLD(&CTStepAuthExprBuild::TestAndOrL, AuthExpr(KTestPluginId0) & AuthExpr(KTestPluginId1) | AuthExpr(KTestPluginId2));
-	TestExprLD(&CTStepAuthExprBuild::TestAndOrL, AuthOr(AuthAnd(AuthExpr(KTestPluginId0), AuthExpr(KTestPluginId1)), AuthExpr(KTestPluginId2)));
-	
-	// id OR id AND id == id OR (id AND id)
-	OpTestExprLD(&CTStepAuthExprBuild::TestOrAndL, AuthExpr(KTestPluginId0) | AuthExpr(KTestPluginId1) & AuthExpr(KTestPluginId2));
-	TestExprLD(&CTStepAuthExprBuild::TestOrAndL, AuthOr(AuthExpr(KTestPluginId0), AuthAnd(AuthExpr(KTestPluginId1), AuthExpr(KTestPluginId2))));
-	
-	// id OR id OR id == (id OR id) OR id
-	OpTestExprLD(&CTStepAuthExprBuild::TestOrOrL, AuthExpr(KTestPluginId0) | AuthExpr(KTestPluginId1) | AuthExpr(KTestPluginId2));
-	OpTestExprLD(&CTStepAuthExprBuild::TestOrOrL, AuthOr(AuthOr(AuthExpr(KTestPluginId0), AuthExpr(KTestPluginId1)), AuthExpr(KTestPluginId2)));
-	
-	__UHEAP_MARKEND;
-	}
-
-
-void CTStepAuthExprBuild::TestAndAndL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says (id0 & id1) & id2.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KAnd);
-	TESTL(impl->Left()->Type() == KAnd);
-	TESTL(impl->Left()->Left()->Type() == KPluginId);
-	TESTL(impl->Left()->Left()->PluginId() == KTestPluginId0);
-	TESTL(impl->Left()->Right()->Type() == KPluginId);
-	TESTL(impl->Left()->Right()->PluginId() == KTestPluginId1);
-	TESTL(impl->Right()->Type() == KPluginId);
-	TESTL(impl->Right()->PluginId() == KTestPluginId2);
-	}
-
-
-void CTStepAuthExprBuild::TestAndOrL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says (id0 & id 1) | id2.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KOr);
-	TESTL(impl->Left()->Type() == KAnd);
-	TESTL(impl->Left()->Left()->Type() == KPluginId);
-	TESTL(impl->Left()->Left()->PluginId() == KTestPluginId0);
-	TESTL(impl->Left()->Right()->Type() == KPluginId);
-	TESTL(impl->Left()->Right()->PluginId() == KTestPluginId1);
-	TESTL(impl->Right()->Type() == KPluginId);
-	TESTL(impl->Right()->PluginId() == KTestPluginId2);
-	}
-
-
-void CTStepAuthExprBuild::TestOrAndL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says id0 | (id1 & id2).
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KOr);
-	TESTL(impl->Left()->Type() == KPluginId);
-	TESTL(impl->Left()->PluginId() == KTestPluginId0);
-	TESTL(impl->Right()->Type() == KAnd);
-	TESTL(impl->Right()->Left()->Type() == KPluginId);
-	TESTL(impl->Right()->Left()->PluginId() == KTestPluginId1);
-	TESTL(impl->Right()->Right()->Type() == KPluginId);
-	TESTL(impl->Right()->Right()->PluginId() == KTestPluginId2);
-	}
-
-
-void CTStepAuthExprBuild::TestOrOrL(CAuthExpression* aExpr)
-/**
-	Test the supplied expression says (id0 | id1) | id2.
- */
-	{
-	CAuthExpressionImpl* impl = static_cast<CAuthExpressionImpl*>(aExpr);
-	TESTL(impl->Type() == KOr);
-	TESTL(impl->Left()->Type() == KOr);
-	TESTL(impl->Left()->Left()->Type() == KPluginId);
-	TESTL(impl->Left()->Left()->PluginId() == KTestPluginId0);
-	TESTL(impl->Left()->Right()->Type() == KPluginId);
-	TESTL(impl->Left()->Right()->PluginId() == KTestPluginId1);
-	TESTL(impl->Right()->Type() == KPluginId);
-	TESTL(impl->Right()->PluginId() == KTestPluginId2);
-	}
-
-
-void CTStepAuthExprBuild::TestFailedCombsL()
-/**
-	Test that complex expression builder fails cleanly
-	for all permutations of unallocated input.
- */
-	{
-	__UHEAP_MARK;
-	
-	// left null only
-	CAuthExpression* aeRight = AuthExpr(KTestPluginId0);
-	User::LeaveIfNull(aeRight);
-	CAuthExpression* aeLeftNull = AuthAnd(0, aeRight);
-	TESTL(aeLeftNull == 0);
-	
-	// right null only
-	CAuthExpression* aeLeft = AuthExpr(KTestPluginId1);
-	User::LeaveIfNull(aeRight);
-	CAuthExpression* aeRightNull = AuthAnd(aeLeft, 0);
-	TESTL(aeRightNull == 0);
-	
-	// both null
-	CAuthExpression* aeBothNull = AuthAnd(0, 0);
-	TESTL(aeBothNull == 0);
-	
-	__UHEAP_MARKEND;
-	}
-
-
-void CTStepAuthExprBuild::TestCorruptPersistL()
-/**
-	Test get expected errors when externalize or
-	internalize invalid expressions.
- */
-	{
-	TInt r;
-	
-	__UHEAP_MARK;
-	CAuthExpression* aeTest = AuthExpr(KTestPluginId0);
-	TESTL(aeTest != 0);
-	CleanupStack::PushL(aeTest);
-	
-	TSizeStream ss;
-	RWriteStream ws(&ss);
-	aeTest->ExternalizeL(ws);
-	
-	TInt len = ss.Size();
-	TAny* buf= User::AllocLC(ss.Size());
-	
-	// externalize valid expression
-	RMemWriteStream mwsValid(buf, len);
-	aeTest->ExternalizeL(mwsValid);
-	
-	// internalize unsupported expression stream
-	TInt8& verByteP = ((TInt8*)buf)[0];
-	TInt8 origVer = verByteP;
-	verByteP = KMaxTInt8;
-	RMemReadStream mrsHighVer(buf, len);
-	TRAP(r, /* ignore */ CAuthExpressionImpl::NewL(mrsHighVer));
-	TESTL(r == KErrAuthServUnsupportedExprVersion);
-	verByteP = origVer;
-	
-	// internalize corrupt expression stream
-	TInt8& typeByteP = ((TInt8*)buf)[1];
-	TInt8 origType = typeByteP;
-	typeByteP = ~0;
-	RMemReadStream mrsCorrupt(buf, len);
-	TRAP(r, /* ignore */ CAuthExpressionImpl::NewL(mrsCorrupt));
-	TESTL(r == KErrAuthServInvalidInternalizeExpr);
-	typeByteP = origType;
-	
-	// internalize valid expression stream
-	RMemReadStream mrsValid(buf, len);
-	CAuthExpression* aeRestore = CAuthExpressionImpl::NewL(mrsValid);
-	TESTL(aeRestore != 0);
-	delete aeRestore;
-	
-	CleanupStack::PopAndDestroy(2, aeTest);
-	__UHEAP_MARKEND;
-	}
-
-
-// -------- Server fails expressions from client --------
-
-
-namespace {
-
-class RTestAuthClient : public RAuthClient
-/**
-	This subclass of RAuthClient is used to
-	send a corrupt externalized expression
-	to the authentication server.
-	
-	The test code can't call SendReceive() on
-	an instance of RAuthClient because it is
-	protected.
- */
-	{
-public:
-	void SendCorruptAuthExprL();
-	void SendHighVerAuthExprL();
-
-	static HBufC8* GetAuthExprExternalizationLC();
-	};
-
-HBufC8* RTestAuthClient::GetAuthExprExternalizationLC()
-/**
-	Helper function for SendCorruptAuthExprL and
-	SendHighVerAuthExprL.  This allocates a buffer
-	containing an externalized auth expr, so the
-	calling function can corrupt it.
-	
-	@return					Buffer containing externalized
-							authentication expression.  This
-							is also placed on the cleanup stack.
-	@see SendCorruptAuthExprL
-	@see SendHighVerAuthExprL
- */
-	{
-	CAuthExpression* ae = AuthAnd(AuthExpr(KTestPluginId0), AuthExpr(KTestPluginId1));
-	User::LeaveIfNull(ae);
-	CleanupStack::PushL(ae);
-	
-	TSizeStream ss;
-	RWriteStream ws(&ss);
-	ae->ExternalizeL(ws);
-	
-	HBufC8* buf = HBufC8::NewLC(ss.Size());
-	TPtr8 bufPtr = buf->Des();
-	
-	RDesWriteStream dws(bufPtr);
-	ae->ExternalizeL(dws);
-	dws.CommitL();
-
-	CleanupStack::Pop(2, ae);
-	CleanupStack::PushL(buf);
-	
-	return buf;
-	}
-
-
-void RTestAuthClient::SendCorruptAuthExprL()
-/**
-	Send an authenticate request to the server,
-	with a corrupt authentication expression.
- */
-	{
-	HBufC8* buf = GetAuthExprExternalizationLC();
-	
-	// corrupt the type field, one byte after the version field
-	buf->Des()[1] = ~0;
-	
-	// the server should panick this thread with
-	// category "AuthServer" and reason EPanicBadExternalizedAuthExpr (3)
-	TRequestStatus rs;
-	CallSessionFunction(EAuthenticate, TIpcArgs(buf), rs);
-	
-	// this code will not be reached
-	User::WaitForRequest(rs);
-	CleanupStack::PopAndDestroy(buf);
-	}
-
-
-void RTestAuthClient::SendHighVerAuthExprL()
-/**
-	Send an authenticate request to the server,
-	with an unsupported version number.
-	
-	The server should fail the request with
-	KErrAuthServUnsupportedExprVersion.
- */
-	{
-	HBufC8* buf = GetAuthExprExternalizationLC();
-	
-	// change the version field, which is the first byte
-	buf->Des()[0] = KMaxTInt8;
-	
-	TRequestStatus rs;
-	CallSessionFunction(EAuthenticate, TIpcArgs(buf), rs);
-	User::WaitForRequest(rs);
-	
-	// this isn't semantically the right code to
-	// fail the test with, because it is expected.
-	// However, it is easy to find in the test code
-	// if it occurs.
-	if (rs != KErrAuthServUnsupportedExprVersion)
-		User::Leave(KErrAuthServUnsupportedExprVersion);
-	
-	CleanupStack::PopAndDestroy(buf);
-	}
-
-
-void RunTestAuthClientFunctionL(void (RTestAuthClient::* aTacFuncL)())
-/**
-	Connect to the authentication server using
-	RTestAuthClient, and call the supplied function.
-	
-	This is a helper function for CTStepBadExtAuthExpr
-	and CTStepAuthExprHighVer which both use
-	RTestAuthClient, and only call different functions.
-	
-	@param	aTacFuncL		Function to call on RTestAuthClient
-							once the connection has been made.
-							If this function leaves then the
-							leave code is propagated through this
-							(RunTestAuthClientFunctionL) function.
- */
-	{
-	RTestAuthClient tac;
-	User::LeaveIfError(tac.Connect());
-	CleanupClosePushL(tac);
-	
-	// this function should not return
-	(tac.*aTacFuncL)();
-	
-	CleanupStack::PopAndDestroy(&tac);
-	}
-
-
-}	// namespace
-
-
-CTStepBadExtAuthExpr::CTStepBadExtAuthExpr()
-/**
-	Record this test step's name.
- */
-	{
-	SetTestStepName(KTStepBadExtAuthExpr);
-	}
-
-
-TVerdict CTStepBadExtAuthExpr::doTestStepL()
-/**
-	Implement CTestStep by calling RAuthClient::Authenticate
-	with a corrupt externalized authentication expression.
-	
-	The current thread should be panicked with
-	category AuthServer and reason EPanicBadExternalizedAuthExpr.
- */
-	{
-	// this function should not return
-	RunTestAuthClientFunctionL(&RTestAuthClient::SendCorruptAuthExprL);
-	return EPass;
-	}
-
-
-CTStepAuthExprHighVer::CTStepAuthExprHighVer()
-/**
-	Record this test step's name.
- */
-	{
-	SetTestStepName(KTStepAuthExprHighVer);
-	}
-
-
-TVerdict CTStepAuthExprHighVer::doTestStepL()
-/**
-	Implement CTestStep by calling RAuthClient::SendHighVerAuthExprL()
-	and ensuring the server fails the request if
-	the externalized auth expr uses an unsupported
-	version number.
- */
-	{
-	RunTestAuthClientFunctionL(&RTestAuthClient::SendHighVerAuthExprL);
-	return EPass;
-	}
-
-
-// -------- Debug-mode client-side panicks --------
-
-
-#ifdef _DEBUG
-
-
-// -------- CTStepAuthExprTypePnc --------
-
-
-CTStepAuthExprTypePnc::CTStepAuthExprTypePnc()
-/**
-	Record this test step's name.
- */
-	{
-	SetTestStepName(KTStepAuthExprTypePnc);
-	}
-
-
-TVerdict CTStepAuthExprTypePnc::doTestStepL()
-/**
-	Implement CTestStep by creating a plugin id
-	node, corrupting the type field, and testing
-	that it is panicked when the type is
-	retrieved.  Debug only.
- */
-	{
-	CAuthExpression* ae = AuthExpr(KTestPluginId0);
-	User::LeaveIfNull(ae);
-	CAuthExpressionImpl* aeImpl = static_cast<CAuthExpressionImpl*>(ae);
-	CorruptTypeField(aeImpl);
-	/* ignore */ aeImpl->Type();
-	
-	// this code should never be reached
-	return EPass;
-	}
-
-
-// -------- CTStepAuthExprTypePncBadLeft --------
-
-
-CTStepAuthExprTypePncBadLeft::CTStepAuthExprTypePncBadLeft()
-/**
-	Record this test step's name.
- */
-	{
-	SetTestStepName(KTStepAuthExprTypePncBadLeft);
-	}
-
-
-TVerdict CTStepAuthExprTypePncBadLeft::doTestStepL()
-/**
-	Implement CTestStep by creating a complex
-	expression where the left subexpression is
-	corrupt.  This tests that the invariant
-	correctly validates the left subtree.
- */
-	{
-	CAuthExpression* ae = AuthAnd(AuthExpr(KTestPluginId0), AuthExpr(KTestPluginId1));
-	User::LeaveIfNull(ae);
-	CAuthExpressionImpl* aeImpl = static_cast<CAuthExpressionImpl*>(ae);
-	CorruptTypeField(aeImpl->Left());	
-	/* ignore */ aeImpl->Type();
-	
-	// this code should never be reached
-	return EPass;
-	}
-
-
-// -------- CTStepAuthExprTypePncBadRight --------
-
-
-CTStepAuthExprTypePncBadRight::CTStepAuthExprTypePncBadRight()
-/**
-	Record this test step's name.
- */
-	{
-	SetTestStepName(KTStepAuthExprTypePncBadRight);
-	}
-
-
-TVerdict CTStepAuthExprTypePncBadRight::doTestStepL()
-/**
-	Implement CTestStep by creating a complex
-	expression where the Right subexpression is
-	corrupt.  This tests that the invariant
-	correctly validates the Right subtree.
- */
-	{
-	CAuthExpression* ae = AuthAnd(AuthExpr(KTestPluginId0), AuthExpr(KTestPluginId1));
-	User::LeaveIfNull(ae);
-	CAuthExpressionImpl* aeImpl = static_cast<CAuthExpressionImpl*>(ae);
-	CorruptTypeField(aeImpl->Right());	
-	/* ignore */ aeImpl->Type();
-	
-	// this code should never be reached
-	return EPass;
-	}
-
-
-#endif	// #ifdef _DEBUG