--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/test/Te_Sim/Te_SimPhBkPhoneSecurityTest.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,208 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "Te_SimPhBkPhoneSecurityTest.h"
+
+CSimPhBkPhoneSecurityTest::CSimPhBkPhoneSecurityTest()
+ {
+ SetTestStepName(_L("PhoneSecurityTest"));
+ }
+
+TVerdict CSimPhBkPhoneSecurityTest::doTestStepL()
+ {
+ INFO_PRINTF1(_L("BeginPhBkPhoneSecurityTest"));
+
+ CreateConfigFileL(_L("c:\\config3.txt"));
+ SetTestNumberL(0);
+
+ TInt ret = iPhone.Open(iTelServer,KPhoneName);
+ INFO_PRINTF2(_L("Result: %d"),ret);
+ TESTL(ret == KErrNone);
+ INFO_PRINTF1(_L("Opened phone object"));
+ TRequestStatus aReqStatus;
+ TRequestStatus stat0;
+ RMobilePhone::TMobilePhoneLockInfoV1 asyncLockInfo;
+ RMobilePhone::TMobilePhoneLockInfoV1Pckg asyncLockInfoPckg(asyncLockInfo);
+
+ TUint32 secCaps;
+ TUint32 expectedSecCaps = RMobilePhone::KCapsLockPhone | \
+ RMobilePhone::KCapsLockICC | \
+ RMobilePhone::KCapsAccessPin1 | \
+ RMobilePhone::KCapsAccessPin2 | \
+ RMobilePhone::KCapsAccessPhonePassword | \
+ RMobilePhone::KCapsAccessSPC | \
+ RMobilePhone::KCapsAccessHiddenKey | \
+ RMobilePhone::KCapsAccessUSIMAppPin | \
+ RMobilePhone::KCapsAccessUSIMAppSecondPin | \
+ RMobilePhone::KCapsAccessUniversalPin;
+ INFO_PRINTF1(_L("GetSecurityCaps test"));
+ ret=iPhone.GetSecurityCaps(secCaps);
+ CHECKPOINTL(ret, KErrNone, CHP_APPS_CASE("H.1"));
+ TESTL(secCaps == expectedSecCaps);
+
+ RMobilePhone::TMobilePhoneLock whichLock = RMobilePhone::ELockICC;
+ INFO_PRINTF1(_L("GetLockInfo test"));
+ iPhone.GetLockInfo(aReqStatus,whichLock,asyncLockInfoPckg);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINTL(aReqStatus, KErrNone, CHP_APPS_CASE("H.3"));
+ TESTL(asyncLockInfo.iStatus == RMobilePhone::EStatusUnlocked);
+ TESTL(asyncLockInfo.iSetting == RMobilePhone::ELockSetDisabled);
+
+ INFO_PRINTF1(_L("NotifyLockInfoChange test (triggered)"));
+ iPhone.NotifyLockInfoChange(aReqStatus, whichLock,asyncLockInfoPckg);
+ iPhone.SetLockSetting(stat0,whichLock,RMobilePhone::ELockSetEnabled);
+ User::WaitForRequest(stat0);
+ User::WaitForRequest(aReqStatus);
+ TESTL(asyncLockInfo.iStatus == RMobilePhone::EStatusUnlocked);
+ TESTL(asyncLockInfo.iSetting == RMobilePhone::ELockSetEnabled);
+ CHECKPOINT_EXL(stat0==KErrNone, CHP_APPS_CASE("H.6"));
+ CHECKPOINTL(aReqStatus, KErrNone, CHP_APPS_CASE("H.5"));
+
+ INFO_PRINTF1(_L("ChangeSecurityCode test"));
+ RMobilePhone::TMobilePhonePasswordChangeV1 passwordChange;
+ RMobilePhone::TMobilePhonePasswordChangeV1 wrongPasswordChange;
+ passwordChange.iOldPassword = _L("1111");
+ passwordChange.iNewPassword = _L("2222");
+ wrongPasswordChange.iOldPassword = _L("1111111");
+ wrongPasswordChange.iNewPassword = _L("2222");
+
+ RMobilePhone::TMobilePhoneSecurityCode whichCode = RMobilePhone::ESecurityCodePin1;
+
+ iPhone.ChangeSecurityCode(aReqStatus,whichCode,wrongPasswordChange);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINT_EXL(aReqStatus==KErrArgument, CHP_APPS_CASE("H.8"));
+
+ iPhone.ChangeSecurityCode(aReqStatus,whichCode,passwordChange);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINT_EXL(aReqStatus==KErrNone, CHP_APPS_CASE("H.9"));
+
+ RMobilePhone::TMobilePassword code = _L("2222");
+ RMobilePhone::TMobilePassword unblockCode = _L("1111");
+ RMobilePhone::TMobilePhoneSecurityEvent securityEvent;
+
+ iPhone.NotifySecurityEvent(stat0,securityEvent);
+ iPhone.VerifySecurityCode(aReqStatus,whichCode,code,unblockCode);
+ User::WaitForRequest(stat0);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINTL(aReqStatus, KErrNone, CHP_APPS_CASE("H.11"));
+ CHECKPOINTL(stat0, KErrNone, CHP_APPS_CASE("H.10"));
+
+ TESTL(securityEvent == RMobilePhone::EPin1Verified);
+ ret=iPhone.AbortSecurityCode(whichCode);
+ CHECKPOINTL(ret, KErrNone, CHP_APPS_CASE("H.13"));
+
+ // reset initial security code
+ passwordChange.iOldPassword = _L("2222");
+ passwordChange.iNewPassword = _L("1111");
+ iPhone.ChangeSecurityCode(aReqStatus,RMobilePhone::ESecurityCodePin1,passwordChange);
+ User::WaitForRequest(aReqStatus);
+
+
+ INFO_PRINTF1(_L("GetSecurityCodeInfo test"));
+ const TInt testSecurityCodeNr = 4;
+ RMobilePhone::TMobilePhoneSecurityCode testSecurityCode[testSecurityCodeNr]=
+ {
+ RMobilePhone::ESecurityCodePin1,
+ RMobilePhone::ESecurityCodePin2,
+ RMobilePhone::ESecurityCodePuk1,
+ RMobilePhone::ESecurityCodePuk2
+ };
+
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5 securityCodeInfo;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg securityCodeInfoPckg(securityCodeInfo);
+
+ RMobilePhone::TMobilePhoneSecurityCode notifySecurityCode;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5 notifySecurityCodeInfo;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg notifySecurityCodeInfoPckg(notifySecurityCodeInfo);
+ RMobilePhone::TMobilePassword wrongCode = _L("1234");
+ RMobilePhone::TMobilePassword correctCode = _L("1111");
+
+ // check security code supporting GetSecurityCodeInfo
+ for (TInt testSecurityCodeCnt=0; testSecurityCodeCnt<testSecurityCodeNr; testSecurityCodeCnt++)
+ {
+ whichCode = testSecurityCode[testSecurityCodeCnt];
+ notifySecurityCodeInfo.iRemainingEntryAttempts = 0;
+ iPhone.GetSecurityCodeInfo(aReqStatus,whichCode,securityCodeInfoPckg);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINT_EXL(aReqStatus==KErrNone, CHP_APPS_CASE("H.14"));
+ TESTL(securityCodeInfo.iRemainingEntryAttempts == 3);
+ }
+
+ // check security code NOT supporting GetSecurityCodeInfo
+ whichCode = RMobilePhone::ESecurityCodePhonePassword;
+ iPhone.GetSecurityCodeInfo(aReqStatus,whichCode,securityCodeInfoPckg);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINT_EXL(aReqStatus==KErrNotFound, CHP_APPS_CASE("H.14"));
+
+
+ INFO_PRINTF1(_L("NotifySecurityCodeInfoChange test"));
+ // check security code supporting NotifySecurityCodeInfoChange only
+ for (TInt testSecurityCodeCnt=0; testSecurityCodeCnt<testSecurityCodeNr; testSecurityCodeCnt++)
+ {
+ whichCode = testSecurityCode[testSecurityCodeCnt];
+ notifySecurityCodeInfo.iRemainingEntryAttempts = 0;
+ iPhone.NotifySecurityCodeInfoChange(stat0,notifySecurityCode,notifySecurityCodeInfoPckg);
+ iPhone.VerifySecurityCode(aReqStatus,whichCode,wrongCode,wrongCode);
+ User::WaitForRequest(aReqStatus);
+ User::WaitForRequest(stat0);
+ CHECKPOINTL(aReqStatus, KErrArgument, CHP_APPS_CASE("H.15"));
+ TESTL(notifySecurityCode == whichCode);
+ TESTL(notifySecurityCodeInfo.iRemainingEntryAttempts == 2);
+
+ notifySecurityCodeInfo.iRemainingEntryAttempts = 0;
+ iPhone.NotifySecurityCodeInfoChange(stat0,notifySecurityCode,notifySecurityCodeInfoPckg);
+ iPhone.VerifySecurityCode(aReqStatus,whichCode,correctCode,correctCode);
+ User::WaitForRequest(aReqStatus);
+ User::WaitForRequest(stat0);
+ CHECKPOINTL(aReqStatus, KErrNone, CHP_APPS_CASE("H.15"));
+ TESTL(notifySecurityCode == whichCode);
+ TESTL(notifySecurityCodeInfo.iRemainingEntryAttempts == 3);
+ }
+
+ INFO_PRINTF1(_L("Check that security code get blocked"));
+ // block all codes
+ for (TInt testSecurityCodeCnt=0; testSecurityCodeCnt<testSecurityCodeNr; testSecurityCodeCnt++)
+ {
+ whichCode = testSecurityCode[testSecurityCodeCnt];
+ do
+ {
+ iPhone.VerifySecurityCode(aReqStatus,whichCode,wrongCode,wrongCode);
+ User::WaitForRequest(aReqStatus);
+ iPhone.GetSecurityCodeInfo(aReqStatus,whichCode,securityCodeInfoPckg);
+ User::WaitForRequest(aReqStatus);
+ }
+ while (securityCodeInfo.iRemainingEntryAttempts > 0);
+ }
+ // check the corresponding lock is blocked
+ // PIN1 os for ELockICC
+ iPhone.GetLockInfo(aReqStatus,RMobilePhone::ELockICC,asyncLockInfoPckg);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINTL(aReqStatus, KErrNone, CHP_APPS_CASE("H.16"));
+ TESTL(asyncLockInfo.iStatus == RMobilePhone::EStatusBlocked);
+
+ // PIN2 os for ELockPin2
+ iPhone.GetLockInfo(aReqStatus,RMobilePhone::ELockPin2,asyncLockInfoPckg);
+ User::WaitForRequest(aReqStatus);
+ CHECKPOINTL(aReqStatus, KErrNone, CHP_APPS_CASE("H.16"));
+ TESTL(asyncLockInfo.iStatus == RMobilePhone::EStatusBlocked);
+
+ // there is no coresponding lock for PUK1 and PUK2
+
+ iPhone.Close();
+ ASSERT(RThread().RequestCount()==0);
+
+ return TestStepResult();
+ }
+