blob: 5d732c73d3d8e8daa6ae4d15b654a089bd3a7d6e [file] [log] [blame]
Tudor Brindus3e03eba2018-07-18 11:27:13 -07001# -*- coding: utf-8 -*-
2# Copyright 2018 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Unit tests for cros_generate_update_payload."""
7
8from __future__ import print_function
9
Tudor Brindus3e03eba2018-07-18 11:27:13 -070010from chromite.lib import cros_test_lib
Amin Hassani6bc73a12018-11-29 21:07:12 -080011from chromite.lib import partial_mock
12
Amin Hassanibdda5e42018-10-10 22:56:11 -070013from chromite.lib.paygen import partition_lib
Amin Hassani6bc73a12018-11-29 21:07:12 -080014from chromite.lib.paygen import paygen_payload_lib
15
Tudor Brindus3e03eba2018-07-18 11:27:13 -070016from chromite.scripts import cros_generate_update_payload
17
Amin Hassani6bc73a12018-11-29 21:07:12 -080018
19class CrOSGenerateUpdatePayloadTest(cros_test_lib.MockTestCase):
Tudor Brindus3e03eba2018-07-18 11:27:13 -070020 """Test correct arguments passed to delta_generator."""
Amin Hassani6bc73a12018-11-29 21:07:12 -080021
22 def testGenerateUpdatePayload(self):
Tudor Brindus3e03eba2018-07-18 11:27:13 -070023 """Test correct arguments propagated to delta_generator call."""
Tudor Brindus3e03eba2018-07-18 11:27:13 -070024
Amin Hassani6bc73a12018-11-29 21:07:12 -080025 paygen_mock = self.PatchObject(paygen_payload_lib, 'GenerateUpdatePayload')
26
Tudor Brindus3e03eba2018-07-18 11:27:13 -070027 cros_generate_update_payload.main([
Amin Hassani6bc73a12018-11-29 21:07:12 -080028 '--image', 'foo-image',
29 '--src_image', 'foo-src-image',
30 '--output', 'foo-output',
31 '--check',
32 '--private_key', 'foo-private-key',
33 '--out_metadata_hash_file', 'foo-metadata-hash',
34 '--work_dir', 'foo-work-dir',
Tudor Brindus3e03eba2018-07-18 11:27:13 -070035 ])
36
Amin Hassani6bc73a12018-11-29 21:07:12 -080037 paygen_mock.assert_called_once_with(
38 partial_mock.HasString('foo-image'),
39 partial_mock.HasString('foo-output'),
40 src_image=partial_mock.HasString('foo-src-image'),
41 work_dir=partial_mock.HasString('foo-work-dir'),
42 private_key=partial_mock.HasString('foo-private-key'),
43 check=True,
44 out_metadata_hash_file=partial_mock.HasString('foo-metadata-hash'))
45
46 def testExtractPartitions(self):
47 """Test extracting partitions."""
48
49 kernel_mock = self.PatchObject(partition_lib, 'ExtractKernel')
50 root_mock = self.PatchObject(partition_lib, 'ExtractRoot')
51
52 cros_generate_update_payload.main([
53 '--image', 'foo-image',
54 '--extract',
55 '--kern_path', 'foo-kernel',
56 '--root_path', 'foo-root',
57 '--root_pretruncate_path', 'foo-pretruncate',
Tudor Brindus3e03eba2018-07-18 11:27:13 -070058 ])
Amin Hassani6bc73a12018-11-29 21:07:12 -080059
60 kernel_mock.assert_called_once_with(partial_mock.HasString('foo-image'),
61 partial_mock.HasString('foo-kernel'))
62 root_mock.assert_calls_with(partial_mock.HasString('foo-image'),
63 partial_mock.HasString('foo-root'))
64 root_mock.assert_calls_with(partial_mock.HasString('foo-image'),
65 partial_mock.HasString('foo-pretruncate'),
66 truncate=False)