Add GetBestVisible handling to packages controller.
TEST=./run_tests
BUG=chromium:964064
Change-Id: I782c0f889488154c10f074c2b41a17e73a792568
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1683908
Tested-by: David Burger <dburger@chromium.org>
Commit-Queue: David Burger <dburger@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index de12591..4049f6a 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -15,6 +15,7 @@
from chromite.lib import constants
from chromite.lib import cros_build_lib
from chromite.lib import cros_test_lib
+from chromite.lib import portage_util
from chromite.service import packages as packages_service
@@ -73,3 +74,54 @@
# First argument (build targets) of the first (only) call.
call_targets = uprev_patch.call_args[0][0]
self.assertItemsEqual(targets, [t.name for t in call_targets])
+
+
+class GetBestVisibleTest(cros_test_lib.MockTestCase):
+ """GetBestVisible tests."""
+
+ def _GetRequest(self, atom=None):
+ return packages_pb2.GetBestVisibleRequest(
+ atom=atom,
+ )
+
+ def _GetResponse(self):
+ return packages_pb2.GetBestVisibleResponse()
+
+ def _MakeCpv(self, category, package, version):
+ unused = {
+ 'cp': None,
+ 'cpv': None,
+ 'cpf': None,
+ 'pv': None,
+ 'version_no_rev': None,
+ 'rev': None,
+ }
+ return portage_util.CPV(
+ category=category,
+ package=package,
+ version=version,
+ **unused
+ )
+
+ def testNoAtomFails(self):
+ """No atom provided should fail."""
+ request = self._GetRequest()
+ response = self._GetResponse()
+
+ with self.assertRaises(cros_build_lib.DieSystemExit):
+ packages_controller.GetBestVisible(request, response)
+
+ def testSuccess(self):
+ """Test overall success, argument handling, result forwarding."""
+ cpv = self._MakeCpv('category', 'package', 'version')
+ self.PatchObject(packages_service, 'get_best_visible', return_value=cpv)
+
+ request = self._GetRequest(atom='chromeos-chrome')
+ response = self._GetResponse()
+
+ packages_controller.GetBestVisible(request, response)
+
+ package_info = response.package_info
+ self.assertEqual(package_info.category, cpv.category)
+ self.assertEqual(package_info.package_name, cpv.package)
+ self.assertEqual(package_info.version, cpv.version)