--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pimprotocols/phonebooksync/Test/TE_PhBkSync/TestValidateContactSteps.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,1035 @@
+// Copyright (c) 2001-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:
+// This contains PhbkSync API ValidateContact() related Unit Test Steps
+//
+//
+
+#include "TE_PhBkSyncBase.h"
+#include "TestValidateContactSteps.h"
+
+/**
+ * Test validating whether a read operation is possible on valid
+ * contacts. Repeat this test case for all supported phonebooks.
+ */
+//
+// Test step1 -- Test#37 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_01::CPhbkSyncValidateContactTest_01()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_01"));
+ }
+
+CPhbkSyncValidateContactTest_01::~CPhbkSyncValidateContactTest_01()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_01::doTestStepL( )
+ {
+ TContactItemId id;
+ TInt result;
+
+ // destroy the default .ini file if it exists
+ DestroyDefaultIniFileL();
+
+ SetSimTsyTestNumberL(18);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load test and all phonebooks should be synchronised automatically
+ SetSimTsyTestNumberL(18);
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+
+ // Get a valid UID for each phonebook and do ValidateContact
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ id = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, id);
+ TESTCHECKL(result, KErrNone);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether a read operation is possible on valid
+ * contact, where reading the ccontact is not permitted due to
+ * the UICC being locked/blocked/PIN protected. Repeat this test
+ * case for all supported phonebooks.
+ */
+//
+// Test step2 -- Test#38 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_02::CPhbkSyncValidateContactTest_02()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_02"));
+ }
+
+CPhbkSyncValidateContactTest_02::~CPhbkSyncValidateContactTest_02()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_02::doTestStepL( )
+ {
+ // arry used to keep a valid contactId for each phonebook
+ TContactItemId validContactIds[5];
+
+ // set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // load all phonebooks which are not locked/blocked
+ SetSimTsyTestNumberL(38);
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+
+ // get a valid UID for each phonebook and keep them somewhere
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ }
+
+ // Wait for ICC to become locked
+ WaitForIccToBecomeLockedL();
+
+ // Use the valid UIDs obtained to do ValidateContact
+ TInt result;
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactIds[i]);
+ TESTCHECKL(result, KErrAccessDenied);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether a read operation is possible on contact,
+ * where the contact specified by the contact ID is blank.
+ * Repeat this test case for all supported phonebooks.
+ */
+//
+// Test step3 -- Test#39 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_03::CPhbkSyncValidateContactTest_03()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_03"));
+ }
+
+CPhbkSyncValidateContactTest_03::~CPhbkSyncValidateContactTest_03()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_03::doTestStepL( )
+ {
+ SetSimTsyTestNumberL(18);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load the dummy ICC which contains all phonebooks
+ SetSimTsyTestNumberL(0);
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+
+ // Validate a contact with blank UID for each phonebook
+ TInt result;
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, KNullContactId);
+ TESTCHECKL(result, KErrNotFound);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validing whether a read operation is possible on contact,
+ * where the specified contact ID is invalid. Repeat this test
+ * case for all supported phonebooks.
+ */
+//
+// Test step4 -- Test#40 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_04::CPhbkSyncValidateContactTest_04()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_04"));
+ }
+
+CPhbkSyncValidateContactTest_04::~CPhbkSyncValidateContactTest_04()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_04::doTestStepL( )
+ {
+ const TInt totalNumberOfInvalidUIDs(4);
+ TUid invalidContactIds[totalNumberOfInvalidUIDs];
+
+ invalidContactIds[0].iUid = -1;
+ invalidContactIds[1].iUid = 99999;
+ invalidContactIds[2].iUid = -456;
+ invalidContactIds[3].iUid = 8888;
+
+ SetSimTsyTestNumberL(18);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load the dummy ICC which contains all phonebooks
+ SetSimTsyTestNumberL(0);
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+
+ // Validate a contact with blank UID for each phonebook
+ TInt result;
+ TInt j(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ for (j=0; j<totalNumberOfInvalidUIDs; j++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, invalidContactIds[j].iUid);
+ TESTCHECKL(result, KErrNotFound);
+ }
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validing whether a search operation is possible on a valid
+ * contact. Repeat tis test case for all supported phonebooks.
+ */
+//
+// Test step5 -- Test#41 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_05::CPhbkSyncValidateContactTest_05()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_05"));
+ }
+
+CPhbkSyncValidateContactTest_05::~CPhbkSyncValidateContactTest_05()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_05::doTestStepL( )
+ {
+ TContactItemId id;
+ TInt result;
+
+ SetSimTsyTestNumberL(18);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load test and all phonebooks should be synchronised automatically
+ SetSimTsyTestNumberL(18); // re-use test prepared for Test#37
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+
+ // Get a valid UID for each phonebook and do ValidateContact
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ id = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ result = iSession.ValidateContact(MContactSynchroniser::ESearch, id);
+ TESTCHECKL(result, KErrNone);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validing whether a search operation is possible on a valid
+ * contact, where searching the contact is not permitted. Repeat
+ * this test case for all supported phonebooks.
+ */
+//
+// Test step6 -- Test#42 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_06::CPhbkSyncValidateContactTest_06()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_06"));
+ }
+
+CPhbkSyncValidateContactTest_06::~CPhbkSyncValidateContactTest_06()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_06::doTestStepL( )
+ {
+ // arry used to keep a valid contactId for each phonebook
+ TContactItemId validContactIds[5];
+
+ SetSimTsyTestNumberL(18);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load all phonebooks which are not locked/blocked
+ SetSimTsyTestNumberL(38);
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+
+ // Get a valid UID for each phonebook and keep them somewhere
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ }
+
+ // Wait for ICC to become locked
+ WaitForIccToBecomeLockedL();
+
+ // Use the valid UIDs obtained to do ValidateContact
+ TInt result;
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::ESearch, validContactIds[i]);
+ TESTCHECKL(result, KErrAccessDenied);
+ }
+
+ // Finally set mode as EManual for all phonebooks so that it does not affect following test cases
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether a search operation is possible on contact,
+ * where the contact specified by the contact ID is blank. Repeat
+ * this test case for all supported phonebooks.
+ */
+//
+// Test step7 -- Test#43 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_07::CPhbkSyncValidateContactTest_07()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_07"));
+ }
+
+CPhbkSyncValidateContactTest_07::~CPhbkSyncValidateContactTest_07()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_07::doTestStepL( )
+ {
+ // Load the dummy ICC which contains all phonebooks
+ SetSimTsyTestNumberL(0);
+
+ // Set mode as EManual for all phonebooks
+ // Do initial synchronisation for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
+ DoSyncL(iPhoneBook[i], KErrNone);
+ }
+
+ // Validate a contact with blank UID for each phonebook
+ TInt result;
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::ESearch, KNullContactId);
+ TESTCHECKL(result, KErrNotFound);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether a search operation is possible on contact,
+ * where the specified contact ID is invalid. Repeat this test
+ * case for all supported phonebooks.
+ */
+//
+// Test step8 -- Test#44 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_08::CPhbkSyncValidateContactTest_08()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_08"));
+ }
+
+CPhbkSyncValidateContactTest_08::~CPhbkSyncValidateContactTest_08()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_08::doTestStepL( )
+ {
+ TInt totalNumberOfInvalidUIDs = 4;
+ TUid invalidContactIds[] =
+ {
+ {-1},
+ {99999},
+ {-456},
+ {8888}
+ };
+
+ // Load the dummy ICC which contains all phonebooks
+ SetSimTsyTestNumberL(0);
+
+ // Set mode as EManual for all phonebooks
+ // Do initial synchronisation for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
+ DoSyncL(iPhoneBook[i], KErrNone);
+ }
+
+ // Validate a contact with blank UID for each phonebook
+ TInt result;
+ TInt j(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ for (j=0; j<totalNumberOfInvalidUIDs; j++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::ESearch, invalidContactIds[j].iUid);
+ TESTCHECKL(result, KErrNotFound);
+ }
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether an edit operation is possible on valid
+ * contact. Repeat this test case for all supported phonebooks.
+ */
+//
+// Test step9 -- Test#45 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_09::CPhbkSyncValidateContactTest_09()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_09"));
+ }
+
+CPhbkSyncValidateContactTest_09::~CPhbkSyncValidateContactTest_09()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_09::doTestStepL( )
+ {
+ TContactItemId id;
+ TInt result;
+
+ // Load test and all phonebooks should be synchronised automatically
+ SetSimTsyTestNumberL(37); // re-use test prepared for Test#37
+
+ // Set mode as EManual for all phonebooks
+ // Do initial synchronisation for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
+ DoSyncL(iPhoneBook[i], KErrNone);
+ }
+
+ // Get a valid UID for each phonebook and do ValidateContact
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ id = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, id);
+ TESTCHECKL(result, KErrNone);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether an edit operation is possile on valid
+ * contact, where editing the contact is not permitted. Repeat
+ * this test case for all supported phonebooks.
+ */
+//
+// Test step10 -- Test#46 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_10::CPhbkSyncValidateContactTest_10()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_10"));
+ }
+
+CPhbkSyncValidateContactTest_10::~CPhbkSyncValidateContactTest_10()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_10::doTestStepL( )
+ {
+ // arry used to keep a valid contactId for each phonebook
+ TContactItemId validContactIds[5];
+
+ // Load all phonebooks which are not locked/blocked
+ SetSimTsyTestNumberL(38);
+
+ // Set mode as EManual for all phonebooks
+ // Do initial synchronisation for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
+ DoSyncL(iPhoneBook[i], KErrNone);
+ }
+
+ // Get a valid UID for each phonebook and keep them somewhere
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ }
+
+ // Wait for ICC to become locked
+ WaitForIccToBecomeLockedL();
+
+ // Use the valid UIDs obtained to do ValidateContact
+ TInt result;
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactIds[i]);
+ TESTCHECKL(result, KErrAccessDenied);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether an edit operation is possible on
+ * contact, where the contact specified by the contact ID is
+ * blank. Repeat this test case for all supported phonebooks.
+ */
+//
+// Test step11 -- Test#47 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_11::CPhbkSyncValidateContactTest_11()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_11"));
+ }
+
+CPhbkSyncValidateContactTest_11::~CPhbkSyncValidateContactTest_11()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_11::doTestStepL( )
+ {
+ SetSimTsyTestNumberL(18);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load the dummy ICC which contains all phonebooks
+ SetSimTsyTestNumberL(0);
+
+ // Validate a contact with blank UID for each phonebook
+ TInt result;
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, KNullContactId);
+ TESTCHECKCONDITIONL(result == KErrNotFound || result == KErrNotReady);
+
+ if(result == KErrNotReady)
+ {
+ TInt jj = 0;
+ while(jj < 5)
+ {
+ User::After(1000000);
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, KNullContactId);
+ if(result != KErrNotReady)
+ {
+ break;
+ }
+ jj++;
+ }
+
+ TESTCHECKL(result, KErrNotFound);
+ }
+
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether an edit operation is possible on
+ * contact, where the specified contact ID is invalid. Repeat
+ * this test case for all supported phonebooks.
+ */
+//
+// Test step12 -- Test#48 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_12::CPhbkSyncValidateContactTest_12()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_12"));
+ }
+
+CPhbkSyncValidateContactTest_12::~CPhbkSyncValidateContactTest_12()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_12::doTestStepL( )
+ {
+ TInt totalNumberOfInvalidUIDs = 4;
+ TUid invalidContactIds[] =
+ {
+ {-1},
+ {99999},
+ {-456},
+ {8888}
+ };
+
+ SetSimTsyTestNumberL(0);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load the dummy ICC which contains all phonebooks
+ SetSimTsyTestNumberL(0);
+
+ // Validate a contact with blank UID for each phonebook
+ TInt result;
+ TInt j(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ for (j=0; j<totalNumberOfInvalidUIDs; j++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, invalidContactIds[j].iUid);
+ TESTCHECKCONDITIONL(result == KErrNotFound || result == KErrNotReady);
+
+ if(result == KErrNotReady)
+ {
+ TInt kk=0;
+ while(kk < 5)
+ {
+ User::After(1000000);
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, invalidContactIds[j].iUid);
+
+ if(result != KErrNotReady)
+ {
+ break;
+ }
+ kk++;
+ }
+
+ TESTCHECKL(result, KErrNotFound);
+ }
+
+ }
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether an edit operation is possible on contact,
+ * where the specified contact is hidden.
+ */
+//
+// Test step13 -- Test#49 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_13::CPhbkSyncValidateContactTest_13()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_13"));
+ }
+
+CPhbkSyncValidateContactTest_13::~CPhbkSyncValidateContactTest_13()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_13::doTestStepL( )
+ {
+ TInt result;
+
+ SetSimTsyTestNumberL(54);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // load Global/GSM ADN and USim App ADN phonebooks, where
+ // both phonebooks contain hidden entries.
+ SetSimTsyTestNumberL(38); // re-use test prepared for Test#53-1
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+
+ // arry used to keep a valid contactId for each phonebook
+ TContactItemId validContactIds[5];
+
+ // get a valid UID for each phonebook and keep them somewhere
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ }
+
+ // Wait for ICC to become locked
+ WaitForIccToBecomeLockedL();
+
+ // Use the valid UIDs obtained to do ValidateContact
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactIds[i]);
+ TESTCHECKL(result, KErrAccessDenied);
+ }
+
+ return TestStepResult();
+ }
+
+
+//
+// Test step14 -- Test#50 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_14::CPhbkSyncValidateContactTest_14()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_14"));
+ }
+
+CPhbkSyncValidateContactTest_14::~CPhbkSyncValidateContactTest_14()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_14::doTestStepL( )
+ {
+ TInt result;
+ TUid validGlobalADNUid, validUsimAppADNUid;
+
+ SetSimTsyTestNumberL(0);
+
+ // set mode as EAutoCurrentIcc for Global/GSM ADN and USim App ADN
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, KUidIccGlobalAdnPhonebook));
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, KUidUsimAppAdnPhonebook));
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, KUidIccGlobalSdnPhonebook));
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, KUidIccGlobalLndPhonebook));
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, KUidIccGlobalFdnPhonebook));
+
+ // load Global/GSM ADN and USim App ADN phonebooks
+ SetSimTsyTestNumberL(50); // both phonebooks should be synchronised after this
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateInvalidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateInvalidL(KUidIccGlobalLndPhonebook);
+ CheckCacheStateInvalidL(KUidIccGlobalFdnPhonebook);
+
+ // at this stage, it should be possible to access "App1" phonebooks
+ validGlobalADNUid.iUid = GetValidUIDFromContactsDbL(KUidIccGlobalAdnPhonebook);
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validGlobalADNUid.iUid);
+ TESTCHECKL(result, KErrNone);
+
+ validUsimAppADNUid.iUid = GetValidUIDFromContactsDbL(KUidUsimAppAdnPhonebook);
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validUsimAppADNUid.iUid);
+ TESTCHECKL(result, KErrNone);
+
+ SignalSimTsyToReduceTimersL();
+
+ // Wait for USIM App switching to occur - App1 is closed and App2 becomes active
+ // by using the valid UIDs obtained to do ValidateContact
+ while (result == KErrNotReady || result == KErrNone)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validUsimAppADNUid.iUid);
+ User::After(1000000);
+ }
+ TESTCHECK(result, KErrNotFound);
+
+ // Even though USIM App1 is no longer active, access to Global/GSM ADN phonebook
+ // should NOT be affected
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validGlobalADNUid.iUid);
+ TESTCHECK(result, KErrNone);
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether an edit operation is possible on USIM
+ * Application phonebook contact, when the USIM Application becomes
+ * PIN protected.
+ */
+//
+// Test step15 -- Test#51 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_15::CPhbkSyncValidateContactTest_15()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_15"));
+ }
+
+CPhbkSyncValidateContactTest_15::~CPhbkSyncValidateContactTest_15()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_15::doTestStepL( )
+ {
+ // arry used to keep a valid contactId for each phonebook
+ TContactItemId validContactIds[5];
+
+ SetSimTsyTestNumberL(2);
+
+ // Set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // Load all phonebooks which are not locked/blocked
+ SetSimTsyTestNumberL(38); // re-use phonebooks prepared for Test#37
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+
+ // Get a valid UID for each phonebook and keep them somewhere
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
+ }
+
+ // Wait for ICC to become locked
+ WaitForIccToBecomeLockedL();
+
+ // Use the valid UIDs obtained to do ValidateContact
+ TInt result;
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ if (iPhoneBook[i] == KUidIccGlobalAdnPhonebook || iPhoneBook[i] == KUidUsimAppAdnPhonebook)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactIds[i]);
+ TESTCHECKL(result, KErrAccessDenied);
+ }
+ }
+
+ return TestStepResult();
+ }
+
+
+//
+// Test step16 -- Test#52 in Unit Test Spec. Doc. //
+//
+CPhbkSyncValidateContactTest_16::CPhbkSyncValidateContactTest_16()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_16"));
+ }
+
+CPhbkSyncValidateContactTest_16::~CPhbkSyncValidateContactTest_16()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_16::doTestStepL( )
+ {
+ // =============================================================
+ // *** This test is covered by Test#51 since the phonebooks ***
+ // *** in [test38] are both USIM Application PIN protected ***
+ // *** and ICC locked/blocked/PIN protected.
+ // =============================================================
+
+ return TestStepResult();
+ }
+
+/**
+ * Test validating whether a read operation is possible on valid
+ * contact, where reading the ccontact is not permitted due to
+ * the FDN entry being PIN2 protected. Check that other phonebook
+ * can still be accessed for reading. Once PIN2 is verified, editing
+ * FDN contact should be permitted. Again check reading from other
+ * phonebook.
+ */
+//
+// Test step17 -- //
+//
+CPhbkSyncValidateContactTest_17::CPhbkSyncValidateContactTest_17()
+ {
+ // store the name of this test step
+ SetTestStepName(_L("PhbkSyncValidateContactTest_17"));
+ }
+
+CPhbkSyncValidateContactTest_17::~CPhbkSyncValidateContactTest_17()
+ {
+ }
+
+TVerdict CPhbkSyncValidateContactTest_17::doTestStepL( )
+ {
+ // set mode as EAutoCurrentIcc for all phonebooks
+ TInt i(0);
+ for (i=0; i<KTotalNumberOfPhoneBook; i++)
+ {
+ User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
+ CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
+ }
+
+ // load all phonebooks which are not locked/blocked
+ SetSimTsyTestNumberL(41);
+
+ CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
+ CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
+
+ TContactItemId validContactId = GetValidUIDFromContactsDbL(KUidIccGlobalFdnPhonebook);
+ TESTCHECKCONDITIONL(validContactId != KNullContactId);
+
+ // Wait for PIN2 to become protected for editing FDN phonebook
+ TInt result = KErrNone;
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
+ while (result != KErrAccessDenied)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
+ User::After(1000000);
+ }
+ TESTCHECKL(result, KErrAccessDenied);
+
+ // check that other phonebooks can still be read
+ TContactItemId validContactId2 = GetValidUIDFromContactsDbL(KUidIccGlobalAdnPhonebook);
+ TESTCHECKCONDITIONL(validContactId2 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId2);
+ TESTCHECKL(result, KErrNone);
+
+ TContactItemId validContactId3 = GetValidUIDFromContactsDbL(KUidIccGlobalSdnPhonebook);
+ TESTCHECKCONDITIONL(validContactId3 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId3);
+ TESTCHECKL(result, KErrNone);
+
+ TContactItemId validContactId4 = GetValidUIDFromContactsDbL(KUidIccGlobalLndPhonebook);
+ TESTCHECKCONDITIONL(validContactId4 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId4);
+ TESTCHECKL(result, KErrNone);
+
+ TContactItemId validContactId5 = GetValidUIDFromContactsDbL(KUidUsimAppAdnPhonebook);
+ TESTCHECKCONDITIONL(validContactId5 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId5);
+ TESTCHECKL(result, KErrNone);
+
+ // Wait for PIN2 to become validated for editing FDN phonebook
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
+ while (result != KErrNone)
+ {
+ result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
+ User::After(1000000);
+ }
+ TESTCHECKL(result, KErrNone);
+
+ // check that other phonebooks can still be read
+ validContactId2 = GetValidUIDFromContactsDbL(KUidIccGlobalAdnPhonebook);
+ TESTCHECKCONDITIONL(validContactId2 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId2);
+ TESTCHECKL(result, KErrNone);
+
+ validContactId3 = GetValidUIDFromContactsDbL(KUidIccGlobalSdnPhonebook);
+ TESTCHECKCONDITIONL(validContactId3 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId3);
+ TESTCHECKL(result, KErrNone);
+
+ validContactId4 = GetValidUIDFromContactsDbL(KUidIccGlobalLndPhonebook);
+ TESTCHECKCONDITIONL(validContactId4 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId4);
+ TESTCHECKL(result, KErrNone);
+
+ validContactId5 = GetValidUIDFromContactsDbL(KUidUsimAppAdnPhonebook);
+ TESTCHECKCONDITIONL(validContactId5 != KNullContactId);
+ result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId5);
+ TESTCHECKL(result, KErrNone);
+
+ return TestStepResult();
+ }
+