diff options
Diffstat (limited to 'dom/system/gonk/tests/test_ril_worker_icc_CardLock.js')
-rw-r--r-- | dom/system/gonk/tests/test_ril_worker_icc_CardLock.js | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/dom/system/gonk/tests/test_ril_worker_icc_CardLock.js b/dom/system/gonk/tests/test_ril_worker_icc_CardLock.js new file mode 100644 index 000000000..dc7eb93b9 --- /dev/null +++ b/dom/system/gonk/tests/test_ril_worker_icc_CardLock.js @@ -0,0 +1,282 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this); + +function run_test() { + run_next_test(); +} + +/** + * Verify RIL.iccGetCardLockEnabled + */ +add_test(function test_icc_get_card_lock_enabled() { + let worker = newUint8Worker(); + let context = worker.ContextPool._contexts[0]; + let buf = context.Buf; + let ril = context.RIL; + ril.aid = "123456789"; + + function do_test(aLock) { + const serviceClass = ICC_SERVICE_CLASS_VOICE | + ICC_SERVICE_CLASS_DATA | + ICC_SERVICE_CLASS_FAX; + + buf.sendParcel = function fakeSendParcel() { + // Request Type. + equal(this.readInt32(), REQUEST_QUERY_FACILITY_LOCK) + + // Token : we don't care. + this.readInt32(); + + // Data + let parcel = this.readStringList(); + equal(parcel.length, 4); + equal(parcel[0], GECKO_CARDLOCK_TO_FACILITY[aLock]); + equal(parcel[1], ""); + equal(parcel[2], serviceClass.toString()); + equal(parcel[3], ril.aid); + }; + + ril.iccGetCardLockEnabled({lockType: aLock}); + } + + do_test(GECKO_CARDLOCK_PIN) + do_test(GECKO_CARDLOCK_FDN) + + run_next_test(); +}); + +add_test(function test_path_id_for_spid_and_spn() { + let worker = newWorker({ + postRILMessage: function(data) { + // Do nothing + }, + postMessage: function(message) { + // Do nothing + }}); + let context = worker.ContextPool._contexts[0]; + let RIL = context.RIL; + let ICCFileHelper = context.ICCFileHelper; + + // Test SIM + RIL.appType = CARD_APPTYPE_SIM; + equal(ICCFileHelper.getEFPath(ICC_EF_SPDI), + EF_PATH_MF_SIM + EF_PATH_DF_GSM); + equal(ICCFileHelper.getEFPath(ICC_EF_SPN), + EF_PATH_MF_SIM + EF_PATH_DF_GSM); + + // Test USIM + RIL.appType = CARD_APPTYPE_USIM; + equal(ICCFileHelper.getEFPath(ICC_EF_SPDI), + EF_PATH_MF_SIM + EF_PATH_ADF_USIM); + equal(ICCFileHelper.getEFPath(ICC_EF_SPDI), + EF_PATH_MF_SIM + EF_PATH_ADF_USIM); + run_next_test(); +}); + +/** + * Verify RIL.iccSetCardLockEnabled + */ +add_test(function test_icc_set_card_lock_enabled() { + let worker = newUint8Worker(); + let context = worker.ContextPool._contexts[0]; + let buf = context.Buf; + let ril = context.RIL; + ril.aid = "123456789"; + + function do_test(aLock, aPassword, aEnabled) { + const serviceClass = ICC_SERVICE_CLASS_VOICE | + ICC_SERVICE_CLASS_DATA | + ICC_SERVICE_CLASS_FAX; + + buf.sendParcel = function fakeSendParcel() { + // Request Type. + equal(this.readInt32(), REQUEST_SET_FACILITY_LOCK); + + // Token : we don't care + this.readInt32(); + + // Data + let parcel = this.readStringList(); + equal(parcel.length, 5); + equal(parcel[0], GECKO_CARDLOCK_TO_FACILITY[aLock]); + equal(parcel[1], aEnabled ? "1" : "0"); + equal(parcel[2], aPassword); + equal(parcel[3], serviceClass.toString()); + equal(parcel[4], ril.aid); + }; + + ril.iccSetCardLockEnabled({ + lockType: aLock, + enabled: aEnabled, + password: aPassword}); + } + + do_test(GECKO_CARDLOCK_PIN, "1234", true); + do_test(GECKO_CARDLOCK_PIN, "1234", false); + do_test(GECKO_CARDLOCK_FDN, "4321", true); + do_test(GECKO_CARDLOCK_FDN, "4321", false); + + run_next_test(); +}); + +/** + * Verify RIL.iccChangeCardLockPassword + */ +add_test(function test_icc_change_card_lock_password() { + let worker = newUint8Worker(); + let context = worker.ContextPool._contexts[0]; + let buf = context.Buf; + let ril = context.RIL; + + + function do_test(aLock, aPassword, aNewPassword) { + let GECKO_CARDLOCK_TO_REQUEST = {}; + GECKO_CARDLOCK_TO_REQUEST[GECKO_CARDLOCK_PIN] = REQUEST_CHANGE_SIM_PIN; + GECKO_CARDLOCK_TO_REQUEST[GECKO_CARDLOCK_PIN2] = REQUEST_CHANGE_SIM_PIN2; + + buf.sendParcel = function fakeSendParcel() { + // Request Type. + equal(this.readInt32(), GECKO_CARDLOCK_TO_REQUEST[aLock]); + + // Token : we don't care + this.readInt32(); + + // Data + let parcel = this.readStringList(); + equal(parcel.length, 3); + equal(parcel[0], aPassword); + equal(parcel[1], aNewPassword); + equal(parcel[2], ril.aid); + }; + + ril.iccChangeCardLockPassword({ + lockType: aLock, + password: aPassword, + newPassword: aNewPassword}); + } + + do_test(GECKO_CARDLOCK_PIN, "1234", "4321"); + do_test(GECKO_CARDLOCK_PIN2, "1234", "4321"); + + run_next_test(); +}); + +/** + * Verify RIL.iccUnlockCardLock - PIN + */ +add_test(function test_icc_unlock_card_lock_pin() { + let worker = newUint8Worker(); + let context = worker.ContextPool._contexts[0]; + let ril = context.RIL; + let buf = context.Buf; + ril.aid = "123456789"; + + function do_test(aLock, aPassword) { + let GECKO_CARDLOCK_TO_REQUEST = {}; + GECKO_CARDLOCK_TO_REQUEST[GECKO_CARDLOCK_PIN] = REQUEST_ENTER_SIM_PIN; + GECKO_CARDLOCK_TO_REQUEST[GECKO_CARDLOCK_PIN2] = REQUEST_ENTER_SIM_PIN2; + + buf.sendParcel = function fakeSendParcel() { + // Request Type. + equal(this.readInt32(), GECKO_CARDLOCK_TO_REQUEST[aLock]); + + // Token : we don't care + this.readInt32(); + + // Data + let parcel = this.readStringList(); + equal(parcel.length, 2); + equal(parcel[0], aPassword); + equal(parcel[1], ril.aid); + }; + + ril.iccUnlockCardLock({ + lockType: aLock, + password: aPassword + }); + } + + do_test(GECKO_CARDLOCK_PIN, "1234"); + do_test(GECKO_CARDLOCK_PIN2, "1234"); + + run_next_test(); +}); + +/** + * Verify RIL.iccUnlockCardLock - PUK + */ +add_test(function test_icc_unlock_card_lock_puk() { + let worker = newUint8Worker(); + let context = worker.ContextPool._contexts[0]; + let ril = context.RIL; + let buf = context.Buf; + ril.aid = "123456789"; + + function do_test(aLock, aPassword, aNewPin) { + let GECKO_CARDLOCK_TO_REQUEST = {}; + GECKO_CARDLOCK_TO_REQUEST[GECKO_CARDLOCK_PUK] = REQUEST_ENTER_SIM_PUK; + GECKO_CARDLOCK_TO_REQUEST[GECKO_CARDLOCK_PUK2] = REQUEST_ENTER_SIM_PUK2; + + buf.sendParcel = function fakeSendParcel() { + // Request Type. + equal(this.readInt32(), GECKO_CARDLOCK_TO_REQUEST[aLock]); + + // Token : we don't care + this.readInt32(); + + // Data + let parcel = this.readStringList(); + equal(parcel.length, 3); + equal(parcel[0], aPassword); + equal(parcel[1], aNewPin); + equal(parcel[2], ril.aid); + }; + + ril.iccUnlockCardLock({ + lockType: aLock, + password: aPassword, + newPin: aNewPin + }); + } + + do_test(GECKO_CARDLOCK_PUK, "12345678", "1234"); + do_test(GECKO_CARDLOCK_PUK2, "12345678", "1234"); + + run_next_test(); +}); + +/** + * Verify RIL.iccUnlockCardLock - Depersonalization + */ +add_test(function test_icc_unlock_card_lock_depersonalization() { + let worker = newUint8Worker(); + let context = worker.ContextPool._contexts[0]; + let ril = context.RIL; + let buf = context.Buf; + + function do_test(aPassword) { + buf.sendParcel = function fakeSendParcel() { + // Request Type. + equal(this.readInt32(), REQUEST_ENTER_NETWORK_DEPERSONALIZATION_CODE); + + // Token : we don't care + this.readInt32(); + + // Data + let parcel = this.readStringList(); + equal(parcel.length, 1); + equal(parcel[0], aPassword); + }; + + ril.iccUnlockCardLock({ + lockType: GECKO_CARDLOCK_NCK, + password: aPassword + }); + } + + do_test("12345678"); + + run_next_test(); +}); |