diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/filebasedcertificateandkeystores/test/ttesttools/ttesttoolstep.cpp --- a/cryptoservices/filebasedcertificateandkeystores/test/ttesttools/ttesttoolstep.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/filebasedcertificateandkeystores/test/ttesttools/ttesttoolstep.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,932 +1,982 @@ -/* -* Copyright (c) 2007-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: -* test tool step implementation -* -*/ - - - - -/** - @file -*/ - - -#include -#include "ttesttoolstep.h" - -_LIT8(KLabel,"label"); - -const TChar KCarriageReturn = '\r'; -const TChar KLineReturn = '\n'; -const TChar KDelemeter = ':'; - -HBufC8* ParseOutputFileLC(const TPtrC& aFileName); -TInt ReadWordL(const TDesC8& aBuffer, TInt& aPos, TPtrC8& aLine); -void ConstuctExpectedArrayL(RPointerArray& aArray, const TDesC8& aBuffer,TBool aCheck, TBool aException = EFalse); -void ResetAndDestroyHBufCList(TAny* aList); - -// -// CTestToolListCertStep -// - -CTestToolListCertStep::~CTestToolListCertStep() - { - - } - - -CTestToolListCertStep::CTestToolListCertStep() - { - // Call base class method to set up the human readable name for logging - SetTestStepName(KTestToolListCertStep); - } - -/** - * Override of base class virtual. Prepares for the test run of Filetokens - * @return TVerdict code - */ -TVerdict CTestToolListCertStep::doTestStepPreambleL() - { - _LIT(KActualOutput, "actualoutput"); - GetStringFromConfig(ConfigSection(), KActualOutput, iActualOutput); - - // construct name of the cert - if (GetStringFromConfig(ConfigSection(), KExpectedOwner, iExpectedOwner)) - { - iOwnerExist = 1; - } - if (!GetIntFromConfig(ConfigSection(), KExpectedListStore, iListStoreExist)) - { - iListStoreExist = 0; - } - if(!GetIntFromConfig(ConfigSection(), KStore, iExpectedStore)) - { - iExpectedStore = -1; - } - if(!GetIntFromConfig(ConfigSection(), KExpectedNumLabel, iExpectedNumLabel)) - { - iExpectedNumLabel = 1; - } - if (GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel1)) - { - iLabel1Exist = 1; - } - if (GetStringFromConfig(ConfigSection(), KExpectedLabel2, iExpectedLabel2)) - { - iLabel2Exist = 1; - } - return TestStepResult(); - } - -/** - * Override of base class pure virtual - * Demonstrates reading configuration parameters from an ini file section - * @return TVerdict code - */ -TVerdict CTestToolListCertStep::doTestStepL() - { - if (TestStepResult() != EPass) - { - return TestStepResult(); - } - - CActiveScheduler* sched = NULL; - sched = new (ELeave) CActiveScheduler; - CleanupStack::PushL(sched); - CActiveScheduler::Install(sched); - CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); - - if (iLabel1Exist && !iLabel2Exist) - { - iVerdict = activeEngine->ListCerts(iExpectedLabel1, iExpectedNumLabel); - } - else if (iLabel2Exist && iLabel1Exist) - { - iVerdict = activeEngine->ListCerts(iExpectedLabel1, iExpectedLabel2, iExpectedNumLabel); - } - else - { - RPointerArray CertList; - CleanupStack::PushL(TCleanupItem(ResetAndDestroyHBufCList, &CertList)); - HBufC8* fileContents = ParseOutputFileLC(iActualOutput); - if (iListStoreExist) - { - _LIT8(KLabel1, "label:"); - TLex8 lex(*fileContents); - while(!lex.Eos()) - { - TPtrC8 token = lex.NextToken(); - if(token.CompareF(KLabel1) == KErrNone) - { - TInt offset = lex.Offset(); - TChar c = lex.Get(); - while(c != KCarriageReturn && c != KLineReturn) - { - c = lex.Get(); - } - TInt end = lex.Offset(); - TPtrC8 newtoken; - TInt tokenLen = end-offset-1; - newtoken.Set(&fileContents->Des()[offset], tokenLen); - - HBufC* tmp = HBufC::NewLC(tokenLen); - tmp->Des().Copy(newtoken); - tmp->Des().Trim(); - CertList.Append(tmp); - CleanupStack::Pop(tmp); - } - } - CleanupStack::PopAndDestroy(fileContents); - iVerdict = activeEngine->ListStore(CertList); - } - else - { - ConstuctExpectedArrayL(CertList, fileContents->Des(), ETrue); - CleanupStack::PopAndDestroy(fileContents); - if (iOwnerExist) - { - iVerdict = activeEngine->ListCerts(CertList, iExpectedOwner); - } - else if (iExpectedStore != -1) - { - iVerdict = activeEngine->ListCerts(CertList, iExpectedStore); - } - else - { - iVerdict = activeEngine->ListCerts(CertList); - } - } - CleanupStack::PopAndDestroy(&CertList); - } - - - CleanupStack::PopAndDestroy(2, sched); - - if (iVerdict == EFail) - { - INFO_PRINTF1(_L("Exptected Certificate is not Exist")); - } - SetTestStepResult(iVerdict); - - return TestStepResult(); - } - -/** - * Override of base class virtual - * @return TVerdict code - */ -TVerdict CTestToolListCertStep::doTestStepPostambleL() - { - CActiveScheduler::Install(NULL); - return TestStepResult(); - } - - -// -// CTestToolGetTrustAppsStep -// - -CTestToolGetTrustAppsStep::~CTestToolGetTrustAppsStep() - { - iApps.ResetAndDestroy(); - } - - -CTestToolGetTrustAppsStep::CTestToolGetTrustAppsStep() - { - // Call base class method to set up the human readable name for logging - SetTestStepName(KTestToolGetTrustAppsStep); - } - -/** - * Override of base class virtual. Prepares for the test run of Filetokens - * @return TVerdict code - */ -TVerdict CTestToolGetTrustAppsStep::doTestStepPreambleL() - { - _LIT(KNumApps, "numapps"); // this specifies how many commands to read - _LIT(KAppsBase, "apps"); // + number (0-based) = file to check for - - if (!GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel)) - { - INFO_PRINTF1(_L("label name is missing")); - SetTestStepResult(EFail); - } - TInt numApps = 0; - if (GetIntFromConfig(ConfigSection(), KNumApps, numApps) && numApps!=0) - { - TPtrC appName; - for (TInt i=0; i keyBuf(KAppsBase); - keyBuf.AppendNum(i); - - if (GetStringFromConfig(ConfigSection(), keyBuf, appName)) - { - HBufC* apps = appName.AllocLC(); - iApps.AppendL(apps); - CleanupStack::Pop(apps); - } - else - { - SetTestStepResult(EFail); - // the string must exist, otherwise the config is invalid - ERR_PRINTF2(_L("Missing apps name for key '%S'"), &keyBuf); - } - } - } - return TestStepResult(); - } - -/** - * Override of base class pure virtual - * Demonstrates reading configuration parameters from an ini file section - * @return TVerdict code - */ -TVerdict CTestToolGetTrustAppsStep::doTestStepL() - { - if (TestStepResult() != EPass) - { - return TestStepResult(); - } - - CActiveScheduler* sched = NULL; - sched = new (ELeave) CActiveScheduler; - CleanupStack::PushL(sched); - CActiveScheduler::Install(sched); - CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); - iVerdict = activeEngine->CheckApps(iApps, iExpectedLabel); - - CleanupStack::PopAndDestroy(2, sched); - if (iVerdict == EFail) - { - INFO_PRINTF1(_L("Certificate is not trusted for the applicaion")); - } - SetTestStepResult(iVerdict); - - return TestStepResult(); - } - -/** - * Override of base class virtual - * @return TVerdict code - */ -TVerdict CTestToolGetTrustAppsStep::doTestStepPostambleL() - { - CActiveScheduler::Install(NULL); - return TestStepResult(); - } - -// -// CTestToolListKeyStep -// - -CTestToolListKeyStep::~CTestToolListKeyStep() - { - } - - -CTestToolListKeyStep::CTestToolListKeyStep() - { - // Call base class method to set up the human readable name for logging - SetTestStepName(KTestToolListKeyStep); - } - -/** - * Override of base class virtual. Prepares for the test run of Filetokens - * @return TVerdict code - */ -TVerdict CTestToolListKeyStep::doTestStepPreambleL() - { - // construct name of the key - - GetStringFromConfig(ConfigSection(), KActualOutput, iActualOutput); - if (!GetIntFromConfig(ConfigSection(), KExpectedListStore, iListStoreExist)) - { - iListStoreExist = 0; - } - if(!GetIntFromConfig(ConfigSection(), KStore, iExpectedStore)) - { - iExpectedStore = -1; - } - if(!GetIntFromConfig(ConfigSection(), KExpectedNumLabel, iExpectedNumLabel)) - { - iExpectedNumLabel = 1; - } - if (GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel1)) - { - iLabel1Exist = 1; - } - if (GetStringFromConfig(ConfigSection(), KExpectedLabel2, iExpectedLabel2)) - { - iLabel2Exist = 1; - } - return TestStepResult(); - } - -/** - * Override of base class pure virtual - * Demonstrates reading configuration parameters from an ini file section - * @return TVerdict code - */ -TVerdict CTestToolListKeyStep::doTestStepL() - { - if (TestStepResult() != EPass) - { - return TestStepResult(); - } - - CActiveScheduler* sched = NULL; - sched = new (ELeave) CActiveScheduler; - CleanupStack::PushL(sched); - CActiveScheduler::Install(sched); - CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); - if (iLabel1Exist && !iLabel2Exist) - { - iVerdict = activeEngine->ListKeys(iExpectedLabel1, iExpectedNumLabel); - } - else if (iLabel2Exist && iLabel1Exist) - { - iVerdict = activeEngine->ListKeys(iExpectedLabel1, iExpectedLabel2, iExpectedNumLabel); - } - else - { - RPointerArray KeyList; - CleanupStack::PushL(TCleanupItem(ResetAndDestroyHBufCList, &KeyList)); - HBufC8* fileContents = ParseOutputFileLC(iActualOutput); - if (iListStoreExist) - { - _LIT8(KLabel1, "label:"); - TLex8 lex(*fileContents); - while(!lex.Eos()) - { - TPtrC8 token = lex.NextToken(); - if(token.CompareF(KLabel1) == KErrNone) - { - TInt offset = lex.Offset(); - TChar c = lex.Get(); - while(c != KCarriageReturn && c != KLineReturn) - { - c = lex.Get(); - } - TInt end = lex.Offset(); - TPtrC8 newtoken; - TInt tokenLen = end-offset-1; - newtoken.Set(&fileContents->Des()[offset], tokenLen); - - HBufC* tmp = HBufC::NewLC(tokenLen); - tmp->Des().Copy(newtoken); - tmp->Des().Trim(); - KeyList.Append(tmp); - CleanupStack::Pop(tmp); - } - } - CleanupStack::PopAndDestroy(fileContents); - iVerdict = activeEngine->ListStoreKey(KeyList); - } - else - { - ConstuctExpectedArrayL(KeyList, fileContents->Des(), EFalse); - CleanupStack::PopAndDestroy(fileContents); - if (iExpectedStore != -1) - { - iVerdict = activeEngine->ListKeys(KeyList, iExpectedStore); - } - else - { - iVerdict = activeEngine->ListKeys(KeyList); - } - } - CleanupStack::PopAndDestroy(&KeyList); - } - - CleanupStack::PopAndDestroy(2, sched); - - if (iVerdict == EFail) - { - INFO_PRINTF1(_L("Exptected Keys are not Exist")); - } - SetTestStepResult(iVerdict); - - return TestStepResult(); - } - -/** - * Override of base class virtual - * @return TVerdict code - */ -TVerdict CTestToolListKeyStep::doTestStepPostambleL() - { - CActiveScheduler::Install(NULL); - return TestStepResult(); - } - - -// -// CTestToolGetPolicyStep -// - -CTestToolGetPolicyStep::~CTestToolGetPolicyStep() - { - } - - -CTestToolGetPolicyStep::CTestToolGetPolicyStep() - { - // Call base class method to set up the human readable name for logging - SetTestStepName(KTestToolGetPolicyStep); - } - -/** - * Override of base class virtual. Prepares for the test run of Filetokens - * @return TVerdict code - */ -TVerdict CTestToolGetPolicyStep::doTestStepPreambleL() - { - // construct name of the key - if (GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel)) - { - iLabelExist = 1; - } - if (!GetStringFromConfig(ConfigSection(), KExpectedUser, iExpectedUser)) - { - INFO_PRINTF1(_L("policy user name is missing")); - SetTestStepResult(EFail); - } - if (!GetIntFromConfig(ConfigSection(), KExpectedUserExist, iExpectedUserExist)) - { - iExpectedUserExist = 0; - } - return TestStepResult(); - } - -/** - * Override of base class pure virtual - * Demonstrates reading configuration parameters from an ini file section - * @return TVerdict code - */ -TVerdict CTestToolGetPolicyStep::doTestStepL() - { - if (TestStepResult() != EPass) - { - return TestStepResult(); - } - - CActiveScheduler* sched = NULL; - sched = new (ELeave) CActiveScheduler; - CleanupStack::PushL(sched); - CActiveScheduler::Install(sched); - CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); - if (iLabelExist) - { - iVerdict = activeEngine->GetPolicy(iExpectedLabel, iExpectedUser, iExpectedUserExist); - } - - CleanupStack::PopAndDestroy(2, sched); - if (iVerdict == EFail) - { - INFO_PRINTF1(_L("Exptected Keys are not Exist")); - } - SetTestStepResult(iVerdict); - - return TestStepResult(); - } - -/** - * Override of base class virtual - * @return TVerdict code - */ -TVerdict CTestToolGetPolicyStep::doTestStepPostambleL() - { - CActiveScheduler::Install(NULL); - return TestStepResult(); - } - - - -// -// CTestToolParseFileStep -// - -CTestToolParseFileStep::~CTestToolParseFileStep() - { - iArgs.ResetAndDestroy(); - } - - -CTestToolParseFileStep::CTestToolParseFileStep() - { - // Call base class method to set up the human readable name for logging - SetTestStepName(KTestToolParseFileStep); - } - -/** - * Override of base class virtual. Prepares for the test run of Filetokens - * @return TVerdict code - */ -TVerdict CTestToolParseFileStep::doTestStepPreambleL() - { - _LIT(KNumLines, "numlines"); // this specifies how many commands to read - _LIT(KLineBase, "line"); // + number (0-based) = file to check for - - - TInt numlines = 0; - if (GetIntFromConfig(ConfigSection(), KNumLines, numlines) && numlines!=0) - { - TPtrC lineContent; - for (TInt i=0; i keyBuf(KLineBase); - keyBuf.AppendNum(i); - - if (GetStringFromConfig(ConfigSection(), keyBuf, lineContent)) - { - HBufC* line = lineContent.AllocLC(); - line->Des().Trim(); - iArgs.AppendL(line); - CleanupStack::Pop(line); - } - else - { - SetTestStepResult(EFail); - // the string must exist, otherwise the config is invalid - ERR_PRINTF2(_L("Missing apps name for key '%S'"), &keyBuf); - } - } - } - if (!GetStringFromConfig(ConfigSection(), KActualOutput, iActualOutput)) - { - INFO_PRINTF1(_L("actual output filename is missing")); - SetTestStepResult(EFail); - } - if (numlines == 0) - { - if (!GetStringFromConfig(ConfigSection(), KExpectedError, iExpectedError)) - { - INFO_PRINTF1(_L("error value is missing")); - SetTestStepResult(EFail); - } - } - return TestStepResult(); - } - -/** - * Override of base class pure virtual - * Demonstrates reading configuration parameters from an ini file section - * @return TVerdict code - */ -TVerdict CTestToolParseFileStep::doTestStepL() - { - if (TestStepResult() != EPass) - { - return TestStepResult(); - } - if (iArgs.Count() == 0) - { - HBufC8* fileContents = ParseOutputFileLC(iActualOutput); - HBufC8* actualError = GetErrorFromOutputFileLC(*fileContents); - if (actualError == NULL) - { - INFO_PRINTF1(_L("Failed to parse the output File")); - SetTestStepResult(EFail); - } - - HBufC* actual16 = HBufC::NewLC(actualError->Length()); - actual16->Des().Copy(*actualError); - - if (iExpectedError.CompareF(*actual16) != KErrNone) - { - INFO_PRINTF1(_L("Exptected Error is Different from Actual")); - SetTestStepResult(EFail); - } - CleanupStack::PopAndDestroy(3, fileContents); //actual16, actualError, fileContents - } - else - { - HBufC8* fileContents = ParseOutputFileLC(iActualOutput); - RPointerArray actualoutput; - CleanupStack::PushL(TCleanupItem(ResetAndDestroyHBufCList, &actualoutput)); - ConstuctExpectedArrayL(actualoutput, fileContents->Des(), EFalse, ETrue); - TBool result = EFalse; - for (TInt i = 0; i < iArgs.Count(); i++) - { - result = EFalse; - for (TInt j = 5; j < actualoutput.Count(); j++) - { - if (iArgs[i]->Des().CompareF(actualoutput[j]->Des()) == KErrNone) - { - result = ETrue; - break; - } - } - if (!result) - { - break; - } - } - if (!result) - { - INFO_PRINTF1(_L("expected output and actual output is not matching")); - SetTestStepResult(EFail); - } - CleanupStack::PopAndDestroy(2, fileContents); // fileContents ,actualoutput - } - - return TestStepResult(); - } - - -HBufC8* CTestToolParseFileStep::GetErrorFromOutputFileLC(const TDesC8& aBuffer) - { - _LIT8(KOutput, "output"); - TInt readPos = 0; - TPtrC8 wordContents; - - HBufC8* wordBuf = NULL; - while (!ReadWordL(aBuffer, readPos, wordContents)) - { - wordBuf = wordContents.AllocLC(); - wordBuf->Des().Trim(); - if (wordBuf->Des().CompareF(KOutput) == KErrNone) - { - readPos+=1; - if (!ReadWordL(aBuffer, readPos, wordContents)) - { - CleanupStack::PopAndDestroy(wordBuf); - wordBuf = wordContents.AllocLC(); - wordBuf->Des().Trim(); - break; - } - } - CleanupStack::PopAndDestroy(wordBuf); - } - return wordBuf; - } - -/** - * Override of base class virtual - * @return TVerdict code - */ -TVerdict CTestToolParseFileStep::doTestStepPostambleL() - { - CActiveScheduler::Install(NULL); - return TestStepResult(); - } - - - -// -// global public methods -// - -// Reads the words from the Buffer either ended with : or \n -// if the word is "label", then read the next word and add to the array -// if the word is not label read upto the end of the line then go to next loop -// if exception is on , reads the entire line -void ConstuctExpectedArrayL(RPointerArray& aArray, const TDesC8& aBuffer,TBool aCheck, TBool aException) - { - TInt readPos = 0; - TPtrC8 wordContents; - - TInt bufferLength = aBuffer.Length(); - while (!ReadWordL(aBuffer, readPos, wordContents)) - { - HBufC8* wordBuf = wordContents.AllocLC(); - wordBuf->Des().Trim(); - if (aException) - { - HBufC* currentLabel = HBufC::NewLC(wordBuf->Length()); - currentLabel->Des().Copy(*wordBuf); - currentLabel->Des().Trim(); - aArray.AppendL(currentLabel); - CleanupStack::Pop(currentLabel); - } - else if (wordBuf->Des().CompareF(KLabel) == KErrNone) - { - if (!ReadWordL(aBuffer, readPos, wordContents)) - { - TPtrC8 word; - TInt len = wordContents.Length(); - // aCheck is on for reading the certool output file,because the output will be like this - // label: abc format:.... , so we need to exclude format - if (aCheck) // certdetails - { - len = len - 6; - } - word.Set(wordContents.Ptr(), len); - HBufC* currentLabel = HBufC::NewLC(word.Length()); - currentLabel->Des().Copy(word); - currentLabel->Des().Trim(); - aArray.AppendL(currentLabel); - CleanupStack::Pop(currentLabel); - } - else - { - break; - } - } - else - { - readPos--; - while (readPos < bufferLength) - { - TChar c = aBuffer[readPos]; - - if (c == KCarriageReturn || c == KLineReturn) - { - readPos += 1; - break; - } - readPos++; - } - } - CleanupStack::PopAndDestroy(wordBuf); - } - } - -// Reads the output file and return into the buffer. -HBufC8* ParseOutputFileLC(const TPtrC& aFileName) - { - RFs fs; - RFile file; - User::LeaveIfError(fs.Connect()); - CleanupClosePushL(fs); - User::LeaveIfError(file.Open(fs, aFileName, EFileRead)); - CleanupClosePushL(file); - TInt fSize; - file.Size(fSize); - - HBufC8* fileContents = HBufC8::NewLC(fSize); - TPtr8 ptr(fileContents->Des()); - ptr.SetLength(fSize); - - // create file stream and Read the content from the file - RFileReadStream inputFileStream(file); - CleanupClosePushL(inputFileStream); - inputFileStream.ReadL(ptr, fSize); - CleanupStack::PopAndDestroy(&inputFileStream); - CleanupStack::Pop(fileContents); - CleanupStack::PopAndDestroy(2, &fs); - CleanupStack::PushL(fileContents); - - return fileContents; - } - -// Reads the words from the aBuffer either ended with : or \n or \r -TInt ReadWordL(const TDesC8& aBuffer, TInt& aPos, TPtrC8& aLine) - { - TBool endOfBuffer = EFalse; - - TInt bufferLength = aBuffer.Length(); - if ( aPos > bufferLength || aPos < 0 ) - { - return ETrue; // End of buffer - } - - TInt endPos = aPos; - // find the position of the next delimeter - endPos = aPos; - while (endPos < bufferLength) - { - TChar c = aBuffer[endPos]; - - if (c == KCarriageReturn || c == KLineReturn || c == KDelemeter) - { - // exception when comes like c:\filename - if ((bufferLength > (endPos + 1)) && aBuffer[endPos+1] != '\\') - { - break; - } - } - endPos++; - } - - if (endPos != aPos) - { - TInt tokenLen = endPos - aPos; - aLine.Set(&aBuffer[aPos], tokenLen); - endPos += 1; - } - else if (endPos == bufferLength) - { - return ETrue; // End of buffer - } - else - { - endPos++; - } - aPos = endPos; - return endOfBuffer; - } - - -void ResetAndDestroyHBufCList(TAny* aList) - { - RPointerArray* list = static_cast*>(aList); - - list->ResetAndDestroy(); - list->Close(); - } - - - - - - - - - -// -// CTestToolGetTrustStep -// - -CTestToolGetTrustStep::~CTestToolGetTrustStep() - { - - } - - -CTestToolGetTrustStep::CTestToolGetTrustStep() - { - // Call base class method to set up the human readable name for logging - SetTestStepName(KTestToolGetTrustStep); - } - -/** - * Override of base class virtual. Prepares for the test run of Filetokens - * @return TVerdict code - */ -TVerdict CTestToolGetTrustStep::doTestStepPreambleL() - { - - if (!GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel)) - { - INFO_PRINTF1(_L("label name is missing")); - SetTestStepResult(EFail); - } - if (!GetIntFromConfig(ConfigSection(), KExpectedTrust, iExpectedTrust)) - { - INFO_PRINTF1(_L("Expected trust is missing")); - SetTestStepResult(EFail); - } - return TestStepResult(); - } - -/** - * Override of base class pure virtual - * Demonstrates reading configuration parameters from an ini file section - * @return TVerdict code - */ -TVerdict CTestToolGetTrustStep::doTestStepL() - { - if (TestStepResult() != EPass) - { - return TestStepResult(); - } - - CActiveScheduler* sched = NULL; - sched = new (ELeave) CActiveScheduler; - CleanupStack::PushL(sched); - CActiveScheduler::Install(sched); - CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); - iVerdict = activeEngine->CheckTrust(iExpectedLabel,iExpectedTrust); - CleanupStack::PopAndDestroy(2, sched); - if (iVerdict == EFail) - { - INFO_PRINTF1(_L("Certificate is not trusted for the applicaion")); - } - SetTestStepResult(iVerdict); - - return TestStepResult(); - } - -/** - * Override of base class virtual - * @return TVerdict code - */ -TVerdict CTestToolGetTrustStep::doTestStepPostambleL() - { - CActiveScheduler::Install(NULL); - return TestStepResult(); - } - -; - -// End of file +/* +* Copyright (c) 2007-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: +* test tool step implementation +* +*/ + + +/** + @file +*/ + + +#include +#include "ttesttoolstep.h" + +_LIT8(KLabel,"label"); + +const TChar KCarriageReturn = '\r'; +const TChar KLineReturn = '\n'; +const TChar KDelemeter = ':'; + +HBufC8* ParseOutputFileLC(const TPtrC& aFileName); +TInt ReadWordL(const TDesC8& aBuffer, TInt& aPos, TPtrC8& aLine); +void ConstuctExpectedArrayL(RPointerArray& aArray, const TDesC8& aBuffer,TBool aCheck, TBool aException = EFalse); +void ResetAndDestroyHBufCList(TAny* aList); + +// +// CTestToolListCertStep +// + +CTestToolListCertStep::~CTestToolListCertStep() + { + + } + + +CTestToolListCertStep::CTestToolListCertStep() + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTestToolListCertStep); + } + +/** + * Override of base class virtual. Prepares for the test run of Filetokens + * @return TVerdict code + */ +TVerdict CTestToolListCertStep::doTestStepPreambleL() + { + _LIT(KActualOutput, "actualoutput"); + GetStringFromConfig(ConfigSection(), KActualOutput, iActualOutput); + + // construct name of the cert + if (GetStringFromConfig(ConfigSection(), KExpectedOwner, iExpectedOwner)) + { + iOwnerExist = 1; + } + if (!GetIntFromConfig(ConfigSection(), KExpectedListStore, iListStoreExist)) + { + iListStoreExist = 0; + } + if(!GetIntFromConfig(ConfigSection(), KStore, iExpectedStore)) + { + iExpectedStore = -1; + } + if(!GetIntFromConfig(ConfigSection(), KExpectedNumLabel, iExpectedNumLabel)) + { + iExpectedNumLabel = 1; + } + if (GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel1)) + { + iLabel1Exist = 1; + } + if (GetStringFromConfig(ConfigSection(), KExpectedLabel2, iExpectedLabel2)) + { + iLabel2Exist = 1; + } + return TestStepResult(); + } + +/** + * Override of base class pure virtual + * Demonstrates reading configuration parameters from an ini file section + * @return TVerdict code + */ +TVerdict CTestToolListCertStep::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } + + CActiveScheduler* sched = NULL; + sched = new (ELeave) CActiveScheduler; + CleanupStack::PushL(sched); + CActiveScheduler::Install(sched); + CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); + + if (iLabel1Exist && !iLabel2Exist) + { + iVerdict = activeEngine->ListCerts(iExpectedLabel1, iExpectedNumLabel); + } + else if (iLabel2Exist && iLabel1Exist) + { + iVerdict = activeEngine->ListCerts(iExpectedLabel1, iExpectedLabel2, iExpectedNumLabel); + } + else + { + RPointerArray CertList; + CleanupStack::PushL(TCleanupItem(ResetAndDestroyHBufCList, &CertList)); + HBufC8* fileContents = ParseOutputFileLC(iActualOutput); + if (iListStoreExist) + { + _LIT8(KLabel1, "label:"); + TLex8 lex(*fileContents); + while(!lex.Eos()) + { + TPtrC8 token = lex.NextToken(); + if(token.CompareF(KLabel1) == KErrNone) + { + TInt offset = lex.Offset(); + TChar c = lex.Get(); + while(c != KCarriageReturn && c != KLineReturn) + { + c = lex.Get(); + } + TInt end = lex.Offset(); + TPtrC8 newtoken; + TInt tokenLen = end-offset-1; + newtoken.Set(&fileContents->Des()[offset], tokenLen); + + HBufC* tmp = HBufC::NewLC(tokenLen); + tmp->Des().Copy(newtoken); + tmp->Des().Trim(); + CertList.Append(tmp); + CleanupStack::Pop(tmp); + } + } + CleanupStack::PopAndDestroy(fileContents); + iVerdict = activeEngine->ListStore(CertList); + } + else + { + ConstuctExpectedArrayL(CertList, fileContents->Des(), ETrue); + CleanupStack::PopAndDestroy(fileContents); + if (iOwnerExist) + { + iVerdict = activeEngine->ListCerts(CertList, iExpectedOwner); + } + else if (iExpectedStore != -1) + { + iVerdict = activeEngine->ListCerts(CertList, iExpectedStore); + } + else + { + iVerdict = activeEngine->ListCerts(CertList); + } + } + CleanupStack::PopAndDestroy(&CertList); + } + + + CleanupStack::PopAndDestroy(2, sched); + + if (iVerdict == EFail) + { + INFO_PRINTF1(_L("Expected Certificate does not Exist")); + } + SetTestStepResult(iVerdict); + + return TestStepResult(); + } + +/** + * Override of base class virtual + * @return TVerdict code + */ +TVerdict CTestToolListCertStep::doTestStepPostambleL() + { + CActiveScheduler::Install(NULL); + return TestStepResult(); + } + + +// +// CTestToolGetTrustAppsStep +// + +CTestToolGetTrustAppsStep::~CTestToolGetTrustAppsStep() + { + iApps.ResetAndDestroy(); + } + + +CTestToolGetTrustAppsStep::CTestToolGetTrustAppsStep() + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTestToolGetTrustAppsStep); + } + +/** + * Override of base class virtual. Prepares for the test run of Filetokens + * @return TVerdict code + */ +TVerdict CTestToolGetTrustAppsStep::doTestStepPreambleL() + { + _LIT(KNumApps, "numapps"); // this specifies how many commands to read + _LIT(KAppsBase, "apps"); // + number (0-based) = file to check for + + if (!GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel)) + { + INFO_PRINTF1(_L("label name is missing")); + SetTestStepResult(EFail); + } + TInt numApps = 0; + if (GetIntFromConfig(ConfigSection(), KNumApps, numApps) && numApps!=0) + { + TPtrC appName; + for (TInt i=0; i keyBuf(KAppsBase); + keyBuf.AppendNum(i); + + if (GetStringFromConfig(ConfigSection(), keyBuf, appName)) + { + HBufC* apps = appName.AllocLC(); + iApps.AppendL(apps); + CleanupStack::Pop(apps); + } + else + { + SetTestStepResult(EFail); + // the string must exist, otherwise the config is invalid + ERR_PRINTF2(_L("Missing apps name for key '%S'"), &keyBuf); + } + } + } + return TestStepResult(); + } + +/** + * Override of base class pure virtual + * Demonstrates reading configuration parameters from an ini file section + * @return TVerdict code + */ +TVerdict CTestToolGetTrustAppsStep::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } + + CActiveScheduler* sched = NULL; + sched = new (ELeave) CActiveScheduler; + CleanupStack::PushL(sched); + CActiveScheduler::Install(sched); + CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); + iVerdict = activeEngine->CheckApps(iApps, iExpectedLabel); + + CleanupStack::PopAndDestroy(2, sched); + if (iVerdict == EFail) + { + INFO_PRINTF1(_L("Certificate is not trusted for the applicaion")); + } + SetTestStepResult(iVerdict); + + return TestStepResult(); + } + +/** + * Override of base class virtual + * @return TVerdict code + */ +TVerdict CTestToolGetTrustAppsStep::doTestStepPostambleL() + { + CActiveScheduler::Install(NULL); + return TestStepResult(); + } + +// +// CTestToolListKeyStep +// + +CTestToolListKeyStep::~CTestToolListKeyStep() + { + } + + +CTestToolListKeyStep::CTestToolListKeyStep() + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTestToolListKeyStep); + } + +/** + * Override of base class virtual. Prepares for the test run of Filetokens + * @return TVerdict code + */ +TVerdict CTestToolListKeyStep::doTestStepPreambleL() + { + // construct name of the key + + GetStringFromConfig(ConfigSection(), KActualOutput, iActualOutput); + if (!GetIntFromConfig(ConfigSection(), KExpectedListStore, iListStoreExist)) + { + iListStoreExist = 0; + } + if(!GetIntFromConfig(ConfigSection(), KStore, iExpectedStore)) + { + iExpectedStore = -1; + } + if(!GetIntFromConfig(ConfigSection(), KExpectedNumLabel, iExpectedNumLabel)) + { + iExpectedNumLabel = 1; + } + if (GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel1)) + { + iLabel1Exist = 1; + } + if (GetStringFromConfig(ConfigSection(), KExpectedLabel2, iExpectedLabel2)) + { + iLabel2Exist = 1; + } + return TestStepResult(); + } + +/** + * Override of base class pure virtual + * Demonstrates reading configuration parameters from an ini file section + * @return TVerdict code + */ +TVerdict CTestToolListKeyStep::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } + + CActiveScheduler* sched = NULL; + sched = new (ELeave) CActiveScheduler; + CleanupStack::PushL(sched); + CActiveScheduler::Install(sched); + CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); + if (iLabel1Exist && !iLabel2Exist) + { + iVerdict = activeEngine->ListKeys(iExpectedLabel1, iExpectedNumLabel); + } + else if (iLabel2Exist && iLabel1Exist) + { + iVerdict = activeEngine->ListKeys(iExpectedLabel1, iExpectedLabel2, iExpectedNumLabel); + } + else + { + RPointerArray KeyList; + CleanupStack::PushL(TCleanupItem(ResetAndDestroyHBufCList, &KeyList)); + HBufC8* fileContents = ParseOutputFileLC(iActualOutput); + if (iListStoreExist) + { + _LIT8(KLabel1, "label:"); + TLex8 lex(*fileContents); + while(!lex.Eos()) + { + TPtrC8 token = lex.NextToken(); + if(token.CompareF(KLabel1) == KErrNone) + { + TInt offset = lex.Offset(); + TChar c = lex.Get(); + while(c != KCarriageReturn && c != KLineReturn) + { + c = lex.Get(); + } + TInt end = lex.Offset(); + TPtrC8 newtoken; + TInt tokenLen = end-offset-1; + newtoken.Set(&fileContents->Des()[offset], tokenLen); + + HBufC* tmp = HBufC::NewLC(tokenLen); + tmp->Des().Copy(newtoken); + tmp->Des().Trim(); + KeyList.Append(tmp); + CleanupStack::Pop(tmp); + } + } + CleanupStack::PopAndDestroy(fileContents); + iVerdict = activeEngine->ListStoreKey(KeyList); + } + else + { + ConstuctExpectedArrayL(KeyList, fileContents->Des(), EFalse); + CleanupStack::PopAndDestroy(fileContents); + if (iExpectedStore != -1) + { + iVerdict = activeEngine->ListKeys(KeyList, iExpectedStore); + } + else + { + iVerdict = activeEngine->ListKeys(KeyList); + } + } + CleanupStack::PopAndDestroy(&KeyList); + } + + CleanupStack::PopAndDestroy(2, sched); + + if (iVerdict == EFail) + { + INFO_PRINTF1(_L("Expected Keys do not Exist")); + } + SetTestStepResult(iVerdict); + + return TestStepResult(); + } + +/** + * Override of base class virtual + * @return TVerdict code + */ +TVerdict CTestToolListKeyStep::doTestStepPostambleL() + { + CActiveScheduler::Install(NULL); + return TestStepResult(); + } + + +// +// CTestToolGetPolicyStep +// + +CTestToolGetPolicyStep::~CTestToolGetPolicyStep() + { + } + + +CTestToolGetPolicyStep::CTestToolGetPolicyStep() + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTestToolGetPolicyStep); + } + +/** + * Override of base class virtual. Prepares for the test run of Filetokens + * @return TVerdict code + */ +TVerdict CTestToolGetPolicyStep::doTestStepPreambleL() + { + // construct name of the key + if (GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel)) + { + iLabelExist = 1; + } + if (!GetStringFromConfig(ConfigSection(), KExpectedUser, iExpectedUser)) + { + INFO_PRINTF1(_L("policy user name is missing")); + SetTestStepResult(EFail); + } + if (!GetIntFromConfig(ConfigSection(), KExpectedUserExist, iExpectedUserExist)) + { + iExpectedUserExist = 0; + } + return TestStepResult(); + } + +/** + * Override of base class pure virtual + * Demonstrates reading configuration parameters from an ini file section + * @return TVerdict code + */ +TVerdict CTestToolGetPolicyStep::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } + + CActiveScheduler* sched = NULL; + sched = new (ELeave) CActiveScheduler; + CleanupStack::PushL(sched); + CActiveScheduler::Install(sched); + CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); + if (iLabelExist) + { + iVerdict = activeEngine->GetPolicy(iExpectedLabel, iExpectedUser, iExpectedUserExist); + } + + CleanupStack::PopAndDestroy(2, sched); + if (iVerdict == EFail) + { + INFO_PRINTF1(_L("Exptected Keys are not Exist")); + } + SetTestStepResult(iVerdict); + + return TestStepResult(); + } + +/** + * Override of base class virtual + * @return TVerdict code + */ +TVerdict CTestToolGetPolicyStep::doTestStepPostambleL() + { + CActiveScheduler::Install(NULL); + return TestStepResult(); + } + + + +// +// CTestToolParseFileStep +// + +CTestToolParseFileStep::~CTestToolParseFileStep() + { + iArgs.ResetAndDestroy(); + } + + +CTestToolParseFileStep::CTestToolParseFileStep() + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTestToolParseFileStep); + } + +/** + * Override of base class virtual. Prepares for the test run of Filetokens + * @return TVerdict code + */ +TVerdict CTestToolParseFileStep::doTestStepPreambleL() + { + _LIT(KNumLines, "numlines"); // this specifies how many commands to read + _LIT(KLineBase, "line"); // + number (0-based) = file to check for + + + TInt numlines = 0; + if (GetIntFromConfig(ConfigSection(), KNumLines, numlines) && numlines!=0) + { + TPtrC lineContent; + for (TInt i=0; i keyBuf(KLineBase); + keyBuf.AppendNum(i); + + if (GetStringFromConfig(ConfigSection(), keyBuf, lineContent)) + { + HBufC* line = lineContent.AllocLC(); + line->Des().Trim(); + iArgs.AppendL(line); + CleanupStack::Pop(line); + } + else + { + SetTestStepResult(EFail); + // the string must exist, otherwise the config is invalid + ERR_PRINTF2(_L("Missing apps name for key '%S'"), &keyBuf); + } + } + } + if (!GetStringFromConfig(ConfigSection(), KActualOutput, iActualOutput)) + { + INFO_PRINTF1(_L("actual output filename is missing")); + SetTestStepResult(EFail); + } + if (numlines == 0) + { + if (!GetStringFromConfig(ConfigSection(), KExpectedError, iExpectedError)) + { + INFO_PRINTF1(_L("error value is missing")); + SetTestStepResult(EFail); + } + } + return TestStepResult(); + } + +/** + * Override of base class pure virtual + * Demonstrates reading configuration parameters from an ini file section + * @return TVerdict code + */ +TVerdict CTestToolParseFileStep::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } + if (iArgs.Count() == 0) + { + HBufC8* fileContents = ParseOutputFileLC(iActualOutput); + HBufC8* actualError = GetErrorFromOutputFileLC(*fileContents); + if (actualError == NULL) + { + INFO_PRINTF1(_L("Failed to parse the output File")); + SetTestStepResult(EFail); + } + + HBufC* actual16 = HBufC::NewLC(actualError->Length()); + actual16->Des().Copy(*actualError); + + if (iExpectedError.CompareF(*actual16) != KErrNone) + { + INFO_PRINTF1(_L("Exptected Error is Different from Actual")); + SetTestStepResult(EFail); + } + CleanupStack::PopAndDestroy(3, fileContents); //actual16, actualError, fileContents + } + else + { + HBufC8* fileContents = ParseOutputFileLC(iActualOutput); + RPointerArray actualoutput; + CleanupStack::PushL(TCleanupItem(ResetAndDestroyHBufCList, &actualoutput)); + ConstuctExpectedArrayL(actualoutput, fileContents->Des(), EFalse, ETrue); + TBool result = EFalse; + for (TInt i = 0; i < iArgs.Count(); i++) + { + result = EFalse; + for (TInt j = 5; j < actualoutput.Count(); j++) + { + if (iArgs[i]->Des().CompareF(actualoutput[j]->Des()) == KErrNone) + { + result = ETrue; + break; + } + } + if (!result) + { + break; + } + } + if (!result) + { + INFO_PRINTF1(_L("expected output and actual output is not matching")); + SetTestStepResult(EFail); + } + CleanupStack::PopAndDestroy(2, fileContents); // fileContents ,actualoutput + } + + return TestStepResult(); + } + + +HBufC8* CTestToolParseFileStep::GetErrorFromOutputFileLC(const TDesC8& aBuffer) + { + _LIT8(KOutput, "output"); + TInt readPos = 0; + TPtrC8 wordContents; + + HBufC8* wordBuf = NULL; + while (!ReadWordL(aBuffer, readPos, wordContents)) + { + wordBuf = wordContents.AllocLC(); + wordBuf->Des().Trim(); + if (wordBuf->Des().CompareF(KOutput) == KErrNone) + { + readPos+=1; + if (!ReadWordL(aBuffer, readPos, wordContents)) + { + CleanupStack::PopAndDestroy(wordBuf); + wordBuf = wordContents.AllocLC(); + wordBuf->Des().Trim(); + break; + } + } + CleanupStack::PopAndDestroy(wordBuf); + } + return wordBuf; + } + +/** + * Override of base class virtual + * @return TVerdict code + */ +TVerdict CTestToolParseFileStep::doTestStepPostambleL() + { + CActiveScheduler::Install(NULL); + return TestStepResult(); + } + + + +// +// global public methods +// + +// Reads the words from the Buffer either ended with : or \n +// if the word is "label", then read the next word and add to the array +// if the word is not label read upto the end of the line then go to next loop +// if exception is on , reads the entire line +void ConstuctExpectedArrayL(RPointerArray& aArray, const TDesC8& aBuffer,TBool aCheck, TBool aException) + { + TInt readPos = 0; + TPtrC8 wordContents; + + TInt bufferLength = aBuffer.Length(); + while (!ReadWordL(aBuffer, readPos, wordContents)) + { + HBufC8* wordBuf = wordContents.AllocLC(); + wordBuf->Des().Trim(); + if (aException) + { + HBufC* currentLabel = HBufC::NewLC(wordBuf->Length()); + currentLabel->Des().Copy(*wordBuf); + currentLabel->Des().Trim(); + aArray.AppendL(currentLabel); + CleanupStack::Pop(currentLabel); + } + else if (wordBuf->Des().CompareF(KLabel) == KErrNone) + { + if (!ReadWordL(aBuffer, readPos, wordContents)) + { + TPtrC8 word; + TInt len = wordContents.Length(); + // aCheck is on for reading the certool output file,because the output will be like this + // label: abc format:.... , so we need to exclude format + if (aCheck) // certdetails + { + len = len - 6; + } + word.Set(wordContents.Ptr(), len); + HBufC* currentLabel = HBufC::NewLC(word.Length()); + currentLabel->Des().Copy(word); + currentLabel->Des().Trim(); + aArray.AppendL(currentLabel); + CleanupStack::Pop(currentLabel); + } + else + { + break; + } + } + else + { + readPos--; + while (readPos < bufferLength) + { + TChar c = aBuffer[readPos]; + + if (c == KCarriageReturn || c == KLineReturn) + { + readPos += 1; + break; + } + readPos++; + } + } + CleanupStack::PopAndDestroy(wordBuf); + } + } + +// Reads the output file and return into the buffer. +HBufC8* ParseOutputFileLC(const TPtrC& aFileName) + { + RFs fs; + RFile file; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + User::LeaveIfError(file.Open(fs, aFileName, EFileRead)); + CleanupClosePushL(file); + TInt fSize; + file.Size(fSize); + + HBufC8* fileContents = HBufC8::NewLC(fSize); + TPtr8 ptr(fileContents->Des()); + ptr.SetLength(fSize); + + // create file stream and Read the content from the file + RFileReadStream inputFileStream(file); + CleanupClosePushL(inputFileStream); + inputFileStream.ReadL(ptr, fSize); + CleanupStack::PopAndDestroy(&inputFileStream); + CleanupStack::Pop(fileContents); + CleanupStack::PopAndDestroy(2, &fs); + CleanupStack::PushL(fileContents); + + return fileContents; + } + +// Reads the words from the aBuffer either ended with : or \n or \r +TInt ReadWordL(const TDesC8& aBuffer, TInt& aPos, TPtrC8& aLine) + { + TBool endOfBuffer = EFalse; + + TInt bufferLength = aBuffer.Length(); + if ( aPos > bufferLength || aPos < 0 ) + { + return ETrue; // End of buffer + } + + TInt endPos = aPos; + // find the position of the next delimeter + endPos = aPos; + while (endPos < bufferLength) + { + TChar c = aBuffer[endPos]; + + if (c == KCarriageReturn || c == KLineReturn || c == KDelemeter) + { + // exception when comes like c:\filename + if ((bufferLength > (endPos + 1)) && aBuffer[endPos+1] != '\\') + { + break; + } + } + endPos++; + } + + if (endPos != aPos) + { + TInt tokenLen = endPos - aPos; + aLine.Set(&aBuffer[aPos], tokenLen); + endPos += 1; + } + else if (endPos == bufferLength) + { + return ETrue; // End of buffer + } + else + { + endPos++; + } + aPos = endPos; + return endOfBuffer; + } + + +void ResetAndDestroyHBufCList(TAny* aList) + { + RPointerArray* list = static_cast*>(aList); + + list->ResetAndDestroy(); + list->Close(); + } + + + + + + + + + +// +// CTestToolGetTrustStep +// + +CTestToolGetTrustStep::~CTestToolGetTrustStep() + { + + } + + +CTestToolGetTrustStep::CTestToolGetTrustStep() + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTestToolGetTrustStep); + } + +/** + * Override of base class virtual. Prepares for the test run of Filetokens + * @return TVerdict code + */ +TVerdict CTestToolGetTrustStep::doTestStepPreambleL() + { + + if (!GetStringFromConfig(ConfigSection(), KExpectedLabel1, iExpectedLabel)) + { + INFO_PRINTF1(_L("label name is missing")); + SetTestStepResult(EFail); + } + if (!GetIntFromConfig(ConfigSection(), KExpectedTrust, iExpectedTrust)) + { + INFO_PRINTF1(_L("Expected trust is missing")); + SetTestStepResult(EFail); + } + return TestStepResult(); + } + +/** + * Override of base class pure virtual + * Demonstrates reading configuration parameters from an ini file section + * @return TVerdict code + */ +TVerdict CTestToolGetTrustStep::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } + + CActiveScheduler* sched = NULL; + sched = new (ELeave) CActiveScheduler; + CleanupStack::PushL(sched); + CActiveScheduler::Install(sched); + CTestToolEngine* activeEngine = CTestToolEngine::NewLC(); + iVerdict = activeEngine->CheckTrust(iExpectedLabel,iExpectedTrust); + CleanupStack::PopAndDestroy(2, sched); + if (iVerdict == EFail) + { + INFO_PRINTF1(_L("Certificate is not trusted for the applicaion")); + } + SetTestStepResult(iVerdict); + + return TestStepResult(); + } + +/** + * Override of base class virtual + * @return TVerdict code + */ +TVerdict CTestToolGetTrustStep::doTestStepPostambleL() + { + CActiveScheduler::Install(NULL); + return TestStepResult(); + } + +CTestToolCheckFileStep::CTestToolCheckFileStep() + {} + +CTestToolCheckFileStep::~CTestToolCheckFileStep() + {} + +TVerdict CTestToolCheckFileStep::doTestStepPreambleL() + { + if (!GetStringFromConfig(ConfigSection(), KFileName,iFileName)) + { + INFO_PRINTF1(_L("file name is missing")); + SetTestStepResult(EFail); + } + if (!GetStringFromConfig(ConfigSection(), KCheckType,iCheckType)) + { + INFO_PRINTF1(_L("chek type for file is missing")); + SetTestStepResult(EFail); + } + return TestStepResult(); + } + +TVerdict CTestToolCheckFileStep::doTestStepPostambleL() + { + return TestStepResult(); + } + +TVerdict CTestToolCheckFileStep::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } + + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + RFile file; + CleanupClosePushL(file); + + TInt error = file.Open(fs,iFileName,EFileRead); + if( ( iCheckType.Compare(_L("present")) == 0 && error == KErrNone ) || + ( iCheckType.Compare(_L("absent")) == 0 && error == KErrNotFound ) + ) + { + SetTestStepResult(EPass); + } + else + { + SetTestStepResult(EFail); + } + + CleanupStack::PopAndDestroy(2,&fs); // file + return TestStepResult(); + } +// End of file