Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
689 lines
26 KiB
JavaScript
Executable file
689 lines
26 KiB
JavaScript
Executable file
/* global UIManager, SimManager, MobileOperator, MocksHelper,
|
|
MockNavigatorMozIccManager, MockNavigatorMozMobileConnections,
|
|
Navigation, MockL10n */
|
|
|
|
'use strict';
|
|
|
|
require('/shared/test/unit/mocks/mock_navigator_moz_mobile_connections.js');
|
|
require('/shared/test/unit/mocks/mock_navigator_moz_icc_manager.js');
|
|
require('/shared/test/unit/mocks/mock_mobile_operator.js');
|
|
requireApp('ftu/test/unit/mock_ui_manager.js');
|
|
require('/shared/test/unit/mocks/mock_l10n.js');
|
|
|
|
requireApp('ftu/js/sim_manager.js');
|
|
requireApp('ftu/js/navigation.js');
|
|
|
|
require('/shared/test/unit/load_body_html_helper.js');
|
|
|
|
var mocksHelperForSimManager = new MocksHelper([
|
|
'UIManager',
|
|
'MobileOperator'
|
|
]).init();
|
|
|
|
suite('sim mgmt >', function() {
|
|
var realL10n,
|
|
realMozIccManager,
|
|
realMozMobileConnections;
|
|
var navigationStub,
|
|
iccId0,
|
|
iccInfo0,
|
|
req,
|
|
getCardLockRetryCountStub;
|
|
var l10nAttrs;
|
|
|
|
var setupRetryCount = function() {
|
|
req = { result: { retryCount: 3 } };
|
|
getCardLockRetryCountStub = sinon.stub(iccInfo0, 'getCardLockRetryCount',
|
|
function() {
|
|
return req;
|
|
});
|
|
};
|
|
|
|
var fireRetryCountCallback = function() {
|
|
req.onsuccess && req.onsuccess();
|
|
};
|
|
|
|
var teardownRetryCount = function() {
|
|
getCardLockRetryCountStub.restore();
|
|
};
|
|
|
|
mocksHelperForSimManager.attachTestHelpers();
|
|
|
|
suiteSetup(function() {
|
|
loadBodyHTML('/index.html');
|
|
|
|
realMozIccManager = navigator.mozIccManager;
|
|
navigator.mozIccManager = MockNavigatorMozIccManager;
|
|
|
|
realMozMobileConnections = navigator.mozMobileConnections;
|
|
MockNavigatorMozMobileConnections[0].iccId =
|
|
navigator.mozIccManager.iccIds[0];
|
|
navigator.mozMobileConnections = MockNavigatorMozMobileConnections;
|
|
|
|
realL10n = document.l10n;
|
|
document.l10n = MockL10n;
|
|
|
|
iccId0 = navigator.mozIccManager.iccIds[0];
|
|
iccInfo0 = navigator.mozIccManager.getIccById(iccId0);
|
|
});
|
|
|
|
setup(function() {
|
|
SimManager.init();
|
|
|
|
UIManager.activationScreen.classList.remove('show');
|
|
UIManager.unlockSimScreen.classList.add('show');
|
|
|
|
setupRetryCount();
|
|
});
|
|
|
|
teardown(function() {
|
|
teardownRetryCount();
|
|
});
|
|
|
|
suiteTeardown(function() {
|
|
document.body.innerHTML = '';
|
|
|
|
navigator.mozMobileConnections = realMozMobileConnections;
|
|
realMozMobileConnections = null;
|
|
|
|
navigator.mozIccManager = realMozIccManager;
|
|
realMozIccManager = null;
|
|
|
|
document.l10n = realL10n;
|
|
realL10n = null;
|
|
});
|
|
|
|
test('"Skip" hides the screen', function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
SimManager.handleCardState();
|
|
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(getCardLockRetryCountStub.calledOnce);
|
|
|
|
SimManager.skip();
|
|
assert.isTrue(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
});
|
|
|
|
test('"Back" hides the screen', function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
SimManager.handleCardState();
|
|
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
|
|
navigationStub = sinon.stub(Navigation, 'back');
|
|
SimManager.back();
|
|
assert.ok(navigationStub.calledOnce);
|
|
assert.isTrue(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
navigationStub.restore();
|
|
});
|
|
|
|
suite('Handle state changes', function() {
|
|
|
|
setup(function() {
|
|
UIManager.unlockSimScreen.classList.remove('show');
|
|
});
|
|
|
|
test('pinRequired shows PIN screen', function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
SimManager.handleCardState();
|
|
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
|
|
assert.isTrue(UIManager.pincodeScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.pukcodeScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.xckcodeScreen.classList.contains('show'));
|
|
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(getCardLockRetryCountStub.calledOnce);
|
|
});
|
|
|
|
test('pukRequired shows PUK screen', function() {
|
|
iccInfo0.cardState = 'pukRequired';
|
|
SimManager.handleCardState();
|
|
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.equal(UIManager.pinLabel.getAttribute('data-l10n-id'), 'type_pin');
|
|
|
|
assert.isFalse(UIManager.pincodeScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.pukcodeScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.xckcodeScreen.classList.contains('show'));
|
|
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(getCardLockRetryCountStub.calledOnce);
|
|
});
|
|
|
|
test('networkLocked shows XCK screen', function() {
|
|
iccInfo0.cardState = 'networkLocked';
|
|
SimManager.handleCardState();
|
|
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
|
|
assert.isFalse(UIManager.pincodeScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.pukcodeScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.xckcodeScreen.classList.contains('show'));
|
|
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(getCardLockRetryCountStub.calledOnce);
|
|
});
|
|
});
|
|
|
|
suite('Handle state changes DSDS', function() {
|
|
var iccId1;
|
|
var iccInfo1;
|
|
|
|
suiteSetup(function() {
|
|
iccId1 = '98765';
|
|
navigator.mozIccManager.addIcc(iccId1);
|
|
iccInfo1 = navigator.mozIccManager.getIccById(iccId1);
|
|
navigator.mozMobileConnections.mAddMobileConnection();
|
|
navigator.mozMobileConnections[1].iccId = iccId1;
|
|
navigator.mozMobileConnections[1].iccInfo = iccInfo1;
|
|
|
|
SimManager.updateIccState(iccId1);
|
|
SimManager.simSlots = 2;
|
|
});
|
|
|
|
suiteTeardown(function() {
|
|
navigator.mozIccManager.removeIcc(iccId1);
|
|
navigator.mozMobileConnections.mRemoveMobileConnection(1);
|
|
SimManager.simSlots = 1;
|
|
SimManager.icc1 = null;
|
|
});
|
|
|
|
test('pinRequired DSDS screen', function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
iccInfo1.cardState = 'pinRequired';
|
|
SimManager.handleCardState();
|
|
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
l10nAttrs = document.l10n.getAttributes(UIManager.pinLabel);
|
|
assert.equal(l10nAttrs.id, 'pincodeLabel');
|
|
assert.deepEqual(l10nAttrs.args, {n: 1});
|
|
|
|
fireRetryCountCallback();
|
|
assert.isTrue(getCardLockRetryCountStub.calledOnce);
|
|
assert.isFalse(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
|
|
SimManager.skip();
|
|
l10nAttrs = document.l10n.getAttributes(UIManager.pinLabel);
|
|
assert.equal(l10nAttrs.id, 'pincodeLabel');
|
|
assert.deepEqual(l10nAttrs.args, {n: 2});
|
|
assert.isTrue(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
});
|
|
|
|
test('pukRequired DSDS screen', function() {
|
|
iccInfo0.cardState = 'pukRequired';
|
|
iccInfo1.cardState = 'pukRequired';
|
|
SimManager.handleCardState();
|
|
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
l10nAttrs = document.l10n.getAttributes(UIManager.pukLabel);
|
|
assert.equal(l10nAttrs.id, 'pukcodeLabel');
|
|
assert.deepEqual(l10nAttrs.args, {n: 1});
|
|
|
|
fireRetryCountCallback();
|
|
assert.isTrue(getCardLockRetryCountStub.calledOnce);
|
|
assert.isFalse(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
|
|
SimManager.skip();
|
|
l10nAttrs = document.l10n.getAttributes(UIManager.pukLabel);
|
|
assert.equal(l10nAttrs.id, 'pukcodeLabel');
|
|
assert.deepEqual(l10nAttrs.args, {n: 2});
|
|
assert.isTrue(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
});
|
|
|
|
test('xckRequired DSDS screen', function() {
|
|
iccInfo0.cardState = 'networkLocked';
|
|
iccInfo1.cardState = 'networkLocked';
|
|
SimManager.handleCardState();
|
|
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
l10nAttrs = document.l10n.getAttributes(UIManager.xckLabel);
|
|
assert.equal(l10nAttrs.id, 'nckcodeLabel');
|
|
assert.deepEqual(l10nAttrs.args, {n: 1});
|
|
|
|
fireRetryCountCallback();
|
|
assert.isTrue(getCardLockRetryCountStub.calledOnce);
|
|
assert.isFalse(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
|
|
SimManager.skip();
|
|
l10nAttrs = document.l10n.getAttributes(UIManager.xckLabel);
|
|
assert.equal(l10nAttrs.id, 'nckcodeLabel');
|
|
assert.deepEqual(l10nAttrs.args, {n: 2});
|
|
assert.isTrue(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
});
|
|
});
|
|
|
|
suite('Unlocking', function() {
|
|
|
|
suite('PIN unlock ', function() {
|
|
setup(function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
SimManager.resetForm();
|
|
SimManager.handleCardState();
|
|
// start from original state each test
|
|
UIManager.pinInput.classList.remove('onerror');
|
|
UIManager.pinError.classList.add('hidden');
|
|
UIManager.pinRetriesLeft.classList.add('hidden');
|
|
});
|
|
|
|
suite('Unlock button > ', function() {
|
|
teardown(function() {
|
|
UIManager.pinInput.value = '';
|
|
});
|
|
test('should be disabled by default', function() {
|
|
assert.isTrue(UIManager.unlockSimButton.disabled);
|
|
});
|
|
|
|
test('should be disabled with short PIN', function() {
|
|
UIManager.pinInput.value = 123;
|
|
UIManager.pinInput.dispatchEvent(new CustomEvent('input'));
|
|
assert.isTrue(UIManager.unlockSimButton.disabled);
|
|
});
|
|
|
|
test('should be enabled with proper size PIN', function() {
|
|
UIManager.pinInput.value = 1234;
|
|
UIManager.pinInput.dispatchEvent(new CustomEvent('input'));
|
|
assert.isFalse(UIManager.unlockSimButton.disabled);
|
|
});
|
|
});
|
|
|
|
test('too short PIN', function() {
|
|
UIManager.pinInput.value = 123;
|
|
SimManager.unlock();
|
|
assert.isTrue(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.pinInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.pinError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('too long PIN', function() {
|
|
UIManager.pinInput.value = 123456789;
|
|
SimManager.unlock();
|
|
assert.isTrue(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.pinInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.pinError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('wrong sim pin with > 1 retries', function() {
|
|
SimManager.icc0.mozIcc.retryCount = 2;
|
|
UIManager.pinInput.value = '0000'; // special failure pin value
|
|
SimManager.unlock();
|
|
assert.isFalse(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.pinInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.pinError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
assert.isFalse(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.pinError.querySelector('.lastchance')
|
|
.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.pinError.querySelector('.main')
|
|
.classList.contains('hidden'));
|
|
});
|
|
test('wrong sim pin with exactly 1 retry', function() {
|
|
SimManager.icc0.mozIcc.retryCount = 1;
|
|
UIManager.pinInput.value = '0000'; // special failure pin value
|
|
SimManager.unlock();
|
|
assert.isFalse(UIManager.pinError.querySelector('.lastchance')
|
|
.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.pinError.querySelector('.main')
|
|
.classList.contains('hidden'));
|
|
});
|
|
test('all fields correct', function() {
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
UIManager.pinInput.value = 1234;
|
|
SimManager.unlock();
|
|
assert.isTrue(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.pinInput.classList.contains('onerror'));
|
|
assert.isTrue(UIManager.pinError.classList.contains('hidden'));
|
|
assert.isTrue(SimManager.icc0.unlocked);
|
|
assert.isTrue(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.unlockSimScreen.classList.contains('show'));
|
|
});
|
|
});
|
|
|
|
suite('PUK unlock ', function() {
|
|
setup(function() {
|
|
iccInfo0.cardState = 'pukRequired';
|
|
SimManager.resetForm();
|
|
SimManager.handleCardState();
|
|
// start from original state each test
|
|
UIManager.pukInput.classList.remove('onerror');
|
|
UIManager.pukError.classList.add('hidden');
|
|
UIManager.pukRetriesLeft.classList.add('hidden');
|
|
});
|
|
|
|
test('wrong length PUK', function() {
|
|
UIManager.pukInput.value = 123;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.pukInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.pukError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('too short newPIN', function() {
|
|
UIManager.pukInput.value = 12345678;
|
|
UIManager.newpinInput.value = 123;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.newpinInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.newpinError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('too long newPIN', function() {
|
|
UIManager.pukInput.value = 12345678;
|
|
UIManager.newpinInput.value = 123456789;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.newpinInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.newpinError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('different PIN and confirm PIN', function() {
|
|
UIManager.pukInput.value = 12345678;
|
|
UIManager.newpinInput.value = 1234;
|
|
UIManager.confirmNewpinInput.value = 4321;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.newpinInput.classList.contains('onerror'));
|
|
assert.isTrue(UIManager.confirmNewpinInput.classList.contains(
|
|
'onerror'));
|
|
assert.isFalse(UIManager.confirmNewpinError.classList.contains(
|
|
'hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('wrong sim puk with > 1 retries', function() {
|
|
SimManager.icc0.mozIcc.retryCount = 2;
|
|
UIManager.pukInput.value = '00000000'; // special failure pin value
|
|
UIManager.newpinInput.value = 1234;
|
|
UIManager.confirmNewpinInput.value = 1234;
|
|
SimManager.unlock();
|
|
assert.isFalse(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.pukInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.pukError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
assert.isFalse(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.pukError.querySelector('.lastchance')
|
|
.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.pukError.querySelector('.main')
|
|
.classList.contains('hidden'));
|
|
});
|
|
test('wrong sim puk with exactly 1 retry', function() {
|
|
SimManager.icc0.mozIcc.retryCount = 1;
|
|
UIManager.pukInput.value = '00000000'; // special failure pin value
|
|
UIManager.newpinInput.value = 1234;
|
|
UIManager.confirmNewpinInput.value = 1234;
|
|
SimManager.unlock();
|
|
assert.isFalse(UIManager.pukError.querySelector('.lastchance')
|
|
.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.pukError.querySelector('.main')
|
|
.classList.contains('hidden'));
|
|
});
|
|
test('all fields correct', function() {
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
UIManager.pukInput.value = 12345678;
|
|
UIManager.newpinInput.value = 1234;
|
|
UIManager.confirmNewpinInput.value = 1234;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.pukRetriesLeft.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.pukInput.classList.contains('onerror'));
|
|
assert.isTrue(UIManager.pukError.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.newpinInput.classList.contains('onerror'));
|
|
assert.isTrue(UIManager.newpinError.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.confirmNewpinInput.classList.contains(
|
|
'onerror'));
|
|
assert.isTrue(UIManager.confirmNewpinError.classList.contains(
|
|
'hidden'));
|
|
assert.isTrue(SimManager.icc0.unlocked);
|
|
assert.isTrue(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.unlockSimScreen.classList.contains('show'));
|
|
});
|
|
});
|
|
|
|
suite('XCK unlock ', function() {
|
|
setup(function() {
|
|
iccInfo0.cardState = 'networkLocked';
|
|
SimManager.resetForm();
|
|
SimManager.handleCardState();
|
|
// start from original state each test
|
|
UIManager.xckInput.classList.remove('onerror');
|
|
UIManager.xckError.classList.add('hidden');
|
|
UIManager.xckRetriesLeft.classList.add('hidden');
|
|
});
|
|
|
|
test('too short XCK', function() {
|
|
UIManager.xckInput.value = 1234567;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.xckInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.xckError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('too long XCK', function() {
|
|
UIManager.xckInput.value = 12345678901234567;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.xckInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.xckError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
});
|
|
test('wrong sim XCK with > 1 retries', function() {
|
|
SimManager.icc0.mozIcc.retryCount = 2;
|
|
UIManager.xckInput.value = '00000000'; // special failure pin value
|
|
SimManager.unlock();
|
|
assert.isFalse(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.xckInput.classList.contains('onerror'));
|
|
assert.isFalse(UIManager.xckError.classList.contains('hidden'));
|
|
assert.isFalse(SimManager.icc0.unlocked);
|
|
assert.isFalse(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.xckError.querySelector('.lastchance')
|
|
.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.xckError.querySelector('.main')
|
|
.classList.contains('hidden'));
|
|
});
|
|
test('wrong sim XCK with exactly 1 retry', function() {
|
|
SimManager.icc0.mozIcc.retryCount = 1;
|
|
UIManager.xckInput.value = '00000000'; // special failure pin value
|
|
SimManager.unlock();
|
|
assert.isFalse(UIManager.xckError.querySelector('.lastchance')
|
|
.classList.contains('hidden'));
|
|
assert.isTrue(UIManager.xckError.querySelector('.main')
|
|
.classList.contains('hidden'));
|
|
});
|
|
test('all fields correct', function() {
|
|
fireRetryCountCallback();
|
|
assert.isFalse(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
UIManager.xckInput.value = 12345678;
|
|
SimManager.unlock();
|
|
|
|
assert.isTrue(UIManager.xckRetriesLeft.classList.contains('hidden'));
|
|
assert.isFalse(UIManager.xckInput.classList.contains('onerror'));
|
|
assert.isTrue(UIManager.xckError.classList.contains('hidden'));
|
|
assert.isTrue(SimManager.icc0.unlocked);
|
|
assert.isTrue(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.unlockSimScreen.classList.contains('show'));
|
|
});
|
|
});
|
|
});
|
|
|
|
suite('No Telephony', function() {
|
|
var realMozMobileConnections;
|
|
|
|
setup(function() {
|
|
realMozMobileConnections = navigator.mozMobileConnections;
|
|
// no telephony API
|
|
navigator.mozMobileConnections = null;
|
|
|
|
SimManager.init();
|
|
});
|
|
|
|
teardown(function() {
|
|
navigator.mozMobileConnections = realMozMobileConnections;
|
|
realMozMobileConnections = null;
|
|
});
|
|
|
|
test('hide sim import section', function() {
|
|
SimManager.skip();
|
|
assert.isFalse(UIManager.simImport.classList.contains('show'));
|
|
});
|
|
});
|
|
|
|
suite('Operator', function() {
|
|
setup(function() {
|
|
iccInfo0.cardState = 'ready';
|
|
MobileOperator.mOperator = '';
|
|
SimManager.updateSIMInfoText(SimManager.icc0);
|
|
});
|
|
|
|
test('should read locked state', function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
SimManager.updateSIMInfoText(SimManager.icc0);
|
|
|
|
assert.equal('simPinLocked',
|
|
UIManager.simCarrier1.getAttribute('data-l10n-id'));
|
|
});
|
|
|
|
test('should read no operator when unlocked', function() {
|
|
assert.equal(UIManager.simCarrier1.getAttribute('data-l10n-id'),
|
|
'searchingOperator');
|
|
});
|
|
|
|
test('should update the operator on voicechange', function() {
|
|
MobileOperator.mOperator = 'Fake Operator';
|
|
MockNavigatorMozMobileConnections[0].triggerEventListeners('voicechange');
|
|
|
|
assert.equal('Fake Operator', UIManager.simCarrier1.textContent);
|
|
});
|
|
|
|
test('should have 1 event listener per ICC', function() {
|
|
SimManager.updateSIMInfoText(SimManager.icc0);
|
|
SimManager.updateSIMInfoText(SimManager.icc0);
|
|
|
|
assert.equal(1, SimManager.voiceChangeListeners.length);
|
|
});
|
|
});
|
|
|
|
suite('SIM2 inserted >', function() {
|
|
var iccId1;
|
|
var iccInfo1;
|
|
var realIccId0;
|
|
|
|
setup(function() {
|
|
iccId1 = '98765';
|
|
navigator.mozIccManager.addIcc(iccId1);
|
|
iccInfo1 = navigator.mozIccManager.getIccById(iccId1);
|
|
navigator.mozMobileConnections.mAddMobileConnection();
|
|
navigator.mozMobileConnections[1].iccId = iccId1;
|
|
navigator.mozMobileConnections[1].iccInfo = iccInfo1;
|
|
|
|
SimManager.updateIccState(iccId1);
|
|
SimManager.simSlots = 2;
|
|
|
|
realIccId0 = SimManager.icc0;
|
|
SimManager.icc0 = null;
|
|
|
|
this.sinon.stub(Navigation, 'back');
|
|
});
|
|
|
|
teardown(function() {
|
|
navigator.mozIccManager.removeIcc(iccId1);
|
|
navigator.mozMobileConnections.mRemoveMobileConnection(1);
|
|
SimManager.simSlots = 1;
|
|
SimManager.icc1 = null;
|
|
SimManager.icc0 = realIccId0;
|
|
});
|
|
|
|
test('"simUnlockBack" hides the screen', function() {
|
|
iccInfo1.cardState = 'pinRequired';
|
|
SimManager.handleCardState();
|
|
|
|
SimManager.simUnlockBack();
|
|
assert.ok(Navigation.back.calledOnce);
|
|
assert.isTrue(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isFalse(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.pinRetriesLeft.classList.contains('hidden'));
|
|
});
|
|
});
|
|
|
|
suite('SIM1 and SIM2 inserted >', function() {
|
|
var iccId1;
|
|
var iccInfo1;
|
|
|
|
setup(function() {
|
|
iccId1 = '98765';
|
|
navigator.mozIccManager.addIcc(iccId1);
|
|
iccInfo1 = navigator.mozIccManager.getIccById(iccId1);
|
|
navigator.mozMobileConnections.mAddMobileConnection();
|
|
navigator.mozMobileConnections[1].iccId = iccId1;
|
|
navigator.mozMobileConnections[1].iccInfo = iccInfo1;
|
|
SimManager.updateIccState(iccId1);
|
|
|
|
SimManager.simSlots = 2;
|
|
|
|
this.sinon.spy(SimManager, 'skip');
|
|
this.sinon.spy(Navigation, 'back');
|
|
});
|
|
|
|
teardown(function() {
|
|
navigator.mozIccManager.removeIcc(iccId1);
|
|
navigator.mozMobileConnections.mRemoveMobileConnection(1);
|
|
SimManager.simSlots = 1;
|
|
SimManager.icc1 = null;
|
|
});
|
|
|
|
test('if SIM1 is skipped, SIM2 screen should be shown', function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
iccInfo1.cardState = 'pinRequired';
|
|
SimManager.handleCardState();
|
|
|
|
SimManager.skip();
|
|
assert.ok(SimManager.skip.calledOnce);
|
|
assert.isFalse(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.equal(UIManager.pinLabel.getAttribute('data-l10n-args'),
|
|
'{"n":2}');
|
|
});
|
|
|
|
test('SIM1 is skipped and user go back', function() {
|
|
iccInfo0.cardState = 'pinRequired';
|
|
iccInfo1.cardState = 'pinRequired';
|
|
SimManager.handleCardState();
|
|
|
|
SimManager.skip();
|
|
assert.ok(SimManager.skip.calledOnce);
|
|
assert.isFalse(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.equal(UIManager.pinLabel.getAttribute('data-l10n-args'),
|
|
'{"n":2}');
|
|
SimManager.icc0.skipped = true;
|
|
|
|
SimManager.simUnlockBack();
|
|
assert.isFalse(Navigation.back.calledOnce);
|
|
assert.isFalse(UIManager.activationScreen.classList.contains('show'));
|
|
assert.isTrue(UIManager.unlockSimScreen.classList.contains('show'));
|
|
assert.equal(UIManager.pinLabel.getAttribute('data-l10n-args'),
|
|
'{"n":1}');
|
|
});
|
|
});
|
|
|
|
|
|
});
|