"""Tests for the power related API functions""" import pytest import requests from redfish_cli.api import power from redfish_cli.api.exceptions import FailedToSetPowerState from tests.api import args from ..utils import get_test_json, MockRedfishResponse, MockResponse def test_power_state(monkeypatch): """Test the get power_state API call""" def mock_get(*aargs, **kwargs): # pylint: disable=unused-argument mock_redfish = MockRedfishResponse() mock_redfish.json_dict = get_test_json("api_power_state.json") return MockResponse(content=mock_redfish.text) monkeypatch.setattr(requests, "get", mock_get) _args = args() _args.system = "System.Embedded.1" power_state = power.system_power_state(_args) assert power_state == "Off" def test_power_states_allowed(monkeypatch): """Test the poert starts allowed API function""" def mock_get(*aargs, **kwargs): # pylint: disable=unused-argument mock_redfish = MockRedfishResponse() mock_redfish.json_dict = get_test_json("power_states_allowed.json") return MockResponse(content=mock_redfish.text) monkeypatch.setattr(requests, "get", mock_get) _args = args() _args.system = "system" power_states = power.system_power_states_allowed(_args) assert power_states == [ "On", "ForceOff", "ForceRestart", "GracefulShutdown", "PushPowerButton", "Nmi", ] def test_set_power_state(monkeypatch): """Test the set power state API call""" def mock_post(*aargs, **kwargs): # pylint: disable=unused-argument return MockResponse(content="{}") monkeypatch.setattr(requests, "post", mock_post) _args = args() _args.system = "System.Embedded.1" _args.power_state = "On" result = power.system_set_power_state(_args) assert result == "Powerstate set to On" monkeypatch.setattr( requests, "post", lambda *args, **kwargs: MockResponse(ok=False) ) with pytest.raises(FailedToSetPowerState): _ = power.system_set_power_state(_args) def test_system_reset(monkeypatch): """Test resetting a system""" monkeypatch.setattr( requests, "post", lambda args, auth=None, verify=None, data=None, headers=None, timeout=None: MockResponse( content="{}" ), ) _args = args( system="System.Embedded.1", ) result = power.system_reset(_args) assert result == "System reset" monkeypatch.setattr( requests, "post", lambda args, auth=None, verify=None, data=None, headers=None, timeout=None: MockResponse( ok=False ), ) with pytest.raises(FailedToSetPowerState): result = power.system_reset(_args)