]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/tests/test_orchestrator.py
import ceph 16.2.7
[ceph.git] / ceph / src / pybind / mgr / dashboard / tests / test_orchestrator.py
1 import inspect
2 import unittest
3 from unittest import mock
4
5 from orchestrator import Orchestrator as OrchestratorBase
6
7 from ..controllers.orchestrator import Orchestrator
8 from ..services.orchestrator import OrchFeature
9 from ..tests import ControllerTestCase
10
11
12 class OrchestratorControllerTest(ControllerTestCase):
13 URL_STATUS = '/api/orchestrator/status'
14 URL_INVENTORY = '/api/orchestrator/inventory'
15
16 @classmethod
17 def setup_server(cls):
18 cls.setup_controllers([Orchestrator])
19
20 @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
21 def test_status_get(self, instance):
22 status = {'available': False, 'description': ''}
23
24 fake_client = mock.Mock()
25 fake_client.status.return_value = status
26 instance.return_value = fake_client
27
28 self._get(self.URL_STATUS)
29 self.assertStatus(200)
30 self.assertJsonBody(status)
31
32
33 class TestOrchestrator(unittest.TestCase):
34 def test_features_has_corresponding_methods(self):
35 defined_methods = [v for k, v in inspect.getmembers(
36 OrchFeature, lambda m: not inspect.isroutine(m)) if not k.startswith('_')]
37 orchestrator_methods = [k for k, v in inspect.getmembers(
38 OrchestratorBase, inspect.isroutine)]
39 for method in defined_methods:
40 self.assertIn(method, orchestrator_methods)