# 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.

AUTHOR = 'timkovich'
TIME = 'SHORT'
NAME = 'policy_GlobalNetworkSettingsServer.AllowOnlyPolicyNetworksToAutoconnect'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:ent-wificell'
DEPENDENCIES = 'wificell'

DOC = """
This test sets up a policy and user defined network. The
GlobalNetworkConfiguration policy 'AllowOnlyPolicyNetworksToAutoconnect' is
set to True. The DUT is disconnected from the network. Only the policy defined
network should automatically reconnect.

"""

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('policy_GlobalNetworkSettingsServer',
                 raw_cmdline_args=args,
                 host=host,
                 gnc_settings={'AllowOnlyPolicyNetworksToAutoconnect': True})


parallel_simple(run, machines)
