| # -*- coding: utf-8 -*- |
| # Copyright 2018 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. |
| |
| """Unit tests for cros_update.""" |
| |
| from __future__ import print_function |
| |
| import mock |
| |
| from chromite.lib import auto_updater |
| from chromite.lib import cros_build_lib |
| from chromite.lib import cros_test_lib |
| from chromite.lib import remote_access |
| from chromite.scripts import cros_update |
| |
| |
| # pylint: disable=protected-access |
| |
| class CrosUpdateTest(cros_test_lib.RunCommandTestCase): |
| """Tests build_dlc utility functions.""" |
| |
| def setUp(self): |
| """Setup an instance of CrOSUpdateTrigger.""" |
| self._cros_update_trigger = cros_update.CrOSUpdateTrigger( |
| 'foo-host-name', 'foo-build-name', 'foo-static-dir', |
| original_build='foo-original-build', static_url='foo-static', |
| devserver_url='foo-devserver-url') |
| self._cros_updater = auto_updater.ChromiumOSUpdater( |
| mock.MagicMock(work_dir='foo-dir'), 'foo-build-name', 'foo-payload-dir') |
| |
| def test_GetOriginalPayloadDir(self): |
| """Tests getting the original payload directory.""" |
| self.assertEqual(self._cros_update_trigger._GetOriginalPayloadDir(), |
| 'foo-static-dir/stable-channel/foo-original-build') |
| |
| self._cros_update_trigger.original_build = None |
| self.assertIsNone(self._cros_update_trigger._GetOriginalPayloadDir()) |
| |
| def test_MakeStatusUrl(self): |
| """Tests generating a URL to post auto update status.""" |
| self.assertEqual( |
| self._cros_update_trigger._MakeStatusUrl( |
| 'foo-devserver-url', 'foo-host-name', 10), |
| 'foo-devserver-url/post_au_status?host_name=foo-host-name&pid=10') |
| |
| |
| @mock.patch.object(cros_update.CrOSUpdateTrigger, '_MakeStatusUrl', |
| return_value='foo-url') |
| @mock.patch.object(remote_access.RemoteDevice, 'RunCommand', |
| return_value=cros_build_lib.CommandResult(output='output')) |
| def test_QuickProvision(self, run_command_call, _): |
| """Tests launching quick provision.""" |
| cmd = ('curl -o /tmp/quick-provision foo-static/quick-provision && ' |
| 'bash /tmp/quick-provision --status_url foo-url foo-build-name ' |
| 'foo-static') |
| device = remote_access.RemoteDevice('fake-hostname') |
| self._cros_update_trigger._QuickProvision(device) |
| run_command_call.assert_called_with(cmd, log_output=True, shell=True, |
| capture_output=True, ssh_error_ok=True, |
| encoding='utf-8') |