diff --git a/api/controller/sysroot_unittest.py b/api/controller/sysroot_unittest.py
index 7e06c10..75790e9 100644
--- a/api/controller/sysroot_unittest.py
+++ b/api/controller/sysroot_unittest.py
@@ -58,6 +58,28 @@
                               self.validate_only_config)
     patch.assert_not_called()
 
+  def testMockCall(self):
+    """Sanity check that a mock call does not execute any logic."""
+    patch = self.PatchObject(sysroot_service, 'Create')
+    request = self._InputProto()
+    response = self._OutputProto()
+
+    rc = sysroot_controller.Create(request, response, self.mock_call_config)
+
+    patch.assert_not_called()
+    self.assertEqual(controller.RETURN_CODE_SUCCESS, rc)
+
+  def testMockError(self):
+    """Sanity check that a mock error does not execute any logic."""
+    patch = self.PatchObject(sysroot_service, 'Create')
+    request = self._InputProto()
+    response = self._OutputProto()
+
+    rc = sysroot_controller.Create(request, response, self.mock_error_config)
+
+    patch.assert_not_called()
+    self.assertEqual(controller.RETURN_CODE_UNRECOVERABLE, rc)
+
   def testArgumentValidation(self):
     """Test the input argument validation."""
     # Error when no name provided.
@@ -158,6 +180,31 @@
                                         self.validate_only_config)
     patch.assert_not_called()
 
+  def testMockCall(self):
+    """Sanity check that a mock call does not execute any logic."""
+    patch = self.PatchObject(sysroot_service, 'InstallToolchain')
+    request = self._InputProto()
+    response = self._OutputProto()
+
+    rc = sysroot_controller.InstallToolchain(request, response,
+                                             self.mock_call_config)
+
+    patch.assert_not_called()
+    self.assertEqual(controller.RETURN_CODE_SUCCESS, rc)
+
+  def testMockError(self):
+    """Sanity check that a mock error does not execute any logic."""
+    patch = self.PatchObject(sysroot_service, 'InstallToolchain')
+    request = self._InputProto()
+    response = self._OutputProto()
+
+    rc = sysroot_controller.InstallToolchain(request, response,
+                                             self.mock_error_config)
+
+    patch.assert_not_called()
+    self.assertEqual(controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE, rc)
+    self.assertTrue(response.failed_packages)
+
   def testArgumentValidation(self):
     """Test the argument validation."""
     # Test errors on missing inputs.
@@ -259,6 +306,31 @@
                                        self.validate_only_config)
     patch.assert_not_called()
 
+  def testMockCall(self):
+    """Sanity check that a mock call does not execute any logic."""
+    patch = self.PatchObject(sysroot_service, 'BuildPackages')
+    request = self._InputProto()
+    response = self._OutputProto()
+
+    rc = sysroot_controller.InstallPackages(request, response,
+                                            self.mock_call_config)
+
+    patch.assert_not_called()
+    self.assertEqual(controller.RETURN_CODE_SUCCESS, rc)
+
+  def testMockError(self):
+    """Sanity check that a mock error does not execute any logic."""
+    patch = self.PatchObject(sysroot_service, 'BuildPackages')
+    request = self._InputProto()
+    response = self._OutputProto()
+
+    rc = sysroot_controller.InstallPackages(request, response,
+                                            self.mock_error_config)
+
+    patch.assert_not_called()
+    self.assertEqual(controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE, rc)
+    self.assertTrue(response.failed_packages)
+
   def testArgumentValidationAllMissing(self):
     """Test missing all arguments."""
     out_proto = self._OutputProto()
