pimprotocols/phonebooksync/Test/TE_PhBkSync/TestValidateContactSteps.cpp
changeset 0 e686773b3f54
equal deleted inserted replaced
-1:000000000000 0:e686773b3f54
       
     1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // This contains PhbkSync API ValidateContact() related Unit Test Steps
       
    15 // 
       
    16 //
       
    17 
       
    18 #include "TE_PhBkSyncBase.h"
       
    19 #include "TestValidateContactSteps.h"
       
    20 
       
    21 /** 
       
    22  * Test validating whether a read operation is possible on valid
       
    23  * contacts. Repeat this test case for all supported phonebooks.
       
    24  */
       
    25 //
       
    26 //    Test step1 -- Test#37 in Unit Test Spec. Doc. //
       
    27 //
       
    28 CPhbkSyncValidateContactTest_01::CPhbkSyncValidateContactTest_01()
       
    29 	{
       
    30 	// store the name of this test step
       
    31 	SetTestStepName(_L("PhbkSyncValidateContactTest_01"));
       
    32 	}
       
    33 
       
    34 CPhbkSyncValidateContactTest_01::~CPhbkSyncValidateContactTest_01()
       
    35 	{
       
    36 	}
       
    37 
       
    38 TVerdict CPhbkSyncValidateContactTest_01::doTestStepL( )
       
    39 	{
       
    40 	TContactItemId id;
       
    41 	TInt result;
       
    42 
       
    43 	// destroy the default .ini file if it exists
       
    44 	DestroyDefaultIniFileL();
       
    45 
       
    46 	SetSimTsyTestNumberL(18);
       
    47 
       
    48 	// Set mode as EAutoCurrentIcc for all phonebooks
       
    49 	TInt i(0);
       
    50 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
    51 		{ 
       
    52 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
    53 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
    54 		}
       
    55 
       
    56 	// Load test and all phonebooks should be synchronised automatically 
       
    57 	SetSimTsyTestNumberL(18);
       
    58 
       
    59 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
    60 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
    61 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
    62 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
    63 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
    64 
       
    65 	// Get a valid UID for each phonebook and do ValidateContact
       
    66 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
    67 		{ 
       
    68 		id = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
    69 		result = iSession.ValidateContact(MContactSynchroniser::ERead, id);
       
    70 		TESTCHECKL(result, KErrNone);    
       
    71 		}
       
    72 
       
    73 	return TestStepResult();
       
    74 	}
       
    75 
       
    76 /**
       
    77  * Test validating whether a read operation is possible on valid
       
    78  * contact, where reading the ccontact is not permitted due to
       
    79  * the UICC being locked/blocked/PIN protected. Repeat this test
       
    80  * case for all supported phonebooks.
       
    81  */
       
    82 //
       
    83 //    Test step2 -- Test#38 in Unit Test Spec. Doc.  //
       
    84 //
       
    85 CPhbkSyncValidateContactTest_02::CPhbkSyncValidateContactTest_02()
       
    86 	{
       
    87 	// store the name of this test step
       
    88 	SetTestStepName(_L("PhbkSyncValidateContactTest_02"));
       
    89 	}
       
    90 
       
    91 CPhbkSyncValidateContactTest_02::~CPhbkSyncValidateContactTest_02()
       
    92 	{
       
    93 	}
       
    94 
       
    95 TVerdict CPhbkSyncValidateContactTest_02::doTestStepL( )
       
    96 	{
       
    97 	// arry used to keep a valid contactId for each phonebook
       
    98 	TContactItemId validContactIds[5];  
       
    99 
       
   100 	// set mode as EAutoCurrentIcc for all phonebooks
       
   101 	TInt i(0);
       
   102 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   103 		{ 
       
   104 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   105 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   106 		}
       
   107 
       
   108 	// load all phonebooks which are not locked/blocked
       
   109 	SetSimTsyTestNumberL(38); 
       
   110 
       
   111 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   112 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   113 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   114 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   115 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   116 
       
   117 	// get a valid UID for each phonebook and keep them somewhere
       
   118 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   119 		{ 
       
   120 		validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
   121 		}
       
   122 
       
   123 	// Wait for ICC to become locked 
       
   124 	WaitForIccToBecomeLockedL();
       
   125 
       
   126 	// Use the valid UIDs obtained to do ValidateContact
       
   127 	TInt result;
       
   128 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   129 		{ 
       
   130 		result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactIds[i]);
       
   131 		TESTCHECKL(result, KErrAccessDenied);
       
   132 		}
       
   133 
       
   134 	return TestStepResult();
       
   135 	}
       
   136 
       
   137 /** 
       
   138  * Test validating whether a read operation is possible on contact,
       
   139  * where the contact specified by the contact ID is blank. 
       
   140  * Repeat this test case for all supported phonebooks.
       
   141  */
       
   142 //
       
   143 //    Test step3 -- Test#39 in Unit Test Spec. Doc.  //
       
   144 //
       
   145 CPhbkSyncValidateContactTest_03::CPhbkSyncValidateContactTest_03()
       
   146 	{
       
   147 	// store the name of this test step
       
   148 	SetTestStepName(_L("PhbkSyncValidateContactTest_03"));
       
   149 	}
       
   150 
       
   151 CPhbkSyncValidateContactTest_03::~CPhbkSyncValidateContactTest_03()
       
   152 	{
       
   153 	}
       
   154 
       
   155 TVerdict CPhbkSyncValidateContactTest_03::doTestStepL( )
       
   156 	{
       
   157 	SetSimTsyTestNumberL(18); 
       
   158 
       
   159 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   160 	TInt i(0);
       
   161 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   162 		{ 
       
   163 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   164 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   165 		}
       
   166 
       
   167 	// Load the dummy ICC which contains all phonebooks
       
   168 	SetSimTsyTestNumberL(0);
       
   169 
       
   170 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   171 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   172 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   173 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   174 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   175 
       
   176 	// Validate a contact with blank UID for each phonebook
       
   177 	TInt result;
       
   178 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   179 		{ 
       
   180 		result = iSession.ValidateContact(MContactSynchroniser::ERead, KNullContactId);
       
   181 		TESTCHECKL(result, KErrNotFound);
       
   182 		}
       
   183 
       
   184 	return TestStepResult();
       
   185 	}
       
   186 
       
   187 /**
       
   188  * Test validing whether a read operation is possible on contact,
       
   189  * where the specified contact ID is invalid.  Repeat this test 
       
   190  * case for all supported phonebooks.
       
   191  */
       
   192 //
       
   193 //    Test step4 -- Test#40 in Unit Test Spec. Doc.  //
       
   194 //
       
   195 CPhbkSyncValidateContactTest_04::CPhbkSyncValidateContactTest_04()
       
   196 	{
       
   197 	// store the name of this test step
       
   198 	SetTestStepName(_L("PhbkSyncValidateContactTest_04"));
       
   199 	}
       
   200 
       
   201 CPhbkSyncValidateContactTest_04::~CPhbkSyncValidateContactTest_04()
       
   202 	{
       
   203 	}
       
   204 
       
   205 TVerdict CPhbkSyncValidateContactTest_04::doTestStepL( )
       
   206 	{
       
   207 	const TInt totalNumberOfInvalidUIDs(4);
       
   208 	TUid  invalidContactIds[totalNumberOfInvalidUIDs];
       
   209 
       
   210 	invalidContactIds[0].iUid = -1;
       
   211 	invalidContactIds[1].iUid = 99999;
       
   212 	invalidContactIds[2].iUid = -456;
       
   213 	invalidContactIds[3].iUid = 8888;
       
   214 
       
   215 	SetSimTsyTestNumberL(18); 
       
   216 
       
   217 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   218 	TInt i(0);
       
   219 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   220 		{ 
       
   221 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   222 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   223 		}
       
   224 
       
   225 	// Load the dummy ICC which contains all phonebooks
       
   226 	SetSimTsyTestNumberL(0);
       
   227 
       
   228 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   229 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   230 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   231 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   232 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   233 
       
   234 	// Validate a contact with blank UID for each phonebook
       
   235 	TInt result;
       
   236 	TInt j(0);
       
   237 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   238 		{ 
       
   239 		for (j=0; j<totalNumberOfInvalidUIDs; j++) 
       
   240 			{
       
   241 			result = iSession.ValidateContact(MContactSynchroniser::ERead, invalidContactIds[j].iUid);
       
   242 			TESTCHECKL(result, KErrNotFound);
       
   243 			}
       
   244 		}
       
   245 
       
   246 	return TestStepResult();
       
   247 	}
       
   248 
       
   249 /**
       
   250  * Test validing whether a search operation is possible on a valid
       
   251  * contact. Repeat tis test case for all supported phonebooks.
       
   252  */
       
   253 //
       
   254 //    Test step5 -- Test#41 in Unit Test Spec. Doc.  //
       
   255 //
       
   256 CPhbkSyncValidateContactTest_05::CPhbkSyncValidateContactTest_05()
       
   257 	{
       
   258 	// store the name of this test step
       
   259 	SetTestStepName(_L("PhbkSyncValidateContactTest_05"));
       
   260 	}
       
   261 
       
   262 CPhbkSyncValidateContactTest_05::~CPhbkSyncValidateContactTest_05()
       
   263 	{
       
   264 	}
       
   265 
       
   266 TVerdict CPhbkSyncValidateContactTest_05::doTestStepL( )
       
   267 	{
       
   268 	TContactItemId id;
       
   269 	TInt result;
       
   270 
       
   271 	SetSimTsyTestNumberL(18); 
       
   272 
       
   273 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   274 	TInt i(0);
       
   275 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   276 		{ 
       
   277 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   278 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   279 		}
       
   280 
       
   281 	// Load test and all phonebooks should be synchronised automatically 
       
   282 	SetSimTsyTestNumberL(18); // re-use test prepared for Test#37
       
   283 
       
   284 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   285 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   286 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   287 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   288 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   289 
       
   290 	// Get a valid UID for each phonebook and do ValidateContact
       
   291 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   292 		{ 
       
   293 		id = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
   294 		result = iSession.ValidateContact(MContactSynchroniser::ESearch, id);
       
   295 		TESTCHECKL(result, KErrNone);    
       
   296 		}
       
   297 
       
   298 	return TestStepResult();
       
   299 	}
       
   300 
       
   301 /**
       
   302  * Test validing whether a search operation is possible on a valid 
       
   303  * contact, where searching the contact is not permitted. Repeat 
       
   304  * this test case for all supported phonebooks.
       
   305  */
       
   306 //
       
   307 //    Test step6 -- Test#42 in Unit Test Spec. Doc.  //
       
   308 //
       
   309 CPhbkSyncValidateContactTest_06::CPhbkSyncValidateContactTest_06()
       
   310 	{
       
   311 	// store the name of this test step
       
   312 	SetTestStepName(_L("PhbkSyncValidateContactTest_06"));
       
   313 	}
       
   314 
       
   315 CPhbkSyncValidateContactTest_06::~CPhbkSyncValidateContactTest_06()
       
   316 	{
       
   317 	}
       
   318 
       
   319 TVerdict CPhbkSyncValidateContactTest_06::doTestStepL( )
       
   320 	{
       
   321 	// arry used to keep a valid contactId for each phonebook
       
   322 	TContactItemId validContactIds[5];  
       
   323 
       
   324 	SetSimTsyTestNumberL(18); 
       
   325 
       
   326 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   327 	TInt i(0);
       
   328 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   329 		{ 
       
   330 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   331 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   332 		}
       
   333 
       
   334 	// Load all phonebooks which are not locked/blocked
       
   335 	SetSimTsyTestNumberL(38);
       
   336 
       
   337 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   338 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   339 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   340 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   341 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   342 
       
   343 	// Get a valid UID for each phonebook and keep them somewhere
       
   344 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   345 		{ 
       
   346 		validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
   347 		}
       
   348 
       
   349 	// Wait for ICC to become locked 
       
   350 	WaitForIccToBecomeLockedL();
       
   351 
       
   352 	// Use the valid UIDs obtained to do ValidateContact
       
   353 	TInt result;
       
   354 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   355 		{ 
       
   356 		result = iSession.ValidateContact(MContactSynchroniser::ESearch, validContactIds[i]);
       
   357 		TESTCHECKL(result, KErrAccessDenied);
       
   358 		}
       
   359 
       
   360 	// Finally set mode as EManual for all phonebooks so that it does not affect following test cases
       
   361 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   362 		{ 
       
   363 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
       
   364 		CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
       
   365 		}
       
   366 
       
   367 	return TestStepResult();
       
   368 	}
       
   369 
       
   370 /**
       
   371  * Test validating whether a search operation is possible on contact,
       
   372  * where the contact specified by the contact ID is blank. Repeat
       
   373  * this test case for all supported phonebooks.
       
   374  */
       
   375 //
       
   376 //    Test step7 -- Test#43 in Unit Test Spec. Doc.  //
       
   377 //
       
   378 CPhbkSyncValidateContactTest_07::CPhbkSyncValidateContactTest_07()
       
   379 	{
       
   380 	// store the name of this test step
       
   381 	SetTestStepName(_L("PhbkSyncValidateContactTest_07"));
       
   382 	}
       
   383 
       
   384 CPhbkSyncValidateContactTest_07::~CPhbkSyncValidateContactTest_07()
       
   385 	{
       
   386 	}
       
   387 
       
   388 TVerdict CPhbkSyncValidateContactTest_07::doTestStepL( )
       
   389 	{
       
   390 	// Load the dummy ICC which contains all phonebooks
       
   391 	SetSimTsyTestNumberL(0);
       
   392 	
       
   393 	// Set mode as EManual for all phonebooks
       
   394 	// Do initial synchronisation for all phonebooks
       
   395 	TInt i(0);
       
   396 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   397 		{ 
       
   398 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
       
   399 		CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
       
   400 		DoSyncL(iPhoneBook[i], KErrNone);
       
   401 		}
       
   402 	
       
   403 	// Validate a contact with blank UID for each phonebook
       
   404 	TInt result;
       
   405 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   406 		{ 
       
   407 		result = iSession.ValidateContact(MContactSynchroniser::ESearch, KNullContactId);
       
   408 		TESTCHECKL(result, KErrNotFound);
       
   409 		}
       
   410 
       
   411 	return TestStepResult();
       
   412 	}
       
   413 
       
   414 /**
       
   415  * Test validating whether a search operation is possible on contact, 
       
   416  * where the specified contact ID is invalid. Repeat this test
       
   417  * case for all supported phonebooks.
       
   418  */
       
   419 //
       
   420 //    Test step8 -- Test#44 in Unit Test Spec. Doc.  //
       
   421 //
       
   422 CPhbkSyncValidateContactTest_08::CPhbkSyncValidateContactTest_08()
       
   423 	{
       
   424 	// store the name of this test step
       
   425 	SetTestStepName(_L("PhbkSyncValidateContactTest_08"));
       
   426 	}
       
   427 
       
   428 CPhbkSyncValidateContactTest_08::~CPhbkSyncValidateContactTest_08()
       
   429 	{
       
   430 	}
       
   431 
       
   432 TVerdict CPhbkSyncValidateContactTest_08::doTestStepL( )
       
   433 	{
       
   434 	TInt totalNumberOfInvalidUIDs = 4;
       
   435 	TUid  invalidContactIds[] = 
       
   436 		{
       
   437 		{-1},
       
   438 		{99999},
       
   439 		{-456},
       
   440 		{8888}
       
   441 		};
       
   442 
       
   443 	// Load the dummy ICC which contains all phonebooks
       
   444 	SetSimTsyTestNumberL(0);
       
   445 
       
   446 	// Set mode as EManual for all phonebooks
       
   447 	// Do initial synchronisation for all phonebooks
       
   448 	TInt i(0);
       
   449 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   450 		{ 
       
   451 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
       
   452 		CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
       
   453 		DoSyncL(iPhoneBook[i], KErrNone);
       
   454 		}
       
   455 
       
   456 	// Validate a contact with blank UID for each phonebook
       
   457 	TInt result;
       
   458 	TInt j(0);
       
   459 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   460 		{
       
   461 		for (j=0; j<totalNumberOfInvalidUIDs; j++) 
       
   462 			{
       
   463 			result = iSession.ValidateContact(MContactSynchroniser::ESearch, invalidContactIds[j].iUid);
       
   464 			TESTCHECKL(result, KErrNotFound);
       
   465 			}
       
   466 		}
       
   467 
       
   468 	return TestStepResult();
       
   469 	}
       
   470 
       
   471 /**
       
   472  * Test validating whether an edit operation is possible on valid
       
   473  * contact. Repeat this test case for all supported phonebooks.
       
   474  */
       
   475 //
       
   476 //    Test step9 -- Test#45 in Unit Test Spec. Doc.  //
       
   477 //
       
   478 CPhbkSyncValidateContactTest_09::CPhbkSyncValidateContactTest_09()
       
   479 	{
       
   480 	// store the name of this test step
       
   481 	SetTestStepName(_L("PhbkSyncValidateContactTest_09"));
       
   482 	}
       
   483 
       
   484 CPhbkSyncValidateContactTest_09::~CPhbkSyncValidateContactTest_09()
       
   485 	{
       
   486 	}
       
   487 
       
   488 TVerdict CPhbkSyncValidateContactTest_09::doTestStepL( )
       
   489 	{
       
   490 	TContactItemId id;
       
   491 	TInt result;
       
   492 
       
   493 	// Load test and all phonebooks should be synchronised automatically 
       
   494 	SetSimTsyTestNumberL(37); // re-use test prepared for Test#37
       
   495 
       
   496 	// Set mode as EManual for all phonebooks
       
   497 	// Do initial synchronisation for all phonebooks
       
   498 	TInt i(0);
       
   499 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   500 		{ 
       
   501 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
       
   502 		CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
       
   503 		DoSyncL(iPhoneBook[i], KErrNone);
       
   504 		}
       
   505 
       
   506 	// Get a valid UID for each phonebook and do ValidateContact
       
   507 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   508 		{ 
       
   509 		id = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
   510 		result = iSession.ValidateContact(MContactSynchroniser::EEdit, id);
       
   511 		TESTCHECKL(result, KErrNone);    
       
   512 		}
       
   513 
       
   514 	return TestStepResult();
       
   515 	}
       
   516 
       
   517 /**
       
   518  * Test validating whether an edit operation is possile on valid
       
   519  * contact, where editing the contact is not permitted. Repeat
       
   520  * this test case for all supported phonebooks.
       
   521  */
       
   522 //
       
   523 //    Test step10 -- Test#46 in Unit Test Spec. Doc.  //
       
   524 //
       
   525 CPhbkSyncValidateContactTest_10::CPhbkSyncValidateContactTest_10()
       
   526 	{
       
   527 	// store the name of this test step
       
   528 	SetTestStepName(_L("PhbkSyncValidateContactTest_10"));
       
   529 	}
       
   530 
       
   531 CPhbkSyncValidateContactTest_10::~CPhbkSyncValidateContactTest_10()
       
   532 	{
       
   533 	}
       
   534 
       
   535 TVerdict CPhbkSyncValidateContactTest_10::doTestStepL( )
       
   536 	{
       
   537 	// arry used to keep a valid contactId for each phonebook
       
   538 	TContactItemId validContactIds[5];  
       
   539 
       
   540 	// Load all phonebooks which are not locked/blocked
       
   541 	SetSimTsyTestNumberL(38); 
       
   542 
       
   543 	// Set mode as EManual for all phonebooks
       
   544 	// Do initial synchronisation for all phonebooks
       
   545 	TInt i(0);
       
   546 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   547 		{ 
       
   548 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, iPhoneBook[i]));
       
   549 		CheckSyncModeL(RPhoneBookSession::EManual, iPhoneBook[i]);
       
   550 		DoSyncL(iPhoneBook[i], KErrNone);
       
   551 		}
       
   552 
       
   553 	// Get a valid UID for each phonebook and keep them somewhere
       
   554 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   555 		{ 
       
   556 		validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
   557 		}
       
   558 
       
   559 	// Wait for ICC to become locked 
       
   560 	WaitForIccToBecomeLockedL();
       
   561 
       
   562 	// Use the valid UIDs obtained to do ValidateContact
       
   563 	TInt result;
       
   564 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   565 		{ 
       
   566 		result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactIds[i]);
       
   567 		TESTCHECKL(result, KErrAccessDenied);
       
   568 		}
       
   569 
       
   570 	return TestStepResult();
       
   571 	}
       
   572 
       
   573 /**
       
   574  * Test validating whether an edit operation is possible on
       
   575  * contact, where the contact specified by the contact ID is
       
   576  * blank. Repeat this test case for all supported phonebooks.
       
   577  */
       
   578 //
       
   579 //    Test step11 -- Test#47 in Unit Test Spec. Doc.  //
       
   580 //
       
   581 CPhbkSyncValidateContactTest_11::CPhbkSyncValidateContactTest_11()
       
   582 	{
       
   583 	// store the name of this test step
       
   584 	SetTestStepName(_L("PhbkSyncValidateContactTest_11"));
       
   585 	}
       
   586 
       
   587 CPhbkSyncValidateContactTest_11::~CPhbkSyncValidateContactTest_11()
       
   588 	{
       
   589 	}
       
   590 
       
   591 TVerdict CPhbkSyncValidateContactTest_11::doTestStepL( )
       
   592 	{
       
   593 	SetSimTsyTestNumberL(18); 
       
   594 
       
   595 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   596 	TInt i(0);
       
   597 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   598 		{ 
       
   599 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   600 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   601 		}
       
   602 
       
   603 	// Load the dummy ICC which contains all phonebooks
       
   604 	SetSimTsyTestNumberL(0);
       
   605 
       
   606 	// Validate a contact with blank UID for each phonebook
       
   607 	TInt result;
       
   608 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   609 		{ 
       
   610 		result = iSession.ValidateContact(MContactSynchroniser::EEdit, KNullContactId);
       
   611 		TESTCHECKCONDITIONL(result == KErrNotFound  ||  result == KErrNotReady);
       
   612 
       
   613 		if(result == KErrNotReady)
       
   614 			{
       
   615 			TInt jj = 0;
       
   616 			while(jj < 5)
       
   617 				{
       
   618 				User::After(1000000);
       
   619 				result = iSession.ValidateContact(MContactSynchroniser::EEdit, KNullContactId);
       
   620 				if(result != KErrNotReady)
       
   621 					{
       
   622 					break;
       
   623 					}
       
   624 				jj++;
       
   625 				}
       
   626 			
       
   627 			TESTCHECKL(result, KErrNotFound);
       
   628 			}
       
   629 
       
   630 		}
       
   631 
       
   632 	return TestStepResult();
       
   633 	}
       
   634 
       
   635 /**
       
   636  * Test validating whether an edit operation is possible on
       
   637  * contact, where the specified contact ID is invalid. Repeat
       
   638  * this test case for all supported phonebooks.
       
   639  */
       
   640 //
       
   641 //    Test step12 -- Test#48 in Unit Test Spec. Doc.  //
       
   642 //
       
   643 CPhbkSyncValidateContactTest_12::CPhbkSyncValidateContactTest_12()
       
   644 	{
       
   645 	// store the name of this test step
       
   646 	SetTestStepName(_L("PhbkSyncValidateContactTest_12"));
       
   647 	}
       
   648 
       
   649 CPhbkSyncValidateContactTest_12::~CPhbkSyncValidateContactTest_12()
       
   650 	{
       
   651 	}
       
   652 
       
   653 TVerdict CPhbkSyncValidateContactTest_12::doTestStepL( )
       
   654 	{
       
   655 	TInt totalNumberOfInvalidUIDs = 4;
       
   656 	TUid  invalidContactIds[] = 
       
   657 		{
       
   658 		{-1},
       
   659 		{99999},
       
   660 		{-456},
       
   661 		{8888}
       
   662 		};
       
   663 
       
   664 	SetSimTsyTestNumberL(0); 
       
   665 
       
   666 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   667 	TInt i(0);
       
   668 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   669 		{ 
       
   670 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   671 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   672 		}
       
   673 
       
   674 	// Load the dummy ICC which contains all phonebooks
       
   675 	SetSimTsyTestNumberL(0);
       
   676 
       
   677 	// Validate a contact with blank UID for each phonebook
       
   678 	TInt result;
       
   679 	TInt j(0);
       
   680 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   681 		{ 
       
   682 		for (j=0; j<totalNumberOfInvalidUIDs; j++) 
       
   683 			{
       
   684 			result = iSession.ValidateContact(MContactSynchroniser::EEdit, invalidContactIds[j].iUid);
       
   685 			TESTCHECKCONDITIONL(result == KErrNotFound  ||  result == KErrNotReady);
       
   686 
       
   687 			if(result == KErrNotReady)
       
   688 				{
       
   689 				TInt kk=0;
       
   690 				while(kk < 5)
       
   691 					{
       
   692 					User::After(1000000);
       
   693 					result = iSession.ValidateContact(MContactSynchroniser::EEdit, invalidContactIds[j].iUid);
       
   694 				
       
   695 					if(result != KErrNotReady)
       
   696 						{
       
   697 						break;
       
   698 						}
       
   699 					kk++;
       
   700 					}
       
   701 			
       
   702 				TESTCHECKL(result, KErrNotFound);
       
   703 				}
       
   704 
       
   705 			}
       
   706 		}
       
   707 
       
   708 	return TestStepResult();
       
   709 	}
       
   710 
       
   711 /**
       
   712  * Test validating whether an edit operation is possible on contact,
       
   713  * where the specified contact is hidden.
       
   714  */
       
   715 //
       
   716 //    Test step13 -- Test#49 in Unit Test Spec. Doc.  //
       
   717 //
       
   718 CPhbkSyncValidateContactTest_13::CPhbkSyncValidateContactTest_13()
       
   719 	{
       
   720 	// store the name of this test step
       
   721 	SetTestStepName(_L("PhbkSyncValidateContactTest_13"));
       
   722 	}
       
   723 
       
   724 CPhbkSyncValidateContactTest_13::~CPhbkSyncValidateContactTest_13()
       
   725 	{
       
   726 	}
       
   727 
       
   728 TVerdict CPhbkSyncValidateContactTest_13::doTestStepL( )
       
   729 	{
       
   730 	TInt result;
       
   731 
       
   732 	SetSimTsyTestNumberL(54); 
       
   733 
       
   734 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   735 	TInt i(0);
       
   736 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   737 		{ 
       
   738 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   739 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   740 		}
       
   741 
       
   742 	// load Global/GSM ADN and USim App ADN phonebooks, where
       
   743 	// both phonebooks contain hidden entries.
       
   744 	SetSimTsyTestNumberL(38); // re-use test prepared for Test#53-1
       
   745 
       
   746 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   747 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   748 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   749 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   750 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   751 
       
   752 	// arry used to keep a valid contactId for each phonebook
       
   753 	TContactItemId validContactIds[5];
       
   754 
       
   755 	// get a valid UID for each phonebook and keep them somewhere
       
   756 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   757 		{ 
       
   758 		validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
   759 		}
       
   760 
       
   761 	// Wait for ICC to become locked 
       
   762 	WaitForIccToBecomeLockedL();
       
   763 
       
   764 	// Use the valid UIDs obtained to do ValidateContact
       
   765 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   766 		{ 
       
   767 		result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactIds[i]);
       
   768 		TESTCHECKL(result, KErrAccessDenied);
       
   769 		}
       
   770 
       
   771 	return TestStepResult();
       
   772 	}
       
   773 
       
   774 
       
   775 //
       
   776 //    Test step14 -- Test#50 in Unit Test Spec. Doc.  //
       
   777 //
       
   778 CPhbkSyncValidateContactTest_14::CPhbkSyncValidateContactTest_14()
       
   779 	{
       
   780 	// store the name of this test step
       
   781 	SetTestStepName(_L("PhbkSyncValidateContactTest_14"));
       
   782 	}
       
   783 
       
   784 CPhbkSyncValidateContactTest_14::~CPhbkSyncValidateContactTest_14()
       
   785 	{
       
   786 	}
       
   787 
       
   788 TVerdict CPhbkSyncValidateContactTest_14::doTestStepL( )
       
   789 	{
       
   790 	TInt result;
       
   791 	TUid  validGlobalADNUid, validUsimAppADNUid;
       
   792 
       
   793 	SetSimTsyTestNumberL(0); 
       
   794 
       
   795 	// set mode as EAutoCurrentIcc for Global/GSM ADN and USim App ADN
       
   796 	User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, KUidIccGlobalAdnPhonebook));
       
   797 	User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, KUidUsimAppAdnPhonebook));
       
   798 	User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, KUidIccGlobalSdnPhonebook));
       
   799 	User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, KUidIccGlobalLndPhonebook));
       
   800 	User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EManual, KUidIccGlobalFdnPhonebook));
       
   801 
       
   802 	// load Global/GSM ADN and USim App ADN phonebooks
       
   803 	SetSimTsyTestNumberL(50);	// both phonebooks should be synchronised after this
       
   804 
       
   805 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   806 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   807 	CheckCacheStateInvalidL(KUidIccGlobalSdnPhonebook);
       
   808 	CheckCacheStateInvalidL(KUidIccGlobalLndPhonebook);
       
   809 	CheckCacheStateInvalidL(KUidIccGlobalFdnPhonebook);
       
   810 
       
   811 	// at this stage, it should be possible to access "App1" phonebooks
       
   812 	validGlobalADNUid.iUid = GetValidUIDFromContactsDbL(KUidIccGlobalAdnPhonebook);
       
   813 	result = iSession.ValidateContact(MContactSynchroniser::EEdit, validGlobalADNUid.iUid);
       
   814 	TESTCHECKL(result, KErrNone);    
       
   815 
       
   816 	validUsimAppADNUid.iUid = GetValidUIDFromContactsDbL(KUidUsimAppAdnPhonebook);
       
   817 	result = iSession.ValidateContact(MContactSynchroniser::EEdit, validUsimAppADNUid.iUid);
       
   818 	TESTCHECKL(result, KErrNone);
       
   819 
       
   820 	SignalSimTsyToReduceTimersL();
       
   821 
       
   822 	// Wait for USIM App switching to occur - App1 is closed and App2 becomes active 
       
   823 	// by using the valid UIDs obtained to do ValidateContact
       
   824 	while (result == KErrNotReady  ||  result == KErrNone) 
       
   825 		{
       
   826 		result = iSession.ValidateContact(MContactSynchroniser::EEdit, validUsimAppADNUid.iUid);
       
   827 		User::After(1000000);
       
   828 		}
       
   829 	TESTCHECK(result, KErrNotFound);
       
   830 
       
   831 	// Even though USIM App1 is no longer active, access to Global/GSM ADN phonebook 
       
   832 	// should NOT be affected 
       
   833 	result = iSession.ValidateContact(MContactSynchroniser::EEdit, validGlobalADNUid.iUid);
       
   834 	TESTCHECK(result, KErrNone);    
       
   835 
       
   836 	return TestStepResult();
       
   837 	}
       
   838 
       
   839 /**
       
   840  * Test validating whether an edit operation is possible on USIM
       
   841  * Application phonebook contact, when the USIM Application becomes
       
   842  * PIN protected.
       
   843  */
       
   844 //
       
   845 //    Test step15 -- Test#51 in Unit Test Spec. Doc.  //
       
   846 //
       
   847 CPhbkSyncValidateContactTest_15::CPhbkSyncValidateContactTest_15()
       
   848 	{
       
   849 	// store the name of this test step
       
   850 	SetTestStepName(_L("PhbkSyncValidateContactTest_15"));
       
   851 	}
       
   852 
       
   853 CPhbkSyncValidateContactTest_15::~CPhbkSyncValidateContactTest_15()
       
   854 	{
       
   855 	}
       
   856 
       
   857 TVerdict CPhbkSyncValidateContactTest_15::doTestStepL( )
       
   858 	{
       
   859 	// arry used to keep a valid contactId for each phonebook
       
   860 	TContactItemId validContactIds[5];  
       
   861 
       
   862 	SetSimTsyTestNumberL(2); 
       
   863 
       
   864 	// Set mode as EAutoCurrentIcc for all phonebooks
       
   865 	TInt i(0);
       
   866 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   867 		{ 
       
   868 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   869 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   870 		}
       
   871 
       
   872 	// Load all phonebooks which are not locked/blocked
       
   873 	SetSimTsyTestNumberL(38);  // re-use phonebooks prepared for Test#37
       
   874 
       
   875 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   876 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   877 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   878 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   879 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   880 
       
   881 	// Get a valid UID for each phonebook and keep them somewhere
       
   882 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   883 		{ 
       
   884 		validContactIds[i] = GetValidUIDFromContactsDbL(iPhoneBook[i]);
       
   885 		}
       
   886 
       
   887 	// Wait for ICC to become locked 
       
   888 	WaitForIccToBecomeLockedL();
       
   889 
       
   890 	// Use the valid UIDs obtained to do ValidateContact
       
   891 	TInt result;
       
   892 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   893 		{
       
   894 		if (iPhoneBook[i] == KUidIccGlobalAdnPhonebook ||	iPhoneBook[i] == KUidUsimAppAdnPhonebook) 
       
   895 			{
       
   896 			result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactIds[i]);
       
   897 			TESTCHECKL(result, KErrAccessDenied);
       
   898 			}
       
   899 		}
       
   900 
       
   901 	return TestStepResult();
       
   902 	}
       
   903 
       
   904 
       
   905 //
       
   906 //    Test step16 -- Test#52 in Unit Test Spec. Doc.  //
       
   907 //
       
   908 CPhbkSyncValidateContactTest_16::CPhbkSyncValidateContactTest_16()
       
   909 	{
       
   910 	// store the name of this test step
       
   911 	SetTestStepName(_L("PhbkSyncValidateContactTest_16"));
       
   912 	}
       
   913 
       
   914 CPhbkSyncValidateContactTest_16::~CPhbkSyncValidateContactTest_16()
       
   915 	{
       
   916 	}
       
   917 
       
   918 TVerdict CPhbkSyncValidateContactTest_16::doTestStepL( )
       
   919 	{
       
   920 	// =============================================================
       
   921 	// *** This test is covered by Test#51 since the phonebooks ***
       
   922 	// *** in [test38] are both USIM Application PIN protected  ***
       
   923 	// *** and ICC locked/blocked/PIN protected.
       
   924 	// =============================================================
       
   925 
       
   926 	return TestStepResult();
       
   927 	}
       
   928 
       
   929 /**
       
   930  * Test validating whether a read operation is possible on valid
       
   931  * contact, where reading the ccontact is not permitted due to
       
   932  * the FDN entry being PIN2 protected. Check that other phonebook
       
   933  * can still be accessed for reading. Once PIN2 is verified, editing
       
   934  * FDN contact should be permitted. Again check reading from other
       
   935  * phonebook.
       
   936  */
       
   937 //
       
   938 //    Test step17 --								//
       
   939 //
       
   940 CPhbkSyncValidateContactTest_17::CPhbkSyncValidateContactTest_17()
       
   941 	{
       
   942 	// store the name of this test step
       
   943 	SetTestStepName(_L("PhbkSyncValidateContactTest_17"));
       
   944 	}
       
   945 
       
   946 CPhbkSyncValidateContactTest_17::~CPhbkSyncValidateContactTest_17()
       
   947 	{
       
   948 	}
       
   949 
       
   950 TVerdict CPhbkSyncValidateContactTest_17::doTestStepL( )
       
   951 	{
       
   952 	// set mode as EAutoCurrentIcc for all phonebooks
       
   953 	TInt i(0);
       
   954 	for (i=0; i<KTotalNumberOfPhoneBook; i++) 
       
   955 		{ 
       
   956 		User::LeaveIfError(iSession.SetSyncMode(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]));
       
   957 		CheckSyncModeL(RPhoneBookSession::EAutoCurrentIcc, iPhoneBook[i]);
       
   958 		}
       
   959 
       
   960 	// load all phonebooks which are not locked/blocked
       
   961 	SetSimTsyTestNumberL(41); 
       
   962 
       
   963 	CheckCacheStateValidL(KUidUsimAppAdnPhonebook);
       
   964 	CheckCacheStateValidL(KUidIccGlobalAdnPhonebook);
       
   965 	CheckCacheStateValidL(KUidIccGlobalSdnPhonebook);
       
   966 	CheckCacheStateValidL(KUidIccGlobalLndPhonebook);
       
   967 	CheckCacheStateValidL(KUidIccGlobalFdnPhonebook);
       
   968 
       
   969 	TContactItemId validContactId = GetValidUIDFromContactsDbL(KUidIccGlobalFdnPhonebook);
       
   970 	TESTCHECKCONDITIONL(validContactId != KNullContactId);
       
   971 	
       
   972 	// Wait for PIN2 to become protected for editing FDN phonebook 
       
   973 	TInt result = KErrNone;
       
   974 	result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
       
   975 	while (result != KErrAccessDenied) 
       
   976 		{
       
   977 		result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
       
   978 		User::After(1000000);
       
   979 		}
       
   980 	TESTCHECKL(result, KErrAccessDenied);
       
   981 
       
   982 	// check that other phonebooks can still be read
       
   983 	TContactItemId validContactId2 = GetValidUIDFromContactsDbL(KUidIccGlobalAdnPhonebook);
       
   984 	TESTCHECKCONDITIONL(validContactId2 != KNullContactId);
       
   985 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId2);
       
   986 	TESTCHECKL(result, KErrNone);
       
   987 
       
   988 	TContactItemId validContactId3 = GetValidUIDFromContactsDbL(KUidIccGlobalSdnPhonebook);
       
   989 	TESTCHECKCONDITIONL(validContactId3 != KNullContactId);
       
   990 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId3);
       
   991 	TESTCHECKL(result, KErrNone);
       
   992 
       
   993 	TContactItemId validContactId4 = GetValidUIDFromContactsDbL(KUidIccGlobalLndPhonebook);
       
   994 	TESTCHECKCONDITIONL(validContactId4 != KNullContactId);
       
   995 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId4);
       
   996 	TESTCHECKL(result, KErrNone);
       
   997 
       
   998 	TContactItemId validContactId5 = GetValidUIDFromContactsDbL(KUidUsimAppAdnPhonebook);
       
   999 	TESTCHECKCONDITIONL(validContactId5 != KNullContactId);
       
  1000 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId5);
       
  1001 	TESTCHECKL(result, KErrNone);
       
  1002 
       
  1003 	// Wait for PIN2 to become validated for editing FDN phonebook 
       
  1004 	result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
       
  1005 	while (result != KErrNone) 
       
  1006 		{
       
  1007 		result = iSession.ValidateContact(MContactSynchroniser::EEdit, validContactId);
       
  1008 		User::After(1000000);
       
  1009 		}
       
  1010 	TESTCHECKL(result, KErrNone);
       
  1011 
       
  1012 	// check that other phonebooks can still be read
       
  1013 	validContactId2 = GetValidUIDFromContactsDbL(KUidIccGlobalAdnPhonebook);
       
  1014 	TESTCHECKCONDITIONL(validContactId2 != KNullContactId);
       
  1015 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId2);
       
  1016 	TESTCHECKL(result, KErrNone);
       
  1017 
       
  1018 	validContactId3 = GetValidUIDFromContactsDbL(KUidIccGlobalSdnPhonebook);
       
  1019 	TESTCHECKCONDITIONL(validContactId3 != KNullContactId);
       
  1020 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId3);
       
  1021 	TESTCHECKL(result, KErrNone);
       
  1022 
       
  1023 	validContactId4 = GetValidUIDFromContactsDbL(KUidIccGlobalLndPhonebook);
       
  1024 	TESTCHECKCONDITIONL(validContactId4 != KNullContactId);
       
  1025 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId4);
       
  1026 	TESTCHECKL(result, KErrNone);
       
  1027 
       
  1028 	validContactId5 = GetValidUIDFromContactsDbL(KUidUsimAppAdnPhonebook);
       
  1029 	TESTCHECKCONDITIONL(validContactId5 != KNullContactId);
       
  1030 	result = iSession.ValidateContact(MContactSynchroniser::ERead, validContactId5);
       
  1031 	TESTCHECKL(result, KErrNone);
       
  1032 	
       
  1033 	return TestStepResult();
       
  1034 	}
       
  1035