diff --git a/src/quads_lib/quads.py b/src/quads_lib/quads.py index bb82fd2..986d5c8 100644 --- a/src/quads_lib/quads.py +++ b/src/quads_lib/quads.py @@ -348,6 +348,13 @@ def update_vlan(self, vlan_id: int, data: dict) -> dict: def create_vlan(self, data: dict) -> dict: return self.post("vlans", data) + # OS + @returns("List[OS]") + def get_os_list(self) -> dict: + endpoint = Path("hosts") / "os_list" + json_response = self.get(str(endpoint)) + return json_response + # Moves def get_moves(self, date: Optional[str] = None) -> dict: url = "moves" diff --git a/tests/test_quads.py b/tests/test_quads.py index ebf40f3..10eccf7 100644 --- a/tests/test_quads.py +++ b/tests/test_quads.py @@ -1694,6 +1694,33 @@ def test_create_vlan(self, mock_post): assert mock_post.call_args[1]["json"] == vlan_data assert result == vlan_data + @patch("requests.Session.request") + def test_get_os_list(self, mock_get): + expected_response = [ + {"Id": 1, "Title": "RHEL 9.4", "Release Name": "Plow", "Family": "rhel"}, + {"Id": 2, "Title": "RHEL 8.10", "Release Name": "Ootpa", "Family": "rhel"}, + ] + mock_response = Mock() + mock_response.json.return_value = expected_response + mock_get.return_value = mock_response + + result = self.api.get_os_list() + + mock_get.assert_called_once() + assert str(mock_get.call_args[0][1]).endswith("/hosts/os_list") + assert result == expected_response + + @patch("requests.Session.request") + def test_get_os_list_empty(self, mock_get): + mock_response = Mock() + mock_response.json.return_value = [] + mock_get.return_value = mock_response + + result = self.api.get_os_list() + + mock_get.assert_called_once() + assert result == [] + @patch("requests.Session.request") def test_get_moves(self, mock_get): expected_response = { @@ -1776,6 +1803,15 @@ def test_get_vlans_error(self, mock_get): with pytest.raises(APIServerException, match="Check the flask server logs"): self.api.get_vlans() + @patch("requests.Session.request") + def test_get_os_list_error(self, mock_get): + mock_response = Mock() + mock_response.status_code = 500 + mock_get.return_value = mock_response + + with pytest.raises(APIServerException, match="Check the flask server logs"): + self.api.get_os_list() + @patch("requests.Session.request") def test_get_version_error(self, mock_get): mock_response = Mock()