68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
| # Copyright 2019 The Chromium OS Authors. All rights reserved.
 | |
| # Use of this source code is governed by a BSD-style license that can be
 | |
| # found in the LICENSE file.
 | |
| import time
 | |
| 
 | |
| from autotest_lib.client.common_lib import error
 | |
| from autotest_lib.client.cros.enterprise import enterprise_policy_base
 | |
| 
 | |
| 
 | |
| class policy_DeviceAllowBluetooth(
 | |
|         enterprise_policy_base.EnterprisePolicyTest):
 | |
|     """
 | |
|     Test for the DeviceAllowBluetooth policy.
 | |
| 
 | |
|     If the policy is set to True/None then bluetooth button is available in
 | |
|     status tray menu. If the policy is set to False then bluetooth button
 | |
|     is not available.
 | |
| 
 | |
|     """
 | |
|     version = 1
 | |
|     _POLICY = 'DeviceAllowBluetooth'
 | |
| 
 | |
|     def _is_bluetooth_button_present(self, ext):
 | |
|         bt_present = ext.EvaluateJavaScript("""
 | |
|         var root;
 | |
|         chrome.automation.getDesktop(r => root = r);
 | |
|         bt = root.find({attributes: {role: "button", name: /Bluetooth/}});
 | |
|         bt;
 | |
|         """)
 | |
|         if bt_present is None:
 | |
|             return False
 | |
|         return True
 | |
| 
 | |
|     def bluetooth_check(self, case):
 | |
|         # Click the status tray button in bottom right.
 | |
|         ext = self.cr.autotest_ext
 | |
|         ext.ExecuteJavaScript("""
 | |
|         chrome.automation.getDesktop(root => {
 | |
|             var button_to_click = root.find(
 | |
|                 {attributes: {
 | |
|                     role: "button", name: /Status tray/}}).doDefault();
 | |
|         });
 | |
|         """)
 | |
|         time.sleep(1)
 | |
| 
 | |
|         bluetooth_button = self._is_bluetooth_button_present(ext)
 | |
| 
 | |
|         if case is False:
 | |
|             if bluetooth_button:
 | |
|                 raise error.TestFail(
 | |
|                     'Bluetooth option is available and it should not be')
 | |
|         else:
 | |
|             if not bluetooth_button:
 | |
|                 raise error.TestFail(
 | |
|                     'Bluetooth option should be available but it is not.')
 | |
| 
 | |
|     def run_once(self, case):
 | |
|         """
 | |
|         Entry point of this test.
 | |
| 
 | |
|         @param case: True, False, or None for the value of the policy.
 | |
| 
 | |
|         """
 | |
|         self.setup_case(
 | |
|                 device_policies={self._POLICY: case},
 | |
|                 enroll=True)
 | |
|         self.bluetooth_check(case)
 |