api: add GetToolchainsForBoard endpoint

Also fix linting errors in toolchain.py.

BUG=b:237098403
TEST=unit tests

Change-Id: Iac5247859a81800116ddc56bd2257d4eb294618c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3727613
Reviewed-by: Madeleine Hardt <hardtmad@google.com>
Reviewed-by: Chris Gerber <gerb@google.com>
Commit-Queue: Jack Neus <jackneus@google.com>
Reviewed-by: Sloan Johnson <sloanjohnson@google.com>
Tested-by: Jack Neus <jackneus@google.com>
diff --git a/api/controller/toolchain_unittest.py b/api/controller/toolchain_unittest.py
index a5a9ed8..8a7dabe 100644
--- a/api/controller/toolchain_unittest.py
+++ b/api/controller/toolchain_unittest.py
@@ -17,6 +17,7 @@
 from chromite.lib import cros_build_lib
 from chromite.lib import cros_test_lib
 from chromite.lib import osutils
+from chromite.lib import toolchain as toolchain_lib
 from chromite.lib import toolchain_util
 
 
@@ -300,3 +301,38 @@
     )
     self.assertIn('Commit Message', self.response.commit_message)
     self.assertEqual(len(self.response.commit_footer), 0)
+
+
+class GetToolchainsForBoardTest(cros_test_lib.MockTempDirTestCase,
+                                api_config.ApiConfigMixin):
+  """Unittests for GetToolchainsForBoard."""
+
+  def setUp(self):
+    self.response = toolchain_pb2.ToolchainsResponse()
+
+  def _GetRequest(self, board='betty-pi-arc'):
+    return toolchain_pb2.ToolchainsRequest(board=board)
+
+  def testValidateOnly(self):
+    """Confidence check that a validate only call does not execute any logic."""
+    request = self._GetRequest()
+    toolchain.GetToolchainsForBoard(request, self.response,
+                                    self.validate_only_config)
+
+  def testUpdateSuccess(self):
+    toolchain_info = {
+        'default-a': {'default': True},
+        'default-b': {'default': True},
+        'nondefault-a': {'default': False},
+        'nondefault-b': {'default': False},
+    }
+    self.PatchObject(toolchain_lib, 'GetToolchainsForBoard',
+                     return_value=toolchain_info)
+
+    request = self._GetRequest()
+    toolchain.GetToolchainsForBoard(request, self.response, self.api_config)
+
+    self.assertEqual(self.response.default_toolchains,
+                     ['default-a', 'default-b'])
+    self.assertEqual(self.response.nondefault_toolchains,
+                     ['nondefault-a', 'nondefault-b'])