# 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.AllowOnlyPolicyNetworksToConnect'
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 'AllowOnlyPolicyNetworksToConnect' is
set to True. Only the policy defined 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={'AllowOnlyPolicyNetworksToConnect': True})


parallel_simple(run, machines)
