Build API: Implement validate_only calls.
Add validate-only support to all existing endpoints and
tests to enforce the setting is respected.
Add is_in validator to help transition some endpoints
to decorator-only validation.
Some cleanup and standardization in the controller tests.
BUG=chromium:987263
TEST=run_tests
Cq-Depend: chromium:1726252
Change-Id: I108dfc1a221847eae47a18f2f60e12d2575c9ea8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1726253
Reviewed-by: David Burger <dburger@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/api_unittest.py b/api/controller/api_unittest.py
index 63d136c..34c2bca 100644
--- a/api/controller/api_unittest.py
+++ b/api/controller/api_unittest.py
@@ -7,42 +7,63 @@
from __future__ import print_function
+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 cros_test_lib
-class GetMethodsTest(cros_test_lib.MockTestCase):
+class GetMethodsTest(cros_test_lib.MockTestCase, api_config.ApiConfigMixin):
"""GetMethods tests."""
+ def setUp(self):
+ self.request = api_pb2.MethodGetRequest()
+ self.response = api_pb2.MethodGetResponse()
+
def testGetMethods(self):
"""Simple GetMethods sanity check."""
methods = ['foo', 'bar']
self.PatchObject(router.Router, 'ListMethods', return_value=methods)
- request = api_pb2.MethodGetRequest()
- response = api_pb2.MethodGetResponse()
+ api_controller.GetMethods(self.request, self.response, self.api_config)
- api_controller.GetMethods(request, response)
+ self.assertItemsEqual(methods, [m.method for m in self.response.methods])
- self.assertItemsEqual(methods, [m.method for m in response.methods])
+ def testValidateOnly(self):
+ """Sanity check validate only calls only validate."""
+ patch = self.PatchObject(router.Router, 'ListMethods')
+
+ api_controller.GetMethods(self.request, self.response,
+ self.validate_only_config)
+
+ patch.assert_not_called()
-class GetVersionTest(cros_test_lib.MockTestCase):
+class GetVersionTest(cros_test_lib.MockTestCase, api_config.ApiConfigMixin):
"""GetVersion tests."""
- def testGetVersion(self):
- """Simple GetVersion sanity check."""
+ def setUp(self):
self.PatchObject(api_controller, 'VERSION_MAJOR', new=1)
self.PatchObject(api_controller, 'VERSION_MINOR', new=2)
self.PatchObject(api_controller, 'VERSION_BUG', new=3)
- request = api_pb2.VersionGetRequest()
- response = api_pb2.VersionGetResponse()
+ self.request = api_pb2.VersionGetRequest()
+ self.response = api_pb2.VersionGetResponse()
- api_controller.GetVersion(request, response)
+ def testGetVersion(self):
+ """Simple GetVersion sanity check."""
+ api_controller.GetVersion(self.request, self.response, self.api_config)
- self.assertEqual(response.version.major, 1)
- self.assertEqual(response.version.minor, 2)
- self.assertEqual(response.version.bug, 3)
+ self.assertEqual(self.response.version.major, 1)
+ self.assertEqual(self.response.version.minor, 2)
+ self.assertEqual(self.response.version.bug, 3)
+
+ def testValidateOnly(self):
+ """Sanity check validate only calls only validate."""
+ api_controller.GetVersion(self.request, self.response,
+ self.validate_only_config)
+
+ self.assertFalse(self.response.version.major)
+ self.assertFalse(self.response.version.minor)
+ self.assertFalse(self.response.version.bug)