# 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_CookiesBlockedForUrls'
TIME = 'SHORT'
TEST_CATEGORY = 'General'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'client'

DOC = '''
Verify effects of CookiesBlockedForUrls policy on client behavior.

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

A test case shall pass iff the browser blocks cookies on a test page with an
URL that matches one or more of the URL patterns listed in
CookiesBlockedForUrls. It shall fail if the browser:
- Allows cookies on a test page with an Url that matches one or more of the
  URL patterns listed in the CookiesBlockedForUrls policy value.
- Blocks cookies on a test page with an URL that does not match any of the
  URL patterns listed in the CookiesBlockedForUrls 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_CookiesBlockedForUrls', **args_dict)
