# Copyright (c) 2012 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 = "Chrome OS Team"
NAME = "desktopui_EnterprisePolicyServer"
SUITE = "enterprise_enroll"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "desktopui"
TEST_TYPE = "server"

DOC = """
This test uses the client-side desktopui_EnterprisePolicy test to perform
enterprise enrollment, and verify enterprise policies. The name of the
client-side test functions to execute are specified in the TESTS list below.
"""

# prod: Whether to point to production DMServer and gaia auth server.
# enroll: Whether the test enrolls the device.
TESTS = [
    ('test_prod_enterprise_executive_user', {'prod': True}),
    ('test_prod_enterprise_sales_user', {'prod': True}),
    ('test_prod_enterprise_development_user', {'prod': True}),
    ('test_prod_enterprise_test_user', {'prod': True}),
    ('test_prod_enterprise_operations_user', {'prod': True}),
    # crosbug.com/26683
    #('test_qa_enterprise_executive_user', {}),
    #('test_qa_enterprise_sales_user', {}),
    #('test_qa_enterprise_development_user', {}),
    #('test_qa_enterprise_test_user', {}),
    #('test_qa_enterprise_operations_user', {}),
    #('test_crosqa2_device_policies', {'enroll': True}),
    #('test_crosqa3_device_policies', {'enroll': True}),
    #('test_crosqa4_device_policies', {'enroll': True}),
    ('test_crosprqa2_device_policies', {'prod': True, 'enroll': True}),
    ('test_crosprqa3_device_policies', {'prod': True, 'enroll': True}),
    ('test_crosprqa4_device_policies', {'prod': True, 'enroll': True}),
    ('test_enroll_unmanaged_domain', {'prod': True, 'enroll': True}),
    ('test_enroll_bad_credential', {'prod': True, 'enroll': True}),
]


for test, argv in TESTS:
    tag = '_'.join([test] + [k for k in argv if argv[k]])
    job.run_test('desktopui_EnterprisePolicyServer',
                 host=hosts.create_host(machines[0]),
                 tag=tag,
                 subtest=test, **argv)
