PackagesService: Add BuildsChrome endpoint.

Endpoint to check if a particular build target has chrome in
its depgraph. A more interesting implementation will come
later. Always returning True allows the endpoint to be called
by the recipes and doesn't change its behavior.

BUG=chromium:1009610
TEST=run_tests

Change-Id: I0dfe1ba6e3fa234459ad1de72e80de6139e0b1ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1832563
Tested-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index 58fe3d1..0d75d0c 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -258,3 +258,35 @@
     with self.assertRaises(cros_build_lib.DieSystemExit):
       packages_controller.HasChromePrebuilt(request, self.response,
                                             self.api_config)
+
+
+class BuildsChromeTest(cros_test_lib.MockTestCase, ApiConfigMixin):
+  """BuildsChrome tests."""
+
+  def setUp(self):
+    self.response = packages_pb2.BuildsChromeResponse()
+
+  def _GetRequest(self, board=None):
+    """Helper to build out a request."""
+    request = packages_pb2.BuildsChromeRequest()
+
+    if board:
+      request.build_target.name = board
+
+    return request
+
+  def testValidateOnly(self):
+    """Sanity check that a validate only call does not execute any logic."""
+    patch = self.PatchObject(packages_service, 'has_prebuilt')
+
+    request = self._GetRequest(board='betty')
+    packages_controller.BuildsChrome(request, self.response,
+                                     self.validate_only_config)
+    patch.assert_not_called()
+
+  def testNoBuildTargetFails(self):
+    """No build target argument should fail."""
+    request = self._GetRequest()
+
+    with self.assertRaises(cros_build_lib.DieSystemExit):
+      packages_controller.BuildsChrome(request, self.response, self.api_config)