65 lines
2.4 KiB
Python
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)
|