BuildAPI: Finish Package Mock responses.
BUG=chromium:1000854
TEST=run_tests
Change-Id: Ifa23018b44889ab0492602a69378a194d9e8ca43
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1887310
Tested-by: Michael Mortensen <mmortensen@google.com>
Reviewed-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Michael Mortensen <mmortensen@google.com>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index 158fa93..62d51f7 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -25,8 +25,13 @@
binhost_pb2.OVERLAYTYPE_BOTH: constants.BOTH_OVERLAYS,
}
+def _UprevResponse(_input_proto, output_proto, _config):
+ """Add fake paths to a successful uprev response."""
+ output_proto.modified_ebuilds.add().path = '/fake/path1'
+ output_proto.modified_ebuilds.add().path = '/fake/path2'
-@faux.all_empty
+@faux.success(_UprevResponse)
+@faux.empty_error
@validate.require('overlay_type')
@validate.is_in('overlay_type', _OVERLAY_TYPE_TO_NAME)
@validate.validation_complete
@@ -49,7 +54,14 @@
output_proto.modified_ebuilds.add().path = path
-@faux.all_empty
+def _UprevVersionedPackageResponse(_input_proto, output_proto, _config):
+ """Add fake paths to a successful uprev versioned package response."""
+ uprev_response = output_proto.responses.add()
+ uprev_response.modified_ebuilds.add().path = '/uprev/response/path'
+
+
+@faux.success(_UprevVersionedPackageResponse)
+@faux.empty_error
@validate.require('versions')
@validate.require('package_info.package_name', 'package_info.category')
@validate.validation_complete
@@ -83,7 +95,18 @@
uprev_response.modified_ebuilds.add().path = path
-@faux.all_empty
+def _GetBestVisibleResponse(_input_proto, output_proto, _config):
+ """Add fake paths to a successful GetBestVisible response."""
+ package_info = common_pb2.PackageInfo(
+ category='category',
+ package_name='name',
+ version='1.01',
+ )
+ output_proto.package_info.CopyFrom(package_info)
+
+
+@faux.success(_GetBestVisibleResponse)
+@faux.empty_error
@validate.require('atom')
@validate.validation_complete
def GetBestVisible(input_proto, output_proto, _config):
@@ -113,7 +136,19 @@
output_proto.version = packages.determine_chrome_version(build_target)
-@faux.all_empty
+def _GetTargetVersionsResponse(_input_proto, output_proto, _config):
+ """Add fake target version fields to a successful response."""
+ output_proto.android_version = '5812377'
+ output_proto.android_branch_version = 'git_nyc-mr1-arc'
+ output_proto.android_target_version = 'cheets'
+ output_proto.chrome_version = '78.0.3900.0'
+ output_proto.platform_version = '12438.0.0'
+ output_proto.milestone_version = '78'
+ output_proto.full_version = 'R78-12438.0.0'
+
+
+@faux.success(_GetTargetVersionsResponse)
+@faux.empty_error
@validate.require('build_target.name')
@validate.validation_complete
def GetTargetVersions(input_proto, output_proto, _config):
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index d89a53f..85fb125 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -51,6 +51,15 @@
packages_controller.Uprev(request, 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(packages_service, 'uprev_build_targets')
+ targets = ['foo', 'bar']
+ request = self._GetRequest(targets=targets, overlay_type=self._BOTH)
+ packages_controller.Uprev(request, self.response, self.mock_call_config)
+ patch.assert_not_called()
+ self.assertTrue(self.response.modified_ebuilds)
+
def testNoOverlayTypeFails(self):
"""No overlay type provided should fail."""
request = self._GetRequest(targets=['foo'])
@@ -118,6 +127,16 @@
service.assert_not_called()
+ def testMockCall(self):
+ """Test that a mock call does not execute logic, returns mocked value."""
+ patch = self.PatchObject(packages_service, 'uprev_versioned_package')
+ request = packages_pb2.UprevVersionedPackageRequest()
+ packages_controller.UprevVersionedPackage(request, self.response,
+ self.mock_call_config)
+ patch.assert_not_called()
+ self.assertTrue(self.response.responses)
+ self.assertTrue(self.response.responses[0].modified_ebuilds)
+
def testNoVersions(self):
"""Test no versions provided."""
request = packages_pb2.UprevVersionedPackageRequest()
@@ -208,6 +227,18 @@
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(packages_service, 'get_best_visible')
+ request = self._GetRequest(atom='chromeos-chrome')
+ packages_controller.GetBestVisible(request, self.response,
+ self.mock_call_config)
+ patch.assert_not_called()
+ self.assertTrue(self.response.package_info)
+ self.assertTrue(self.response.package_info.category)
+ self.assertTrue(self.response.package_info.package_name)
+ self.assertTrue(self.response.package_info.version)
+
def testNoAtomFails(self):
"""No atom provided should fail."""
request = self._GetRequest()
@@ -321,6 +352,46 @@
milestone_version.assert_not_called()
full_version.assert_not_called()
+ def testMockCall(self):
+ """Test that a mock call does not execute logic, returns mocked value."""
+ builds_chrome = self.PatchObject(
+ packages_service, 'builds', return_value=True)
+ patch_version = self.PatchObject(packages_service,
+ 'determine_android_version')
+ patch_branch_version = self.PatchObject(packages_service,
+ 'determine_android_branch')
+ patch_target_version = self.PatchObject(packages_service,
+ 'determine_android_target')
+ chrome_version = self.PatchObject(packages_service,
+ 'determine_chrome_version')
+ platform_version = self.PatchObject(packages_service,
+ 'determine_platform_version')
+ milestone_version = self.PatchObject(packages_service,
+ 'determine_milestone_version')
+ full_version = self.PatchObject(packages_service,
+ 'determine_full_version')
+
+ request = self._GetRequest(board='betty')
+ packages_controller.GetTargetVersions(request, self.response,
+ self.mock_call_config)
+
+ patch_version.assert_not_called()
+ patch_branch_version.assert_not_called()
+ patch_target_version.assert_not_called()
+ builds_chrome.assert_not_called()
+ chrome_version.assert_not_called()
+ platform_version.assert_not_called()
+ milestone_version.assert_not_called()
+ full_version.assert_not_called()
+
+ self.assertTrue(self.response.android_version)
+ self.assertTrue(self.response.android_branch_version)
+ self.assertTrue(self.response.android_target_version)
+ self.assertTrue(self.response.chrome_version)
+ self.assertTrue(self.response.platform_version)
+ self.assertTrue(self.response.milestone_version)
+ self.assertTrue(self.response.full_version)
+
def testNoBuildTargetFails(self):
"""No build target argument should fail."""
request = self._GetRequest()