Home | History | Annotate | Download | only in policy_WiFiAutoconnect
      1 # Copyright 2018 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import logging
      6 
      7 from autotest_lib.client.common_lib import error
      8 from autotest_lib.client.cros.enterprise import enterprise_policy_base
      9 from autotest_lib.client.cros.enterprise import enterprise_network_api
     10 from autotest_lib.client.cros.enterprise import network_config
     11 
     12 
     13 class policy_WiFiAutoconnect(
     14         enterprise_policy_base.EnterprisePolicyTest):
     15     version = 1
     16 
     17 
     18     def cleanup(self):
     19         """Re-enable ethernet after the test is completed."""
     20         if hasattr(self, 'net_api'):
     21             self.net_api.chrome_net_context.enable_network_device('Ethernet')
     22         super(policy_WiFiAutoconnect, self).cleanup()
     23 
     24 
     25     def test_wifi_autoconnect(self, ssid, autoconnect):
     26         """
     27         Verifies the behavior of the autoconnect portion of network policy.
     28 
     29         @param ssid: Service set identifier for wireless local area network.
     30         @param autoconnect: Whether policy autoconnects to network.
     31 
     32         @raises error.TestFail: When device's behavior does not match policy.
     33 
     34         """
     35         if not autoconnect:
     36             if self.net_api.is_network_connected(ssid):
     37                 raise error.TestFail('Device autoconnected to %s, but '
     38                                      'autoconnect = False.'
     39                                      % ssid)
     40             self.net_api.connect_to_network(ssid)
     41 
     42         if not self.net_api.is_network_connected(ssid):
     43             raise error.TestFail('Did not connect to network (%s)' % ssid)
     44 
     45 
     46     def run_once(self, autoconnect=False, ssid=''):
     47         """
     48         Setup and run the test configured for the specified test case.
     49 
     50         @param ssid: Service set identifier for wireless local area network.
     51         @param autoconnect: Value of "AutoConnect" setting. Options are True,
     52                             False, or None
     53 
     54         """
     55         network = network_config.NetworkConfig(ssid,
     56                                                autoconnect=autoconnect)
     57 
     58         self.setup_case(
     59             user_policies={
     60                 'OpenNetworkConfiguration': network.policy()
     61             },
     62             extension_paths=[
     63                 enterprise_network_api.NETWORK_TEST_EXTENSION_PATH
     64             ]
     65         )
     66 
     67         self.net_api = enterprise_network_api.\
     68                 ChromeEnterpriseNetworkContext(self.cr)
     69         # Disable ethernet so device will default to WiFi
     70         self.net_api.disable_network_device('Ethernet')
     71 
     72         self.test_wifi_autoconnect(ssid, autoconnect)
     73