# 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.AllowOnlyPolicyNetworksToConnectIfAvailable'
TEST_TYPE = 'Server'
# Disable this test until it can be fixed: http://b/170942348
# ATTRIBUTES = 'suite:ent-wificell'
DEPENDENCIES = 'wificell'

DOC = """
This test sets up a policy and user defined network. The
GlobalNetworkConfiguration policy 'AllowOnlyPolicyNetworksToConnectIfAvailable'
is set to True. Only the policy defined network should be allowed to connect.
The test then turns off the policy network and the user network should be
allowed to connect.

"""

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


parallel_simple(run, machines)
