]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/tests/test_rgw_client.py
1 # -*- coding: utf-8 -*-
2 # pylint: disable=too-many-public-methods
6 from unittest
.mock
import patch
8 from mock
import patch
# type: ignore
10 from ..services
.rgw_client
import RgwClient
, _parse_frontend_config
11 from ..settings
import Settings
12 from . import KVStoreMockMixin
15 def _dummy_daemon_info():
17 'addr': '172.20.0.2:0/256594694',
19 'zonegroup_name': 'zonegroup2-realm1'
24 @patch('dashboard.services.rgw_client._get_daemon_info', _dummy_daemon_info
)
25 class RgwClientTest(unittest
.TestCase
, KVStoreMockMixin
):
27 RgwClient
._user
_instances
.clear() # pylint: disable=protected-access
29 self
.CONFIG_KEY_DICT
.update({
30 'RGW_API_ACCESS_KEY': 'klausmustermann',
31 'RGW_API_SECRET_KEY': 'supergeheim',
32 'RGW_API_HOST': 'localhost',
33 'RGW_API_USER_ID': 'rgwadmin'
36 def test_ssl_verify(self
):
37 Settings
.RGW_API_SSL_VERIFY
= True
38 instance
= RgwClient
.admin_instance()
39 self
.assertTrue(instance
.session
.verify
)
41 def test_no_ssl_verify(self
):
42 Settings
.RGW_API_SSL_VERIFY
= False
43 instance
= RgwClient
.admin_instance()
44 self
.assertFalse(instance
.session
.verify
)
46 @patch.object(RgwClient
, '_get_daemon_zone_info')
47 def test_get_placement_targets_from_zone(self
, zone_info
):
48 zone_info
.return_value
= {
49 'id': 'a0df30ea-4b5b-4830-b143-2bedf684663d',
52 'key': 'default-placement',
54 'index_pool': 'default.rgw.buckets.index',
57 'data_pool': 'default.rgw.buckets.data'
65 instance
= RgwClient
.admin_instance()
67 'zonegroup': 'zonegroup2-realm1',
68 'placement_targets': [
70 'name': 'default-placement',
71 'data_pool': 'default.rgw.buckets.data'
75 self
.assertEqual(expected_result
, instance
.get_placement_targets())
77 @patch.object(RgwClient
, '_get_realms_info')
78 def test_get_realms(self
, realms_info
):
79 realms_info
.side_effect
= [
81 'default_info': '51de8373-bc24-4f74-a9b7-8e9ef4cb71f7',
89 instance
= RgwClient
.admin_instance()
91 self
.assertEqual(['realm1', 'realm2'], instance
.get_realms())
92 self
.assertEqual([], instance
.get_realms())
95 class RgwClientHelperTest(unittest
.TestCase
):
96 def test_parse_frontend_config_1(self
):
97 self
.assertEqual(_parse_frontend_config('beast port=8000'), (8000, False))
99 def test_parse_frontend_config_2(self
):
100 self
.assertEqual(_parse_frontend_config('beast port=80 port=8000'), (80, False))
102 def test_parse_frontend_config_3(self
):
103 self
.assertEqual(_parse_frontend_config('beast ssl_port=443 port=8000'), (443, True))
105 def test_parse_frontend_config_4(self
):
106 self
.assertEqual(_parse_frontend_config('beast endpoint=192.168.0.100:8000'), (8000, False))
108 def test_parse_frontend_config_5(self
):
109 self
.assertEqual(_parse_frontend_config('beast endpoint=[::1]'), (80, False))
111 def test_parse_frontend_config_6(self
):
112 self
.assertEqual(_parse_frontend_config(
113 'beast ssl_endpoint=192.168.0.100:8443'), (8443, True))
115 def test_parse_frontend_config_7(self
):
116 self
.assertEqual(_parse_frontend_config('beast ssl_endpoint=192.168.0.100'), (443, True))
118 def test_parse_frontend_config_8(self
):
119 self
.assertEqual(_parse_frontend_config(
120 'beast ssl_endpoint=[::1]:8443 endpoint=192.0.2.3:80'), (8443, True))
122 def test_parse_frontend_config_9(self
):
123 self
.assertEqual(_parse_frontend_config(
124 'beast port=8080 endpoint=192.0.2.3:80'), (8080, False))
126 def test_parse_frontend_config_10(self
):
127 self
.assertEqual(_parse_frontend_config(
128 'beast ssl_endpoint=192.0.2.3:8443 port=8080'), (8443, True))
130 def test_parse_frontend_config_11(self
):
131 self
.assertEqual(_parse_frontend_config('civetweb port=8000s'), (8000, True))
133 def test_parse_frontend_config_12(self
):
134 self
.assertEqual(_parse_frontend_config('civetweb port=443s port=8000'), (443, True))
136 def test_parse_frontend_config_13(self
):
137 self
.assertEqual(_parse_frontend_config('civetweb port=192.0.2.3:80'), (80, False))
139 def test_parse_frontend_config_14(self
):
140 self
.assertEqual(_parse_frontend_config('civetweb port=172.5.2.51:8080s'), (8080, True))
142 def test_parse_frontend_config_15(self
):
143 self
.assertEqual(_parse_frontend_config('civetweb port=[::]:8080'), (8080, False))
145 def test_parse_frontend_config_16(self
):
146 self
.assertEqual(_parse_frontend_config('civetweb port=ip6-localhost:80s'), (80, True))
148 def test_parse_frontend_config_17(self
):
149 self
.assertEqual(_parse_frontend_config('civetweb port=[2001:0db8::1234]:80'), (80, False))
151 def test_parse_frontend_config_18(self
):
152 self
.assertEqual(_parse_frontend_config('civetweb port=[::1]:8443s'), (8443, True))
154 def test_parse_frontend_config_19(self
):
155 self
.assertEqual(_parse_frontend_config('civetweb port=127.0.0.1:8443s+8000'), (8443, True))
157 def test_parse_frontend_config_20(self
):
158 self
.assertEqual(_parse_frontend_config('civetweb port=127.0.0.1:8080+443s'), (8080, False))
160 def test_parse_frontend_config_21(self
):
161 with self
.assertRaises(LookupError) as ctx
:
162 _parse_frontend_config('civetweb port=xyz')
163 self
.assertEqual(str(ctx
.exception
),
164 'Failed to determine RGW port from "civetweb port=xyz"')
166 def test_parse_frontend_config_22(self
):
167 with self
.assertRaises(LookupError) as ctx
:
168 _parse_frontend_config('civetweb')
169 self
.assertEqual(str(ctx
.exception
), 'Failed to determine RGW port from "civetweb"')
171 def test_parse_frontend_config_23(self
):
172 with self
.assertRaises(LookupError) as ctx
:
173 _parse_frontend_config('mongoose port=8080')
174 self
.assertEqual(str(ctx
.exception
),
175 'Failed to determine RGW port from "mongoose port=8080"')