BuildAPI: Add unit tests and mocks for Dependency Service.
BUG=chromium:1000851
TEST=run_tests
Change-Id: Ib984eaa6e5dd812094bd27f103eaa70cf375d6ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1922991
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Michael Mortensen <mmortensen@google.com>
Tested-by: Michael Mortensen <mmortensen@google.com>
diff --git a/api/controller/dependency_unittest.py b/api/controller/dependency_unittest.py
index 18b2f10..1ec664e 100644
--- a/api/controller/dependency_unittest.py
+++ b/api/controller/dependency_unittest.py
@@ -6,16 +6,20 @@
from __future__ import print_function
+from chromite.api import api_config
from chromite.api.controller import dependency
from chromite.api.gen.chromite.api import depgraph_pb2
from chromite.lib import cros_test_lib
+from chromite.service import dependency as dependency_service
-class BoardBuilDependencyTest(cros_test_lib.TestCase):
+class BoardBuilDependencyTest(cros_test_lib.MockTestCase,
+ api_config.ApiConfigMixin):
"""Unittests for board_build_dependency."""
- def testCreateDepGraphProtoFromJsonMap(self):
- json_deps = {
+ def setUp(self):
+ self.response = depgraph_pb2.GetBuildDependencyGraphResponse()
+ self.json_deps = {
'target_board': 'deathstar',
'package_deps': {
'commander/darthvader-1.49.3.3': {
@@ -56,9 +60,11 @@
},
}
+ def testCreateDepGraphProtoFromJsonMap(self):
+ """Test creating DepGraph protobuf from json map."""
depgraph_proto = depgraph_pb2.DepGraph()
dependency.AugmentDepGraphProtoFromJsonMap(
- json_deps, depgraph_proto)
+ self.json_deps, depgraph_proto)
self.assertEqual(depgraph_proto.build_target.name, 'deathstar')
darthvader_dep = None
for package_dep_info in depgraph_proto.package_deps:
@@ -71,3 +77,34 @@
'clone')
self.assertEqual(darthvader_dep.dependency_source_paths[0].path,
'/control/room')
+
+ def testGetBuildDependencyGraph(self):
+ """GetBuildDependencyGraph calls helper method with correct args."""
+ patch = self.PatchObject(dependency_service,
+ 'GetBuildDependency',
+ return_value=self.json_deps)
+ input_proto = depgraph_pb2.GetBuildDependencyGraphRequest()
+ input_proto.build_target.name = 'target'
+ dependency.GetBuildDependencyGraph(input_proto, self.response,
+ self.api_config)
+ self.assertEqual(self.response.dep_graph.build_target.name, 'deathstar')
+ patch.assert_called_once()
+
+ def testValidateOnly(self):
+ """Sanity check that a validate only call does not execute any logic."""
+ patch = self.PatchObject(dependency_service, 'GetBuildDependency')
+ input_proto = depgraph_pb2.GetBuildDependencyGraphRequest()
+ input_proto.build_target.name = 'target'
+ dependency.GetBuildDependencyGraph(input_proto, self.response,
+ self.validate_only_config)
+ patch.assert_not_called()
+
+ def testMockCall(self):
+ """Test that a mock call does not execute logic, returns mocked value."""
+ patch = self.PatchObject(dependency_service, 'GetBuildDependency')
+ input_proto = depgraph_pb2.GetBuildDependencyGraphRequest()
+ input_proto.build_target.name = 'target'
+ dependency.GetBuildDependencyGraph(input_proto, self.response,
+ self.mock_call_config)
+ patch.assert_not_called()
+ self.assertEqual(self.response.dep_graph.build_target.name, 'target_board')