Add GetBuilderMetadata method to Packages controller.
Ran api/compile_build_api_proto. This provides a basic entry point stub
and faux unit tests. Implementation with service methods to follow.
BUG=chromium:1071620
TEST=manual, run_tests
Change-Id: I639bbced2b7d3392fb2fb2d02e9a2a832ea1e2c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2175017
Commit-Queue: Michael Mortensen <mmortensen@google.com>
Tested-by: Michael Mortensen <mmortensen@google.com>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index 297fba0..722f273 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -471,6 +471,51 @@
self.assertFalse(self.response.android_target_version)
self.assertEqual(self.response.platform_version, platform_version)
+
+class GetBuilderMetadataTest(cros_test_lib.MockTestCase, ApiConfigMixin):
+ """GetBuilderMetadata tests."""
+
+ def setUp(self):
+ self.response = packages_pb2.GetBuilderMetadataResponse()
+
+ def _GetRequest(self, board=None):
+ """Helper to build out a request."""
+ request = packages_pb2.GetBuilderMetadataRequest()
+
+ if board:
+ request.build_target.name = board
+
+ return request
+
+ def testValidateOnly(self):
+ """Sanity check that a validate only call does not execute any logic."""
+ request = self._GetRequest(board='betty')
+ # TODO(crbug/1071620): Add/check mock for service layer calls.
+ packages_controller.GetBuilderMetadata(request, self.response,
+ self.validate_only_config)
+
+ def testMockCall(self):
+ """Test that a mock call does not execute logic, returns mocked value."""
+ request = self._GetRequest(board='betty')
+ # TODO(crbug/1071620): Add/check mock for service layer calls.
+ packages_controller.GetBuilderMetadata(request, self.response,
+ self.mock_call_config)
+
+ self.assertEqual(len(self.response.build_target_metadata), 1)
+ self.assertEqual(self.response.build_target_metadata[0].build_target,
+ request.build_target.name)
+ self.assertEqual(len(self.response.model_metadata), 1)
+ self.assertTrue(self.response.model_metadata[0].model_name)
+ self.assertTrue(self.response.model_metadata[0].ec_firmware_version)
+
+ def testNoBuildTargetFails(self):
+ """No build target argument should fail."""
+ request = self._GetRequest()
+
+ with self.assertRaises(cros_build_lib.DieSystemExit):
+ packages_controller.GetBuilderMetadata(request, self.response,
+ self.api_config)
+
class HasChromePrebuiltTest(cros_test_lib.MockTestCase, ApiConfigMixin):
"""HasChromePrebuilt tests."""