blob: de125914884a9ba8ccc5240886602b075671e21e [file] [log] [blame]
Alex Kleineb77ffa2019-05-28 14:47:44 -06001# -*- coding: utf-8 -*-
2# Copyright 2019 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"""packages controller unit tests."""
7
8from __future__ import print_function
9
10import mock
11
12from chromite.api.controller import packages as packages_controller
13from chromite.api.gen.chromite.api import binhost_pb2
14from chromite.api.gen.chromite.api import packages_pb2
15from chromite.lib import constants
16from chromite.lib import cros_build_lib
17from chromite.lib import cros_test_lib
18from chromite.service import packages as packages_service
19
20
21class UprevTest(cros_test_lib.MockTestCase):
22 """Uprev tests."""
23
24 _PUBLIC = binhost_pb2.OVERLAYTYPE_PUBLIC
25 _PRIVATE = binhost_pb2.OVERLAYTYPE_PRIVATE
26 _BOTH = binhost_pb2.OVERLAYTYPE_BOTH
27 _NONE = binhost_pb2.OVERLAYTYPE_NONE
28
29 def setUp(self):
30 self.uprev_patch = self.PatchObject(packages_service, 'uprev_build_targets')
31
32 def _GetRequest(self, targets=None, overlay_type=None, output_dir=None):
33 return packages_pb2.UprevPackagesRequest(
34 build_targets=[{'name': name} for name in targets or []],
35 overlay_type=overlay_type,
36 output_dir=output_dir,
37 )
38
39 def _GetResponse(self):
40 return packages_pb2.UprevPackagesResponse()
41
42 def testNoOverlayTypeFails(self):
43 """No overlay type provided should fail."""
44 request = self._GetRequest(targets=['foo'])
45 response = self._GetResponse()
46
47 with self.assertRaises(cros_build_lib.DieSystemExit):
48 packages_controller.Uprev(request, response)
49
50 def testOverlayTypeNoneFails(self):
51 """Overlay type none means nothing here and should fail."""
52 request = self._GetRequest(targets=['foo'], overlay_type=self._NONE)
53 response = self._GetResponse()
54
55 with self.assertRaises(cros_build_lib.DieSystemExit):
56 packages_controller.Uprev(request, response)
57
58 def testSuccess(self):
59 """Test overall successful argument handling."""
60 targets = ['foo', 'bar']
61 output_dir = '/tmp/uprev_output_dir'
62 expected_type = constants.BOTH_OVERLAYS
63 request = self._GetRequest(targets=targets, overlay_type=self._BOTH,
64 output_dir=output_dir)
65 response = self._GetResponse()
66 uprev_patch = self.PatchObject(packages_service, 'uprev_build_targets')
67
68 packages_controller.Uprev(request, response)
69
70 # Make sure the type is right, verify build targets after.
71 uprev_patch.assert_called_once_with(mock.ANY, expected_type, mock.ANY,
72 output_dir)
73 # First argument (build targets) of the first (only) call.
74 call_targets = uprev_patch.call_args[0][0]
75 self.assertItemsEqual(targets, [t.name for t in call_targets])