BuildAPI: Add unit tests and mocks for Test service.

Regenerated api/gen/chromite/api/test_pb2.py by running
api/compile_build_api_proto.

BUG=chromium:1029033
TEST=run_tests

Change-Id: I8b6d8dc991fa97e2df60d30acb5027feb308729b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1945787
Tested-by: Michael Mortensen <mmortensen@google.com>
Reviewed-by: Michael Mortensen <mmortensen@google.com>
diff --git a/api/controller/test.py b/api/controller/test.py
index 2f26f35..9ac83a9 100644
--- a/api/controller/test.py
+++ b/api/controller/test.py
@@ -24,6 +24,7 @@
 from chromite.lib import cros_build_lib
 from chromite.lib import image_lib
 from chromite.lib import osutils
+from chromite.lib import portage_util
 from chromite.lib import sysroot_lib
 from chromite.scripts import cros_set_lsb_release
 from chromite.service import test
@@ -58,7 +59,23 @@
     return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
 
 
-@faux.all_empty
+def _BuildTargetUnitTestResponse(input_proto, output_proto, _config):
+  """Add tarball path to a successful response."""
+  output_proto.tarball_path = os.path.join(input_proto.result_path,
+                                           'unit_tests.tar')
+
+
+def _BuildTargetUnitTestFailedResponse(_input_proto, output_proto, _config):
+  """Add failed packages to a failed response."""
+  packages = ['foo/bar', 'cat/pkg']
+  failed_cpvs = [portage_util.SplitCPV(p, strict=False) for p in packages]
+  for cpv in failed_cpvs:
+    package_info = output_proto.failed_packages.add()
+    controller_util.CPVToPackageInfo(cpv, package_info)
+
+
+@faux.success(_BuildTargetUnitTestResponse)
+@faux.error(_BuildTargetUnitTestFailedResponse)
 @validate.require('build_target.name', 'result_path')
 @validate.exists('result_path')
 @validate.validation_complete
@@ -116,7 +133,6 @@
     return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
 
 
-
 @faux.all_empty
 @validate.require('sysroot.path', 'sysroot.build_target.name', 'chrome_root')
 @validate.validation_complete