Files
iDRAC_Info/tests/test_redfish_client.py
2025-11-28 18:27:15 +09:00

65 lines
2.4 KiB
Python

import pytest
from unittest.mock import MagicMock, patch
from flask import Flask
from backend.services.redfish_client import RedfishClient
@pytest.fixture
def app():
app = Flask(__name__)
app.config["REDFISH_TIMEOUT"] = 10
app.config["REDFISH_VERIFY_SSL"] = True
return app
@patch("backend.services.redfish_client.requests.Session")
def test_redfish_client_init_defaults(mock_session):
"""Test initialization with default values when no app context."""
client = RedfishClient("1.2.3.4", "user", "pass")
assert client.timeout == 15
assert client.verify_ssl == False
assert client.base_url == "https://1.2.3.4/redfish/v1"
@patch("backend.services.redfish_client.requests.Session")
def test_redfish_client_init_with_app_config(mock_session, app):
"""Test initialization picking up Flask app config."""
with app.app_context():
client = RedfishClient("1.2.3.4", "user", "pass")
assert client.timeout == 10
assert client.verify_ssl == True
@patch("backend.services.redfish_client.requests.Session")
def test_redfish_client_init_override(mock_session, app):
"""Test explicit arguments override config."""
with app.app_context():
client = RedfishClient("1.2.3.4", "user", "pass", timeout=30, verify_ssl=False)
assert client.timeout == 30
assert client.verify_ssl == False
@patch("backend.services.redfish_client.requests.Session")
def test_get_success(mock_session):
"""Test successful GET request."""
mock_response = MagicMock()
mock_response.json.return_value = {"key": "value"}
mock_response.status_code = 200
session_instance = mock_session.return_value
session_instance.get.return_value = mock_response
client = RedfishClient("1.2.3.4", "user", "pass")
result = client.get("/Some/Endpoint")
assert result == {"key": "value"}
session_instance.get.assert_called_with("https://1.2.3.4/redfish/v1/Some/Endpoint", timeout=15)
@patch("backend.services.redfish_client.requests.Session")
def test_get_absolute_path(mock_session):
"""Test GET request with absolute path."""
mock_response = MagicMock()
mock_response.json.return_value = {}
session_instance = mock_session.return_value
session_instance.get.return_value = mock_response
client = RedfishClient("1.2.3.4", "user", "pass")
client.get("/redfish/v1/Managers/1")
session_instance.get.assert_called_with("https://1.2.3.4/redfish/v1/Managers/1", timeout=15)