sl@0: /* sl@0: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: /** sl@0: @file sl@0: */ sl@0: sl@0: #include "t_certstoreactionsclient.h" sl@0: #include "t_certstoredefs.h" sl@0: #include "t_certstoreout.h" sl@0: #include "t_input.h" sl@0: sl@0: CTestAction* CInitCertificateAppInfoManager::NewL(RFs &aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CTestAction* self = NewLC(aFs, aConsole, aOut, aTestActionSpec); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CTestAction* CInitCertificateAppInfoManager::NewLC(RFs &aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CInitCertificateAppInfoManager* self = sl@0: new(ELeave) CInitCertificateAppInfoManager(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: return self; sl@0: } sl@0: sl@0: CInitCertificateAppInfoManager::~CInitCertificateAppInfoManager() sl@0: { sl@0: } sl@0: sl@0: void CInitCertificateAppInfoManager::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: switch (iState) sl@0: { sl@0: case EInit: sl@0: { sl@0: TRAPD(err, HandleEInit()); sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, err); sl@0: } sl@0: break; sl@0: sl@0: case EFinished: sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, aStatus.Int()); sl@0: if (aStatus == iExpectedResult) sl@0: { sl@0: iResult = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = EInit; sl@0: } sl@0: else sl@0: { sl@0: iFinished = ETrue; sl@0: } sl@0: } sl@0: break; sl@0: } sl@0: } sl@0: sl@0: void CInitCertificateAppInfoManager::PerformCancel() sl@0: { sl@0: } sl@0: sl@0: void CInitCertificateAppInfoManager::Reset() sl@0: { sl@0: __ASSERT_DEBUG(EFalse, User::Panic(_L("CInitCertificateAppInfoManager::Reset()"), 1)); sl@0: } sl@0: sl@0: CInitCertificateAppInfoManager::CInitCertificateAppInfoManager(RFs &aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: sl@0: : CCertStoreTestAction(aFs, aConsole, aOut), iState(EInit), iFs(aFs) sl@0: { sl@0: } sl@0: sl@0: void CInitCertificateAppInfoManager::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CTestAction::ConstructL(aTestActionSpec); sl@0: sl@0: // Set expected result sl@0: sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: } sl@0: sl@0: void CInitCertificateAppInfoManager::HandleEInit() sl@0: { sl@0: iState = EFinished; sl@0: InitTheCertificateAppInfoManagerL(); sl@0: } sl@0: sl@0: void CInitCertificateAppInfoManager::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Creating CertificateAppInfoManager...")); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CInitCertificateAppInfoManager::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: if (aError == KErrNone) sl@0: { sl@0: iConsole.Write(_L("\tcertificate app info manager created successfully\n")); sl@0: iOut.writeString(_L("\tcertificate app info manager created successfully")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: else sl@0: { sl@0: iConsole.Write(_L("\tcertificate app info manager creation failed\n")); sl@0: iOut.writeString(_L("\tcertificate app info manager creation failed")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: } sl@0: sl@0: CTestAction* CDeleteCertificateAppInfoManager::NewL(RFs& aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CDeleteCertificateAppInfoManager* self = sl@0: new(ELeave) CDeleteCertificateAppInfoManager(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CDeleteCertificateAppInfoManager::~CDeleteCertificateAppInfoManager() sl@0: { sl@0: } sl@0: sl@0: CDeleteCertificateAppInfoManager::CDeleteCertificateAppInfoManager(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: : CCertStoreTestAction(aFs, aConsole, aOut), iState(EDelete) sl@0: { sl@0: } sl@0: sl@0: void CDeleteCertificateAppInfoManager::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CCertStoreTestAction::ConstructL(aTestActionSpec); sl@0: sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: } sl@0: sl@0: void CDeleteCertificateAppInfoManager::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: switch (iState) sl@0: { sl@0: case EDelete: sl@0: { sl@0: DeleteTheCertificateAppInfoManager(); sl@0: iState = EFinished; sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, KErrNone); sl@0: } sl@0: break; sl@0: sl@0: case EFinished: sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, aStatus.Int()); sl@0: if (aStatus == iExpectedResult) sl@0: { sl@0: iResult = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = EDelete; sl@0: } sl@0: else sl@0: { sl@0: iFinished = ETrue; sl@0: } sl@0: } sl@0: break; sl@0: } sl@0: } sl@0: sl@0: void CDeleteCertificateAppInfoManager::PerformCancel() sl@0: { sl@0: } sl@0: sl@0: void CDeleteCertificateAppInfoManager::Reset() sl@0: { sl@0: __ASSERT_DEBUG(EFalse, User::Panic(_L("CDeleteCertificateAppInfoManager::Reset()"), 1)); sl@0: } sl@0: sl@0: void CDeleteCertificateAppInfoManager::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Deleting CertificateAppInfoManager...")); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CDeleteCertificateAppInfoManager::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: if (aError == KErrNone) sl@0: { sl@0: iConsole.Write(_L("\tcertificate app info manager deleted successfully\n")); sl@0: iOut.writeString(_L("\tcertificate app info manager deleted successfully")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: else sl@0: { sl@0: iConsole.Write(_L("\tcertificate app info manager deletion failed\n")); sl@0: iOut.writeString(_L("\tcertificate app info manager deletion failed")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: } sl@0: sl@0: CTestAction* CAddClient::NewL(RFs& aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CAddClient* self = new(ELeave) CAddClient(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CAddClient::~CAddClient() sl@0: { sl@0: delete iClientInfo; sl@0: } sl@0: sl@0: void CAddClient::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: switch (iState) sl@0: { sl@0: case EAdd: sl@0: { sl@0: TInt err = KErrNotReady; sl@0: CCertificateAppInfoManager* appManager = NULL; sl@0: appManager = TheCertificateAppInfoManager(); sl@0: if (appManager) sl@0: { sl@0: TRAP(err, appManager->AddL(*iClientInfo)); sl@0: } sl@0: sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, err); sl@0: iState = EFinished; sl@0: } sl@0: break; sl@0: sl@0: case EFinished: sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, aStatus.Int()); sl@0: if ( (aStatus == iExpectedResult) || (aStatus == KErrAlreadyExists) ) sl@0: { sl@0: iResult = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = EAdd; sl@0: } sl@0: else sl@0: { sl@0: iFinished = ETrue; sl@0: } sl@0: } sl@0: break; sl@0: } sl@0: } sl@0: sl@0: void CAddClient::PerformCancel() sl@0: { sl@0: } sl@0: sl@0: void CAddClient::Reset() sl@0: { sl@0: __ASSERT_DEBUG(EFalse, User::Panic(_L("CAddClient::Reset()"), 1)); sl@0: } sl@0: sl@0: CAddClient::CAddClient(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: : CCertStoreTestAction(aFs, aConsole, aOut), iState(EAdd) sl@0: { sl@0: } sl@0: sl@0: void CAddClient::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CCertStoreTestAction::ConstructL(aTestActionSpec); sl@0: TInt err = KErrNone; sl@0: TInt pos = 0; sl@0: const TDesC8& name = Input::ParseElement(aTestActionSpec.iActionBody, KNameStart, KNameEnd, sl@0: pos, err); sl@0: const TDesC8& uid = Input::ParseElement(aTestActionSpec.iActionBody, KUIDStart, KUIDEnd, sl@0: pos, err); sl@0: TLex8 lex(uid); sl@0: TUid u; sl@0: lex.Val(u.iUid); sl@0: TName n; sl@0: n.Copy(name); sl@0: iClientInfo = new(ELeave) TCertificateAppInfo(u, n); sl@0: sl@0: // Set expected result sl@0: pos = 0; sl@0: sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: } sl@0: sl@0: void CAddClient::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Adding client...")); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CAddClient::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: if (aError == KErrNone) sl@0: { sl@0: iConsole.Write(_L("\tClient added successfully\n")); sl@0: iOut.writeString(_L("\tClient added successfully")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: else sl@0: { sl@0: iConsole.Write(_L("\tClient added successfully\n")); sl@0: iOut.writeString(_L("\tClient added successfully")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: } sl@0: sl@0: CTestAction* CGetClients::NewL(RFs& aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CGetClients* self = new(ELeave) CGetClients(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: CleanupStack::Pop(); sl@0: return self; sl@0: } sl@0: sl@0: CGetClients::~CGetClients() sl@0: { sl@0: // We own iExpectedClients but not iClients sl@0: iExpectedClients.Close(); sl@0: } sl@0: sl@0: void CGetClients::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: switch (iState) sl@0: { sl@0: case EGet: sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: CCertificateAppInfoManager* appManager = NULL; sl@0: appManager = TheCertificateAppInfoManager(); sl@0: if (appManager) sl@0: { sl@0: iClients = &(appManager->Applications()); sl@0: User::RequestComplete(status, KErrNone); sl@0: } sl@0: else sl@0: User::RequestComplete(status, KErrNotReady); sl@0: sl@0: iState = EFinished; sl@0: } sl@0: break; sl@0: sl@0: case EFinished: sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, aStatus.Int()); sl@0: if (aStatus == iExpectedResult) sl@0: { sl@0: // Check that we have the expected uids sl@0: TInt iEnd = iClients->Count(); sl@0: if (iEnd == iExpectedClients.Count()) sl@0: { sl@0: TInt i = 0; sl@0: for (i = 0; i < iEnd; i++) sl@0: { sl@0: if ((*iClients)[i].Id() != iExpectedClients[i]) sl@0: { sl@0: break; sl@0: } sl@0: } sl@0: if (i == iEnd) sl@0: { sl@0: iResult = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = EGet; sl@0: } sl@0: else sl@0: { sl@0: iFinished = ETrue; sl@0: } sl@0: } sl@0: break; sl@0: } sl@0: } sl@0: sl@0: void CGetClients::PerformCancel() sl@0: { sl@0: } sl@0: sl@0: void CGetClients::Reset() sl@0: { sl@0: __ASSERT_DEBUG(EFalse, User::Panic(_L("CGetClients::Reset()"), 1)); sl@0: } sl@0: sl@0: CGetClients::CGetClients(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: : CCertStoreTestAction(aFs, aConsole, aOut), sl@0: iState(EGet) sl@0: { sl@0: } sl@0: sl@0: void CGetClients::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CCertStoreTestAction::ConstructL(aTestActionSpec); sl@0: TInt err = KErrNone; sl@0: TInt pos = 0; sl@0: sl@0: // Set expected result sl@0: pos = 0; sl@0: sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: sl@0: const TDesC8& uidsString = Input::ParseElement(aTestActionSpec.iActionResult, KUIDStart, KUIDEnd, sl@0: pos, err); sl@0: TLex8 lex(uidsString); sl@0: sl@0: err = KErrNone; sl@0: while (err == KErrNone) sl@0: { sl@0: TUid uid; sl@0: err = lex.Val(uid.iUid); sl@0: if (err == KErrNone) sl@0: { sl@0: lex.SkipSpace(); sl@0: User::LeaveIfError(iExpectedClients.Append(uid)); sl@0: } sl@0: } sl@0: } sl@0: sl@0: void CGetClients::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Getting client...")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeString(_L("\tExpected clients :")); sl@0: TInt iEnd = iExpectedClients.Count(); sl@0: for (TInt i = 0; i < iEnd; i++) sl@0: { sl@0: iOut.writeString(_L(" ")); sl@0: iOut.writeNum(iExpectedClients[i].iUid); sl@0: } sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CGetClients::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: iConsole.Printf(_L("\tClients:\n")); sl@0: iOut.writeString(_L("\tClients: ")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeString(_L("\t\t")); sl@0: TInt count = iClients->Count(); sl@0: for (TInt i = 0; i < count; i++) sl@0: { sl@0: iConsole.Printf(_L("%D "), (*iClients)[i].Id()); sl@0: iOut.writeNum((*iClients)[i].Id().iUid); sl@0: iOut.writeString(_L(" ")); sl@0: } sl@0: iOut.writeNewLine(); sl@0: if (aError == KErrNone) sl@0: { sl@0: iConsole.Printf(_L("\tClients retrieved successfully\n")); sl@0: iOut.writeString(_L("\tClients retrieved successfully")); sl@0: iOut.writeNewLine(); sl@0: } sl@0: else sl@0: { sl@0: iConsole.Printf(_L("\tClients retrieved failed\n")); sl@0: iOut.writeString(_L("\tClients retrieved failed")); sl@0: iOut.writeNewLine(); sl@0: } sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: sl@0: CTestAction* CRemoveClient::NewL(RFs& aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CRemoveClient* self = new(ELeave) CRemoveClient(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CRemoveClient::~CRemoveClient() sl@0: { sl@0: } sl@0: sl@0: void CRemoveClient::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: switch (iState) sl@0: { sl@0: case ERemove: sl@0: { sl@0: TInt err = KErrNotReady; sl@0: CCertificateAppInfoManager* appManager = NULL; sl@0: appManager = TheCertificateAppInfoManager(); sl@0: if (appManager) sl@0: { sl@0: TRAP(err, appManager->RemoveL(iUid)); sl@0: } sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, err); sl@0: iState = EFinished; sl@0: } sl@0: break; sl@0: sl@0: case EFinished: sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, aStatus.Int()); sl@0: if (aStatus == iExpectedResult) sl@0: { sl@0: iResult = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = ERemove; sl@0: } sl@0: else sl@0: { sl@0: iFinished = ETrue; sl@0: } sl@0: } sl@0: break; sl@0: } sl@0: } sl@0: sl@0: void CRemoveClient::PerformCancel() sl@0: { sl@0: } sl@0: sl@0: void CRemoveClient::Reset() sl@0: { sl@0: __ASSERT_DEBUG(EFalse, User::Panic(_L("CRemoveClient::Reset()"), 1)); sl@0: } sl@0: sl@0: CRemoveClient::CRemoveClient(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: : CCertStoreTestAction(aFs, aConsole, aOut), iState(ERemove) sl@0: { sl@0: } sl@0: sl@0: void CRemoveClient::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CCertStoreTestAction::ConstructL(aTestActionSpec); sl@0: TInt err = KErrNone; sl@0: TInt pos = 0; sl@0: const TDesC8& uid = Input::ParseElement(aTestActionSpec.iActionBody, KUIDStart, KUIDEnd, sl@0: pos, err); sl@0: TLex8 lex(uid); sl@0: lex.Val(iUid.iUid); sl@0: sl@0: // Set expected result sl@0: pos = 0; sl@0: sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: } sl@0: sl@0: void CRemoveClient::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Removing client...")); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CRemoveClient::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: if (aError == KErrNone) sl@0: { sl@0: iConsole.Write(_L("\tClient removed successfully\n")); sl@0: iOut.writeString(_L("\tClient removed successfully")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: else if (aError == KErrNotFound) sl@0: { sl@0: iConsole.Write(_L("\tClient not found\n")); sl@0: iOut.writeString(_L("\tClient not found")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: }