# Copyright 2016 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 = 'scunningham'
NAME = 'policy_ForceYouTubeSafetyMode'
TIME = 'SHORT'
TEST_CATEGORY = 'General'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'client'

DOC = '''
Verify effect of ForceYouTubeSafetyMode policy on client behavior.

This test verifies the effect of the ForceYouTubeSafetyMode user policy on
Chrome OS client behavior. The test exercises all valid policy values across
three test cases: NotSet_SafetyInactive, False_SafetyInactive, and
True_SafetyActive.

A test case shall pass when the YouTube.com page indicates that 'Restricted
Mode' is On (or Off) when the policy is set true (or is set false or not set).
A test case shall fail if the above behavior is not enforced.

'''

args_dict = utils.args_to_dict(args)

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