# 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"
ATTRIBUTES = "suite:regression"
SUITE = "regression"
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,
named: NotSet_CookiesAllowed, SingleUrl_CookiesBlocked,
MultipleUrls_CookiesBlocked, MultipleUrls_CookiesAllowed.

See the test file for a full description of what each test case does.

In general, a test shall pass if the browser blocks cookies on a test page
with a URL that matches one or more of the URL patterns listed in the
CookiesBlockedForUrls.

A test shall fail if the browser:
-Stores cookies for Urls that match the url patterns listed in the
 CookiesBlockedForUrls policy value.
-Does not store cookies for Urls that do not match the url patterns listed
 in the CookiesBlockedForUrls policy value.


Usage example:
$ test_that <IPAddress> policy_CookiesBlockedForUrls --args="mode=single
case=SingleUrl_CookiesBlocked env=dm-test dms_name=xot-dmst
username=test@crosprqa4.com password=test0000"

Runs a single test case (e.g., SingleUrl_CookiesBlocked) against a device
with the specified IP address, using the DM Test environment with the given
DM Server name, and signing in to the device with the given username and
password.

"""

job.run_test("policy_CookiesBlockedForUrls", args=args)
