1+ import pytest
2+ from unittest .mock import Mock
3+ from openstack_mcp_server .tools .glance_tools import GlanceTools
4+
5+
6+ class TestGlanceTools :
7+ """Test cases for GlanceTools class."""
8+
9+ def test_get_glance_images_success (self , mock_get_openstack_conn_glance ):
10+ """Test getting glance images successfully."""
11+ mock_conn = mock_get_openstack_conn_glance
12+
13+ # Create mock image objects
14+ mock_image1 = Mock ()
15+ mock_image1 .name = "ubuntu-20.04-server"
16+ mock_image1 .id = "img-123-abc-def"
17+ mock_image1 .status = "active"
18+
19+ mock_image2 = Mock ()
20+ mock_image2 .name = "centos-8-stream"
21+ mock_image2 .id = "img-456-ghi-jkl"
22+ mock_image2 .status = "active"
23+
24+ # Configure mock image.images()
25+ mock_conn .image .images .return_value = [mock_image1 , mock_image2 ]
26+
27+ # Test GlanceTools
28+ glance_tools = GlanceTools ()
29+ result = glance_tools .get_glance_images ()
30+
31+ # Verify results
32+ expected_output = (
33+ "ubuntu-20.04-server (img-123-abc-def) - Status: active\n "
34+ "centos-8-stream (img-456-ghi-jkl) - Status: active"
35+ )
36+ assert result == expected_output
37+
38+ # Verify mock calls
39+ mock_conn .image .images .assert_called_once ()
40+
41+ def test_get_glance_images_empty_list (self , mock_get_openstack_conn_glance ):
42+ """Test getting glance images when no images exist."""
43+ mock_conn = mock_get_openstack_conn_glance
44+
45+ # Empty image list
46+ mock_conn .image .images .return_value = []
47+
48+ glance_tools = GlanceTools ()
49+ result = glance_tools .get_glance_images ()
50+
51+ # Verify empty string
52+ assert result == ""
53+
54+ mock_conn .image .images .assert_called_once ()
55+
56+ def test_get_glance_images_with_empty_name (self , mock_get_openstack_conn_glance ):
57+ """Test images with empty or None names."""
58+ mock_conn = mock_get_openstack_conn_glance
59+
60+ # Images with empty name (edge case)
61+ mock_image1 = Mock ()
62+ mock_image1 .name = "normal-image"
63+ mock_image1 .id = "img-normal"
64+ mock_image1 .status = "active"
65+
66+ mock_image2 = Mock ()
67+ mock_image2 .name = "" # Empty name
68+ mock_image2 .id = "img-empty-name"
69+ mock_image2 .status = "active"
70+
71+ mock_conn .image .images .return_value = [mock_image1 , mock_image2 ]
72+
73+ glance_tools = GlanceTools ()
74+ result = glance_tools .get_glance_images ()
75+
76+ assert "normal-image (img-normal) - Status: active" in result
77+ assert " (img-empty-name) - Status: active" in result # Empty name
78+
79+ mock_conn .image .images .assert_called_once ()
0 commit comments