basic plumbing for local signing for paygen

BUG=b:299105459
TEST=run_tests

Change-Id: I422c576850143452e5fdd07b922daa963509eb58
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4893883
Reviewed-by: Chris Gerber <gerb@google.com>
Commit-Queue: Jack Neus <jackneus@google.com>
Tested-by: Jack Neus <jackneus@google.com>
diff --git a/api/controller/payload_unittest.py b/api/controller/payload_unittest.py
index 4332f00..ef58e9c 100644
--- a/api/controller/payload_unittest.py
+++ b/api/controller/payload_unittest.py
@@ -9,6 +9,7 @@
 from chromite.api.controller import payload
 from chromite.api.gen.chromite.api import payload_pb2
 from chromite.api.gen.chromiumos import common_pb2
+from chromite.lib import cros_build_lib
 from chromite.lib import cros_test_lib
 from chromite.lib.paygen import paygen_payload_lib
 
@@ -171,3 +172,33 @@
             response_code,
             controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE,
         )
+
+    def testLocalSigningSuccess(self):
+        """Test a local signing paygen request."""
+        patch = self.PatchObject(paygen_payload_lib, "PaygenPayload")
+        patch.return_value.Run.return_value = {
+            1: ("/tmp/aohiwdadoi/delta.bin", "gs://minios/something")
+        }
+
+        req = self.req
+        req.use_local_signing = True
+        req.docker_image = (
+            "us-docker.pkg.dev/chromeos-bot/signing/signing:16963491"
+        )
+
+        res = payload.GeneratePayload(self.req, self.result, self.api_config)
+        self.assertEqual(res, controller.RETURN_CODE_SUCCESS)
+
+    def testLocalSigningFailure(self):
+        """Test a local signing paygen request."""
+        patch = self.PatchObject(paygen_payload_lib, "PaygenPayload")
+        patch.return_value.Run.return_value = {
+            1: ("/tmp/aohiwdadoi/delta.bin", "gs://minios/something")
+        }
+
+        req = self.req
+        req.use_local_signing = True
+
+        # No docker image, will fail.
+        with self.assertRaises(cros_build_lib.DieSystemExit):
+            payload.GeneratePayload(self.req, self.result, self.api_config)