Commit 251b6cf4 authored by Scott Chen's avatar Scott Chen Committed by Commit Bot

MD Extensions: add some tests for kiosk mode

Bug: 801755
Change-Id: Ia22d9182283ae16abb6f73f602371b914b060a2e
Reviewed-on: https://chromium-review.googlesource.com/872200Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Commit-Queue: Scott Chen <scottchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#530637}
parent 673c6cda
...@@ -38,6 +38,7 @@ var CrExtensionsBrowserTest = class extends PolymerTest { ...@@ -38,6 +38,7 @@ var CrExtensionsBrowserTest = class extends PolymerTest {
'../../../../../ui/webui/resources/js/promise_resolver.js', '../../../../../ui/webui/resources/js/promise_resolver.js',
'../../../../../ui/webui/resources/js/webui_resource_test.js', '../../../../../ui/webui/resources/js/webui_resource_test.js',
'../fake_chrome_event.js', '../fake_chrome_event.js',
'../settings/test_util.js',
'../test_browser_proxy.js', '../test_browser_proxy.js',
'test_service.js', 'test_service.js',
]); ]);
...@@ -130,6 +131,12 @@ TEST_F('CrExtensionsToolbarTest', 'ClickHandlers', function() { ...@@ -130,6 +131,12 @@ TEST_F('CrExtensionsToolbarTest', 'ClickHandlers', function() {
this.runMochaTest(extension_toolbar_tests.TestNames.ClickHandlers); this.runMochaTest(extension_toolbar_tests.TestNames.ClickHandlers);
}); });
GEN('#if defined(OS_CHROMEOS)');
TEST_F('CrExtensionsToolbarTest', 'KioskMode', function() {
this.runMochaTest(extension_toolbar_tests.TestNames.KioskMode);
});
GEN('#endif');
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Extension Item Tests // Extension Item Tests
...@@ -316,6 +323,7 @@ var CrExtensionsManagerUnitTest = class extends CrExtensionsBrowserTest { ...@@ -316,6 +323,7 @@ var CrExtensionsManagerUnitTest = class extends CrExtensionsBrowserTest {
/** @override */ /** @override */
get extraLibraries() { get extraLibraries() {
return super.extraLibraries.concat([ return super.extraLibraries.concat([
'test_kiosk_browser_proxy.js',
'extension_manager_unit_test.js', 'extension_manager_unit_test.js',
]); ]);
} }
...@@ -354,6 +362,12 @@ TEST_F('CrExtensionsManagerUnitTest', 'EnableAndDisable', function() { ...@@ -354,6 +362,12 @@ TEST_F('CrExtensionsManagerUnitTest', 'EnableAndDisable', function() {
this.runMochaTest(extension_manager_tests.TestNames.EnableAndDisable); this.runMochaTest(extension_manager_tests.TestNames.EnableAndDisable);
}); });
GEN('#if defined(OS_CHROMEOS)');
TEST_F('CrExtensionsManagerUnitTest', 'KioskMode', function() {
this.runMochaTest(extension_manager_tests.TestNames.KioskMode);
});
GEN('#endif');
var CrExtensionsManagerTestWithMultipleExtensionTypesInstalled = var CrExtensionsManagerTestWithMultipleExtensionTypesInstalled =
class extends CrExtensionsBrowserTest { class extends CrExtensionsBrowserTest {
...@@ -687,7 +701,6 @@ var CrExtensionsToggleRowTest = class extends CrExtensionsBrowserTest { ...@@ -687,7 +701,6 @@ var CrExtensionsToggleRowTest = class extends CrExtensionsBrowserTest {
/** @override */ /** @override */
get extraLibraries() { get extraLibraries() {
return super.extraLibraries.concat([ return super.extraLibraries.concat([
'../settings/test_util.js',
'toggle_row_test.js', 'toggle_row_test.js',
]); ]);
} }
...@@ -696,3 +709,33 @@ var CrExtensionsToggleRowTest = class extends CrExtensionsBrowserTest { ...@@ -696,3 +709,33 @@ var CrExtensionsToggleRowTest = class extends CrExtensionsBrowserTest {
TEST_F('CrExtensionsToggleRowTest', 'ToggleRowTest', function() { TEST_F('CrExtensionsToggleRowTest', 'ToggleRowTest', function() {
mocha.run(); mocha.run();
}); });
////////////////////////////////////////////////////////////////////////////////
// kiosk mode tests.
GEN('#if defined(OS_CHROMEOS)');
var CrExtensionsKioskModeTest = class extends CrExtensionsBrowserTest {
/** @override */
get browsePreload() {
return 'chrome://extensions/kiosk_dialog.html';
}
/** @override */
get extraLibraries() {
return super.extraLibraries.concat([
'test_kiosk_browser_proxy.js',
'extension_kiosk_mode_test.js',
]);
}
/** @override */
get suiteName() {
return extension_kiosk_mode_tests.suiteName;
}
};
TEST_F('CrExtensionsKioskModeTest', 'AddButton', function() {
this.runMochaTest(extension_kiosk_mode_tests.TestNames.AddButton);
});
GEN('#endif');
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** @fileoverview Suite of tests for extension-kiosk-dialog. */
cr.define('extension_kiosk_mode_tests', function() {
/** @enum {string} */
let TestNames = {
AddButton: 'AddButton',
};
let suiteName = 'kioskModeTests';
suite(suiteName, function() {
let browserProxy = null;
let dialog = null;
setup(function() {
PolymerTest.clearBody();
browserProxy = new TestKioskBrowserProxy();
extensions.KioskBrowserProxyImpl.instance_ = browserProxy;
dialog = document.createElement('extensions-kiosk-dialog');
document.body.appendChild(dialog);
Polymer.dom.flush();
});
test(assert(TestNames.AddButton), function() {
const addButton = dialog.$['add-button'];
expectTrue(!!addButton);
expectTrue(addButton.disabled);
const addInput = dialog.$['add-input'];
addInput.value = 'blah';
expectFalse(addButton.disabled);
MockInteractions.tap(addButton);
return browserProxy.whenCalled('addKioskApp').then(appId => {
expectEquals(appId, 'blah');
});
});
});
return {
suiteName: suiteName,
TestNames: TestNames,
};
});
...@@ -15,6 +15,7 @@ cr.define('extension_manager_tests', function() { ...@@ -15,6 +15,7 @@ cr.define('extension_manager_tests', function() {
Uninstall: 'uninstall', Uninstall: 'uninstall',
UninstallFromDetails: 'uninstall while in details view', UninstallFromDetails: 'uninstall while in details view',
UpdateItemData: 'update item data', UpdateItemData: 'update item data',
KioskMode: 'kiosk mode',
}; };
var suiteName = 'ExtensionManagerUnitTest'; var suiteName = 'ExtensionManagerUnitTest';
...@@ -26,7 +27,15 @@ cr.define('extension_manager_tests', function() { ...@@ -26,7 +27,15 @@ cr.define('extension_manager_tests', function() {
/** @type {TestService} */ /** @type {TestService} */
let service; let service;
/** @type {extensions.KioskBrowserProxy} */
let browserProxy;
setup(function() { setup(function() {
if (cr.isChromeOS) {
browserProxy = new TestKioskBrowserProxy();
extensions.KioskBrowserProxyImpl.instance_ = browserProxy;
}
PolymerTest.clearBody(); PolymerTest.clearBody();
service = new extensions.TestService(); service = new extensions.TestService();
...@@ -281,6 +290,20 @@ cr.define('extension_manager_tests', function() { ...@@ -281,6 +290,20 @@ cr.define('extension_manager_tests', function() {
}); });
expectEquals(ExtensionState.ENABLED, manager.extensions_[0].state); expectEquals(ExtensionState.ENABLED, manager.extensions_[0].state);
}); });
if (cr.isChromeOS) {
test(assert(TestNames.KioskMode), function() {
expectFalse(!!manager.$$('extensions-kiosk-dialog'));
return browserProxy.whenCalled('initializeKioskAppSettings')
.then(() => {
expectTrue(manager.$$('extensions-toolbar').kioskEnabled);
manager.$$('extensions-toolbar').fire('kiosk-tap');
Polymer.dom.flush();
expectTrue(!!manager.$$('extensions-kiosk-dialog'));
});
});
}
}); });
return { return {
......
...@@ -9,6 +9,7 @@ cr.define('extension_toolbar_tests', function() { ...@@ -9,6 +9,7 @@ cr.define('extension_toolbar_tests', function() {
Layout: 'layout', Layout: 'layout',
ClickHandlers: 'click handlers', ClickHandlers: 'click handlers',
DevModeToggle: 'dev mode toggle', DevModeToggle: 'dev mode toggle',
KioskMode: 'kiosk mode button'
}; };
var suiteName = 'ExtensionToolbarTest'; var suiteName = 'ExtensionToolbarTest';
...@@ -91,12 +92,24 @@ cr.define('extension_toolbar_tests', function() { ...@@ -91,12 +92,24 @@ cr.define('extension_toolbar_tests', function() {
MockInteractions.tap(toolbar.$$('#update-now')); MockInteractions.tap(toolbar.$$('#update-now'));
return mockDelegate.whenCalled('updateAllExtensions'); return mockDelegate.whenCalled('updateAllExtensions');
}).then(function() { }).then(function() {
var listener = new extension_test_util.ListenerMock(); const whenTapped = test_util.eventToPromise('pack-tap', toolbar);
listener.addListener(toolbar, 'pack-tap');
MockInteractions.tap(toolbar.$$('#pack-extensions')); MockInteractions.tap(toolbar.$$('#pack-extensions'));
listener.verify(); return whenTapped;
}); });
}); });
if (cr.isChromeOS) {
test(assert(TestNames.KioskMode), function() {
const button = toolbar.$$('#kiosk-extensions');
expectTrue(button.hidden);
toolbar.kioskEnabled = true;
expectFalse(button.hidden);
const whenTapped = test_util.eventToPromise('kiosk-tap', toolbar);
MockInteractions.tap(button);
return whenTapped;
});
}
}); });
return { return {
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** @implements {extensions.KioskBrowserProxy} */
class TestKioskBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'initializeKioskAppSettings',
'getKioskAppSettings',
'addKioskApp',
'disableKioskAutoLaunch',
'enableKioskAutoLaunch',
'removeKioskApp',
'setDisableBailoutShortcut',
]);
}
/** @override */
initializeKioskAppSettings() {
this.methodCalled('initializeKioskAppSettings');
return Promise.resolve({
kioskEnabled: true,
autoLaunchEnabled: false
});
}
/** @override */
getKioskAppSettings() {
this.methodCalled('getKioskAppSettings');
return Promise.resolve({
apps: [],
disableBailout: false,
hasAutoLaunchApp: false
});
}
/** @override */
addKioskApp(appId) {
this.methodCalled('addKioskApp', appId);
}
/** @override */
disableKioskAutoLaunch(appId) {
this.methodCalled('disableKioskAutoLaunch', appId);
}
/** @override */
enableKioskAutoLaunch(appId) {
this.methodCalled('enableKioskAutoLaunch', appId);
}
/** @override */
removeKioskApp(appId) {
this.methodCalled('removeKioskApp', appId);
}
/** @override */
setDisableBailoutShortcut(disableBailout) {
this.methodCalled('setDisableBailoutShortcut', disableBailout);
}
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment