| # 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.bin import utils |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.cros.enterprise import enterprise_policy_base |
| |
| from telemetry.core import exceptions |
| |
| |
| class policy_PromptForDownloadLocation( |
| enterprise_policy_base.EnterprisePolicyTest): |
| """ |
| Test effect of policy_PromptForDownloadLocation policy on Chrome OS. |
| |
| This test will set the policy, navigate to a test download link, then |
| check if the file is downloaded or not. |
| |
| """ |
| version = 1 |
| |
| POLICY_NAME = 'PromptForDownloadLocation' |
| _DOWNLOAD_BASE = ('http://commondatastorage.googleapis.com/' |
| 'chromiumos-test-assets-public/audio_power/') |
| |
| def run_once(self, case=None): |
| """ |
| Setup and run the test configured for the specified test case. |
| |
| @param case: Name of the test case to run. |
| |
| """ |
| self.setup_case(user_policies={self.POLICY_NAME: case}) |
| |
| try: |
| self.navigate_to_url(self._DOWNLOAD_BASE) |
| |
| # The url is a test URL and doesn't actually load anything, causing |
| # a Timeout. This is expected and OK. |
| # TODO: crbug:1058141, invesitgate the telemetry crash caused here. |
| except (exceptions.TimeoutException, exceptions.InitializationError): |
| pass |
| |
| # Check the downloads directory for the file. |
| files = utils.system_output('ls /home/chronos/user/Downloads/') |
| |
| if case: |
| if 'download' in files: |
| raise error.TestError( |
| 'Download did not prompt for location when it should have.') |
| else: |
| if 'download' not in files: |
| raise error.TestError( |
| 'Download prompted for location when it should not have.') |