diff -r f5050f1da672 -r 04becd199f91 javacommons/security/javaunicertstoreplugin/tsrc/utils/testutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/javaunicertstoreplugin/tsrc/utils/testutils.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,157 @@ +/* +* Copyright (c) 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 +#include +#include +#include +#include "testutils.h" +#include "testfailedexception.h" +#include "logger.h" + +_LIT(KMIDP2TrustRoot, "Java Trust Root"); + +bool TestUtils::sCaptainRunning = false; + +void tbufC8tochar(TDesC8 aSrc, char* aDes) +{ + char *temp = (char*)aSrc.Ptr(); + const TInt size = aSrc.Length(); + *(temp + size) = '\0'; + strcpy(aDes, temp); +} + +void CheckCertInfo(std::list& aExpected,CCTCertInfo* aInfo) +{ + std::list::iterator iter = aExpected.begin(); + bool metaDataObjFound = false; + for (; iter != aExpected.end(); ++iter) + { + int expectedSize = iter->mCertContent.size(); + //'-1' is decreased because Windows file system adds one extra byte to the file size. + int actualSize = aInfo->Size() - 1; + if (expectedSize == actualSize) + { + metaDataObjFound = true; + if (EX509Certificate != aInfo->CertificateFormat()) + { + throw TestFailedException("Incorrect CertificateFormat", + __FILE__,__FUNCTION__,__LINE__); + } + if (ECACertificate != aInfo->CertificateOwnerType()) + { + throw TestFailedException("Incorrect CertificateOwnerType", + __FILE__,__FUNCTION__,__LINE__); + } + if (iter->mRemovable != aInfo->IsDeletable()) + { + throw TestFailedException("Incorrect IsDeletable value", + __FILE__,__FUNCTION__,__LINE__); + } + break; + }//end if(expectedSize == actualSize) + }//end for + if (false == metaDataObjFound) + { + throw TestFailedException("Corresponding CertMetaData obj was not found", + __FILE__,__FUNCTION__,__LINE__); + } +} + +int TestUtils::StartJavaCaptain() +{ + if (true == sCaptainRunning) + { + return 0; + } + int rc = 0; + int pid = 0; + char* av[2]; + int index = 0; + av[index++] = "javacaptain"; + av[index] = NULL; + +#ifdef __SYMBIAN32__ + rc = posix_spawn(&pid, "javacaptain", NULL, NULL, av, NULL); +#else + if (!(pid = fork())) + { + rc = execvp("javacaptain", av); + if (rc == -1) + { + rc = errno; + } + } +#endif // __SYMBIAN32__ + + if (rc) + { + ELOG3(EJavaSecurity,"%s failed, %s - errno=%d", __PRETTY_FUNCTION__, strerror(rc), rc); + } + sCaptainRunning = true; + return rc; +} + +CCertAttributeFilter* TestUtils::GetFilterObj() +{ + std::auto_ptr< CCertAttributeFilter> retObj(CCertAttributeFilter::NewL()); + TUid uid = TUid::Uid(0x101F9B28); + retObj->SetUid(uid); + retObj->SetFormat(EX509Certificate); + retObj->SetOwnerType(ECACertificate); + retObj->SetLabel(KMIDP2TrustRoot()); + return retObj.release(); +} + +void TestUtils::CheckResultOfList(std::list& aExpected, + RMPointerArray& aResult) +{ + for (TInt i = 0; i < aResult.Count(); i++) + { + CheckCertInfo(aExpected,aResult[i]); + } +} + +void TestUtils::CheckContentOfCert(std::list& aExpected, + HBufC8* aContent) +{ + std::list::iterator iter = aExpected.begin(); + bool metaDataObjFound = false; + char* tmpChar = new char[aContent->Length()+1]; + tbufC8tochar(aContent->Des(),tmpChar); + std::string returnedContent(tmpChar); + delete [] tmpChar; + for (; iter != aExpected.end(); ++iter) + { + if (returnedContent.size() == iter->mCertContent.size()) + { + metaDataObjFound = true; + if (0 == returnedContent.compare(iter->mCertContent)) + { + throw TestFailedException("Incorrect cert content", + __FILE__,__FUNCTION__,__LINE__); + } + break; + } + }//end for + if (false == metaDataObjFound) + { + throw TestFailedException("Corresponding CertMetaData obj was not found", + __FILE__,__FUNCTION__,__LINE__); + } +} +