blob: d9dc1295eac2660ef66a49669bd76e9623685c2c [file] [log] [blame]
# Copyright 2019 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.
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros import arc
from autotest_lib.client.cros.enterprise import enterprise_policy_base
class policy_ArcExternalStorageDisabled(
enterprise_policy_base.EnterprisePolicyTest):
version = 1
POLICY_NAME = 'ExternalStorageDisabled'
TEST_CASES = {
'True_Block': True,
'False_Allow': False,
'NotSet_Allow': None
}
def _test_arc_external_storage(self, policy_value):
"""
Verify the behavior of the ExternalStorageDisabled policy on ARC.
Check the /storage directory and verify that it is empty if the
policy disables access to external storage, or not empty if external
storage is allowed.
@param policy_value: policy value for this case.
@raises error.TestFail: If the contents of the /media/removable
directory do not match the policy behavior.
"""
arc_dirs = set(arc.adb_shell('ls /storage').split())
base_dirs = set(['emulated', 'self', 'MyFiles'])
usb_parts = arc_dirs - base_dirs
if policy_value:
if usb_parts:
raise error.TestFail('External storage was disabled but '
'external storage detected')
elif not usb_parts:
raise error.TestFail('External storage enabled but external '
'storage not found')
def run_once(self, case):
"""
Setup and run the test configured for the specified test case.
@param case: Name of the test case to run.
"""
case_value = self.TEST_CASES[case]
pol = {'ArcEnabled': True,
'ExternalStorageDisabled': case_value}
self.setup_case(user_policies=pol,
arc_mode='enabled',
use_clouddpc_test=False)
self._test_arc_external_storage(case_value)