blob: 3997daad88cc3544d911cb7d2caa2090f1052ce9 [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
Mike Frysinger5ed39012020-02-27 03:26:45 -050010import sys
11
Tudor Brindus3e03eba2018-07-18 11:27:13 -070012from chromite.lib import cros_test_lib
Amin Hassani6bc73a12018-11-29 21:07:12 -080013from chromite.lib import partial_mock
14
Amin Hassanibdda5e42018-10-10 22:56:11 -070015from chromite.lib.paygen import partition_lib
Amin Hassani6bc73a12018-11-29 21:07:12 -080016from chromite.lib.paygen import paygen_payload_lib
17
Tudor Brindus3e03eba2018-07-18 11:27:13 -070018from chromite.scripts import cros_generate_update_payload
19
Greg Edelstona4c9b3b2020-01-07 17:51:13 -070020pytestmark = cros_test_lib.pytestmark_inside_only
21
Amin Hassani6bc73a12018-11-29 21:07:12 -080022
Mike Frysinger5ed39012020-02-27 03:26:45 -050023assert sys.version_info >= (3, 6), 'This module requires Python 3.6+'
24
25
Amin Hassani6bc73a12018-11-29 21:07:12 -080026class CrOSGenerateUpdatePayloadTest(cros_test_lib.MockTestCase):
Tudor Brindus3e03eba2018-07-18 11:27:13 -070027 """Test correct arguments passed to delta_generator."""
Amin Hassani6bc73a12018-11-29 21:07:12 -080028
29 def testGenerateUpdatePayload(self):
Tudor Brindus3e03eba2018-07-18 11:27:13 -070030 """Test correct arguments propagated to delta_generator call."""
Tudor Brindus3e03eba2018-07-18 11:27:13 -070031
Amin Hassani6bc73a12018-11-29 21:07:12 -080032 paygen_mock = self.PatchObject(paygen_payload_lib, 'GenerateUpdatePayload')
33
Tudor Brindus3e03eba2018-07-18 11:27:13 -070034 cros_generate_update_payload.main([
Amin Hassani6bc73a12018-11-29 21:07:12 -080035 '--image', 'foo-image',
36 '--src_image', 'foo-src-image',
37 '--output', 'foo-output',
38 '--check',
39 '--private_key', 'foo-private-key',
40 '--out_metadata_hash_file', 'foo-metadata-hash',
41 '--work_dir', 'foo-work-dir',
Tudor Brindus3e03eba2018-07-18 11:27:13 -070042 ])
43
Amin Hassani6bc73a12018-11-29 21:07:12 -080044 paygen_mock.assert_called_once_with(
45 partial_mock.HasString('foo-image'),
46 partial_mock.HasString('foo-output'),
47 src_image=partial_mock.HasString('foo-src-image'),
48 work_dir=partial_mock.HasString('foo-work-dir'),
49 private_key=partial_mock.HasString('foo-private-key'),
50 check=True,
51 out_metadata_hash_file=partial_mock.HasString('foo-metadata-hash'))
52
53 def testExtractPartitions(self):
54 """Test extracting partitions."""
55
56 kernel_mock = self.PatchObject(partition_lib, 'ExtractKernel')
57 root_mock = self.PatchObject(partition_lib, 'ExtractRoot')
58
59 cros_generate_update_payload.main([
60 '--image', 'foo-image',
61 '--extract',
62 '--kern_path', 'foo-kernel',
63 '--root_path', 'foo-root',
64 '--root_pretruncate_path', 'foo-pretruncate',
Tudor Brindus3e03eba2018-07-18 11:27:13 -070065 ])
Amin Hassani6bc73a12018-11-29 21:07:12 -080066
67 kernel_mock.assert_called_once_with(partial_mock.HasString('foo-image'),
68 partial_mock.HasString('foo-kernel'))
69 root_mock.assert_calls_with(partial_mock.HasString('foo-image'),
70 partial_mock.HasString('foo-root'))
71 root_mock.assert_calls_with(partial_mock.HasString('foo-image'),
72 partial_mock.HasString('foo-pretruncate'),
73 truncate=False)