@@ -30,94 +30,162 @@ suite('system/USB Storage', function() {
this.sinon.stub(UsbStorage.prototype, '_usbStorageChanged');
subject = new UsbStorage();
MockSettingsListener.mCallbacks['ums.enabled'](1);
assert.ok(setModeStub.calledWith(subject.automounterDisable));
assert.ok(setModeStub.notCalled);
assert.ok(subject._usbStorageChanged.called);
});
});

suite('configUsbTransfer', function() {
test('calls setMode', function() {
test('doesn\'t call _setMode', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
subject = new UsbStorage();
assert.ok(setModeStub.calledWith(subject.automounterDisable));
assert.ok(setModeStub.notCalled);
});

test('sets ums mode when locked', function() {
test('Leaves UMS disabled when locked', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = true;
subject = new UsbStorage();
subject._protocol = '0';
subject._mode = subject.automounterDisable;
subject._protocol = '0'; // UMS
subject._enabled = true;
subject._configUsbTransfer();
subject._updateMode();
assert.ok(setModeStub.calledWith(subject.automounterDisable));
});

test('sets mtp mode when locked', function() {
test('Enables UMS when unlocked (and previously disabled)', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = false;
subject = new UsbStorage();
subject._mode = subject.automounterDisable;
subject._protocol = '0'; // UMS
subject._enabled = true;
subject._updateMode();
assert.ok(setModeStub.calledWith(subject.automounterUmsEnable));
});

test('Enables UMS when unlocked (and previously disableWhenUnplugged)',
function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = false;
subject = new UsbStorage();
subject._mode = subject.automounterDisableWhenUnplugged;
subject._protocol = '0'; // UMS
subject._enabled = true;
subject._updateMode();
assert.ok(setModeStub.calledWith(subject.automounterUmsEnable));
});

test('If active, set UMS disableWhenUnplugged when locked', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = true;
subject = new UsbStorage();
subject._protocol = '1';
subject._mode = subject.automounterUmsEnable;
subject._protocol = '0'; // UMS
subject._enabled = true;
subject._configUsbTransfer();
assert.ok(setModeStub.calledWith(subject.automounterMtpEnable));
subject._updateMode();
assert.ok(setModeStub.calledWith(
subject.automounterDisableWhenUnplugged));
});

test('If active, set UMS disableWhenUnplugged when user disables',
function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = false;
subject = new UsbStorage();
subject._mode = subject.automounterUmsEnable;
subject._protocol = '0'; // UMS
subject._enabled = false;
subject._updateMode();
assert.ok(setModeStub.calledWith(
subject.automounterDisableWhenUnplugged));
});

test('Leaves MTP disabled when locked', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = true;
subject = new UsbStorage();
subject._mode = subject.automounterDisable;
subject._protocol = '1'; // MTP
subject._enabled = true;
subject._updateMode();
assert.ok(setModeStub.calledWith(subject.automounterDisable));
});

test('sets current mtp mode', function() {
test('Enables MTP when unlocked (and previously disabled)', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = false;
subject = new UsbStorage();
subject._protocol = '1';
subject._mode = subject.automounterDisable;
subject._protocol = '1'; // MTP
subject._enabled = true;
subject._configUsbTransfer();
subject._updateMode();
assert.ok(setModeStub.calledWith(subject.automounterMtpEnable));
});

test('sets current ums mode', function() {
test('Enables MTP when unlocked (and previously disableWhenUnplugged)',
function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = false;
subject = new UsbStorage();
subject._protocol = '0';
subject._mode = subject.automounterDisableWhenUnplugged;
subject._protocol = '1'; // MTP
subject._enabled = true;
subject._configUsbTransfer();
assert.ok(setModeStub.calledWith(subject.automounterUmsEnable));
subject._updateMode();
assert.ok(setModeStub.calledWith(subject.automounterMtpEnable));
});
});

suite('modeMapping', function() {
test('return values', function() {
assert.equal(subject._modeMapping(false, '0'), 0);
assert.equal(subject._modeMapping(false, '1'), 0);
assert.equal(subject._modeMapping(true, '0'), 1);
assert.equal(subject._modeMapping(true, '1'), 3);
test('If active, set MTP disableWhenUnplugged when locked', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = true;
subject = new UsbStorage();
subject._mode = subject.automounterMtpEnable;
subject._protocol = '1'; // MTP
subject._enabled = true;
subject._updateMode();
assert.ok(setModeStub.calledWith(
subject.automounterDisableWhenUnplugged));
});
});

suite('setMode', function() {
test('sets umsMode', function() {
MockSettingsListener.getSettingsLock().clear();
subject._setMode(1);
var lock = MockSettingsListener.getSettingsLock().locks[0];
assert.equal(lock['ums.mode'], 1);
test('If active, set MTP disabled when user disables', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = false;
subject = new UsbStorage();
subject._mode = subject.automounterMtpEnable;
subject._protocol = '1'; // MTP
subject._enabled = false;
subject._updateMode();
assert.ok(setModeStub.calledWith(subject.automounterDisable));
});
});

suite('handleEvent', function() {
test('lock calls setMode', function() {
test('lock calls _setMode', function() {
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = true;
subject = new UsbStorage();
subject._mode = subject.automounterUmsEnable;
subject._protocol = '0'; // UMS
subject._enabled = true;
subject.handleEvent({
type: 'lockscreen-appopened'
});
assert.ok(setModeStub.calledWith(2));
assert.ok(setModeStub.calledWith(
subject.automounterDisableWhenUnplugged));
});

test('unlock calls setMode', function() {
test('unlock calls _setMode', function() {
// Not a real value, but tests that it passes through
subject._mode = 3;
var setModeStub = this.sinon.stub(UsbStorage.prototype, '_setMode');
window.Service.locked = false;
subject = new UsbStorage();
subject._mode = subject.automounterDisableWhenUnplugged;
subject._protocol = '0'; // UMS
subject._enabled = true;
subject.handleEvent({
type: 'lockscreen-appclosed'
});
assert.ok(setModeStub.calledWith(3));
assert.ok(setModeStub.calledWith(subject.automounterUmsEnable));
});
});
});