summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/dashboard/tests/test_daemon.py
blob: 4ba23866d076a2fc961ea9a481e678f3d4854444 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-

from ..controllers._version import APIVersion
from ..controllers.daemon import Daemon
from ..tests import ControllerTestCase, patch_orch


class DaemonTest(ControllerTestCase):

    URL_DAEMON = '/api/daemon'

    @classmethod
    def setup_server(cls):
        cls.setup_controllers([Daemon])

    def test_daemon_action(self):
        msg = "Scheduled to stop crash.b78cd1164a1b on host 'hostname'"

        with patch_orch(True) as fake_client:
            fake_client.daemons.action.return_value = msg
            payload = {
                'action': 'restart',
                'container_image': None
            }
            self._put(f'{self.URL_DAEMON}/crash.b78cd1164a1b', payload, version=APIVersion(0, 1))
            self.assertJsonBody(msg)
            self.assertStatus(200)

    def test_daemon_invalid_action(self):
        payload = {
            'action': 'invalid',
            'container_image': None
        }
        with patch_orch(True):
            self._put(f'{self.URL_DAEMON}/crash.b78cd1164a1b', payload, version=APIVersion(0, 1))
            self.assertJsonBody({
                'detail': 'Daemon action "invalid" is either not valid or not supported.',
                'code': 'invalid_daemon_action',
                'component': None
            })
            self.assertStatus(400)

    def test_daemon_list(self):
        with patch_orch(True):
            self._get(f'{self.URL_DAEMON}')
            self.assertStatus(200)