| # Copyright 2017 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.bin import test, utils |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.cros import device_jail_test_base |
| from autotest_lib.client.cros import device_jail_utils |
| |
| |
| class security_DeviceJail_AllowDeny(device_jail_test_base.DeviceJailTestBase): |
| """ |
| Ensures that if device jail is present, it is functioning properly |
| in that it allows access if and only if instructed (generally |
| by permission_broker) and correctly locks down devices or detaches |
| kernel drivers as instructed. |
| """ |
| version = 1 |
| |
| def run_once(self): |
| usb_devices = device_jail_utils.get_usb_devices() |
| if not usb_devices: |
| error.TestNAError('No USB devices found') |
| |
| dev_path = usb_devices[0].device_node |
| with device_jail_utils.JailDevice(dev_path) as jail: |
| # This should succeed and return a file. |
| f = jail.expect_open(device_jail_utils.REQUEST_ALLOW) |
| if not f: |
| raise error.TestError('Failed to open allowed jail') |
| else: |
| f.close() |
| |
| # This should not return a file. |
| f = jail.expect_open(device_jail_utils.REQUEST_DENY) |
| if f: |
| raise error.TestError('Successfully opened denied jail') |