# Copyright 2015 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 = 'krishnargv'
NAME = 'policy_CookiesAllowedForUrls'
TIME = 'SHORT'
TEST_CATEGORY = 'General'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'client'

DOC = '''
Verify effects of CookiesAllowedForUrls policy.

This test verifies the effect of the CookiesAllowedForUrls user policy on
Chrome OS client behavior when the DefaultCookiesSetting user policy is set
to 2. It exercises a range of policy values using four unique test cases:
NotSet_CookiesBlocked, SingleUrl_CookiesAllowed, MultipleUrls_CookiesAllowed,
and MultipleUrls_CookiesBlocked. See the test file for a full description of
what each test case does.

A test case shall pass iff the browser allows cookies on a test page with an
URL that matches one or more of the URL patterns listed in
CookiesAllowedForUrls. It shall fail if the browser:
- Blocks cookies on a test page with an URL that matches one or more of the
  URL patterns listed in the CookiesAllowedForUrls policy value.
- Allows cookies on a test page with an URL that does not match any of the
  URL patterns listed in the CookiesAllowedForUrls policy value.

This control file allows CloudDPC E2E tests to run any test case defined in
this test via command-line.

'''

args_dict = utils.args_to_dict(args)

job.run_test('policy_CookiesAllowedForUrls', **args_dict)
