controller/api: Implement CompileProtos endpoint.
BUG=b:162381958
TEST=manual
Change-Id: I68d696e43ff358fa2606c3ff0411c7d8a2f7f3a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2708607
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: LaMont Jones <lamontjones@chromium.org>
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/api_unittest.py b/api/controller/api_unittest.py
index 040cd75..799a43d 100644
--- a/api/controller/api_unittest.py
+++ b/api/controller/api_unittest.py
@@ -7,13 +7,51 @@
from __future__ import print_function
+import os
+
from chromite.api import api_config
from chromite.api import router
from chromite.api.controller import api as api_controller
from chromite.api.gen.chromite.api import api_pb2
+from chromite.lib import constants
from chromite.lib import cros_test_lib
+class CompileProtoTest(cros_test_lib.RunCommandTestCase,
+ api_config.ApiConfigMixin):
+ """CompileProto tests."""
+
+ def setUp(self):
+ self.request = api_pb2.CompileProtoRequest()
+ self.response = api_pb2.CompileProtoResponse()
+
+ def testCompileProto(self):
+ """Quick CompileProto functional check."""
+ self.rc.SetDefaultCmdResult(stdout=' M foo/bar.py')
+ expected = [os.path.join(constants.CHROMITE_DIR, 'foo/bar.py')]
+
+ api_controller.CompileProto(self.request, self.response, self.api_config)
+ returned = [f.path for f in self.response.modified_files]
+
+ self.assertCountEqual(expected, returned)
+ self.assertTrue(all(f in returned for f in expected))
+ self.assertTrue(all(f in expected for f in returned))
+
+ def testValidateOnly(self):
+ """Verify validate only calls do not execute logic."""
+ api_controller.CompileProto(self.request, self.response,
+ self.validate_only_config)
+
+ self.assertFalse(self.rc.call_count)
+
+ def testMockSuccess(self):
+ """Verify mock success calls do not execute logic."""
+ api_controller.CompileProto(self.request, self.response,
+ self.mock_call_config)
+ self.assertTrue(len(self.response.modified_files))
+ self.assertFalse(self.rc.call_count)
+
+
class GetMethodsTest(cros_test_lib.MockTestCase, api_config.ApiConfigMixin):
"""GetMethods tests."""