blob: 529e51f12cec13c5f279874d9682a825b695dd45 [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
Amin Hassani6bc73a12018-11-29 21:07:12 -080020
Mike Frysinger5ed39012020-02-27 03:26:45 -050021assert sys.version_info >= (3, 6), 'This module requires Python 3.6+'
22
23
Amin Hassani6bc73a12018-11-29 21:07:12 -080024class CrOSGenerateUpdatePayloadTest(cros_test_lib.MockTestCase):
Tudor Brindus3e03eba2018-07-18 11:27:13 -070025 """Test correct arguments passed to delta_generator."""
Amin Hassani6bc73a12018-11-29 21:07:12 -080026
27 def testGenerateUpdatePayload(self):
Tudor Brindus3e03eba2018-07-18 11:27:13 -070028 """Test correct arguments propagated to delta_generator call."""
Tudor Brindus3e03eba2018-07-18 11:27:13 -070029
Amin Hassani6bc73a12018-11-29 21:07:12 -080030 paygen_mock = self.PatchObject(paygen_payload_lib, 'GenerateUpdatePayload')
31
Tudor Brindus3e03eba2018-07-18 11:27:13 -070032 cros_generate_update_payload.main([
Amin Hassani6bc73a12018-11-29 21:07:12 -080033 '--image', 'foo-image',
34 '--src_image', 'foo-src-image',
35 '--output', 'foo-output',
36 '--check',
37 '--private_key', 'foo-private-key',
38 '--out_metadata_hash_file', 'foo-metadata-hash',
39 '--work_dir', 'foo-work-dir',
Tudor Brindus3e03eba2018-07-18 11:27:13 -070040 ])
41
Amin Hassani6bc73a12018-11-29 21:07:12 -080042 paygen_mock.assert_called_once_with(
43 partial_mock.HasString('foo-image'),
44 partial_mock.HasString('foo-output'),
45 src_image=partial_mock.HasString('foo-src-image'),
46 work_dir=partial_mock.HasString('foo-work-dir'),
47 private_key=partial_mock.HasString('foo-private-key'),
48 check=True,
49 out_metadata_hash_file=partial_mock.HasString('foo-metadata-hash'))
50
51 def testExtractPartitions(self):
52 """Test extracting partitions."""
53
54 kernel_mock = self.PatchObject(partition_lib, 'ExtractKernel')
55 root_mock = self.PatchObject(partition_lib, 'ExtractRoot')
56
57 cros_generate_update_payload.main([
58 '--image', 'foo-image',
59 '--extract',
60 '--kern_path', 'foo-kernel',
61 '--root_path', 'foo-root',
62 '--root_pretruncate_path', 'foo-pretruncate',
Tudor Brindus3e03eba2018-07-18 11:27:13 -070063 ])
Amin Hassani6bc73a12018-11-29 21:07:12 -080064
65 kernel_mock.assert_called_once_with(partial_mock.HasString('foo-image'),
66 partial_mock.HasString('foo-kernel'))
67 root_mock.assert_calls_with(partial_mock.HasString('foo-image'),
68 partial_mock.HasString('foo-root'))
69 root_mock.assert_calls_with(partial_mock.HasString('foo-image'),
70 partial_mock.HasString('foo-pretruncate'),
71 truncate=False)