Coverage for manila/tests/share/drivers/dell_emc/plugins/powerstore/test_client.py: 100%
406 statements
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
1# Copyright (c) 2023 Dell Inc. or its subsidiaries.
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
16import json
17import os
19import requests_mock
21from manila.share.drivers.dell_emc.plugins.powerstore import client
22from manila import test
25class TestClient(test.TestCase):
27 REST_IP = "192.168.0.110"
28 NAS_SERVER_NAME = "powerstore-nasserver"
29 NAS_SERVER_ID = "6423d56e-eaf3-7424-be0b-1a9efb93188b"
30 NAS_SERVER_IP = "192.168.11.23"
31 NFS_EXPORT_NAME = "powerstore-nfs-share"
32 NFS_EXPORT_SIZE = 3221225472
33 NFS_EXPORT_NEW_SIZE = 6221225472
34 FILESYSTEM_ID = "6454e9a9-a698-e9bc-ca61-1a9efb93188b"
35 NFS_EXPORT_ID = "6454ec18-7b8d-1532-1b8a-1a9efb93188b"
36 RW_HOSTS = "192.168.1.10"
37 RO_HOSTS = "192.168.1.11"
38 SMB_SHARE_NAME = "powerstore-smb-share"
39 SMB_SHARE_ID = "64927ae9-3403-6930-a784-f227b9987c54"
40 RW_USERS = "user1"
41 RO_USERS = "user2"
42 SNAPSHOT_NAME = "powerstore-nfs-share-snap"
43 SNAPSHOT_ID = "6454ea29-09c3-030e-cfc3-1a9efb93188b"
44 CLONE_ID = "64560f05-e677-ec2a-7fcf-1a9efb93188b"
45 CLONE_NAME = "powerstore-nfs-share-snap-clone"
46 CLUSTER_ID = "0"
48 CLIENT_OPTIONS = {
49 "rest_ip": REST_IP,
50 "rest_username": "admin",
51 "rest_password": "pwd",
52 "verify_certificate": False,
53 "certificate_path": None
54 }
56 def setUp(self):
57 super(TestClient, self).setUp()
59 self._mock_url = "https://%s/api/rest" % self.REST_IP
60 self.client = client.PowerStoreClient(**self.CLIENT_OPTIONS)
61 self.mockup_file_base = os.path.join(
62 os.path.dirname(os.path.realpath(__file__)), 'mockup')
64 def _getJsonFile(self, filename):
65 f = open(os.path.join(self.mockup_file_base, filename))
66 data = json.load(f)
67 f.close()
68 return data
70 def test__verify_cert(self):
71 verify_cert = self.client.verify_certificate
72 certificate_path = self.client.certificate_path
73 self.client.verify_certificate = True
74 self.client.certificate_path = "fake_certificate_path"
75 self.assertEqual(self.client._verify_cert,
76 self.client.certificate_path)
77 self.client.verify_certificate = verify_cert
78 self.client.certificate_path = certificate_path
80 @requests_mock.mock()
81 def test__send_request(self, m):
82 url = "{0}/fake_res".format(self._mock_url)
83 m.get(url, status_code=200)
84 self.client._send_get_request("/fake_res", None, None, False)
86 @requests_mock.mock()
87 def test_get_nas_server_id(self, m):
88 self.assertEqual(0, len(m.request_history))
89 self._add_get_nas_server_id_response(
90 m, self.NAS_SERVER_NAME,
91 self._getJsonFile("get_nas_server_id_response.json")
92 )
93 id = self.client.get_nas_server_id(self.NAS_SERVER_NAME)
94 self.assertEqual(id, self.NAS_SERVER_ID)
96 def _add_get_nas_server_id_response(self, m, nas_server, json_str):
97 url = "{0}/nas_server?name=eq.{1}".format(
98 self._mock_url, nas_server
99 )
100 m.get(url, status_code=200, json=json_str)
102 @requests_mock.mock()
103 def test_get_nas_server_id_failure(self, m):
104 self.assertEqual(0, len(m.request_history))
105 self._add_get_nas_server_id_response_failure(
106 m, self.NAS_SERVER_NAME
107 )
108 id = self.client.get_nas_server_id(self.NAS_SERVER_NAME)
109 self.assertIsNone(id)
111 def _add_get_nas_server_id_response_failure(self, m, nas_server):
112 url = "{0}/nas_server?name=eq.{1}".format(
113 self._mock_url, nas_server
114 )
115 m.get(url, status_code=400)
117 @requests_mock.mock()
118 def test_get_nas_server_interfaces(self, m):
119 self.assertEqual(0, len(m.request_history))
120 self._add_get_nas_server_interfaces_response(
121 m, self.NAS_SERVER_ID,
122 self._getJsonFile("get_nas_server_interfaces_response.json")
123 )
124 interfaces = self.client.get_nas_server_interfaces(self.NAS_SERVER_ID)
125 self.assertEqual(interfaces[0]['ip'], self.NAS_SERVER_IP)
126 self.assertEqual(interfaces[0]['preferred'], True)
128 def _add_get_nas_server_interfaces_response(self, m, nas_server_id,
129 json_str):
130 url = "{0}/nas_server/{1}?select=" \
131 "current_preferred_IPv4_interface_id," \
132 "current_preferred_IPv6_interface_id," \
133 "file_interfaces(id,ip_address)".format(
134 self._mock_url, nas_server_id
135 )
136 m.get(url, status_code=200, json=json_str)
138 @requests_mock.mock()
139 def test_get_nas_server_interfaces_failure(self, m):
140 self.assertEqual(0, len(m.request_history))
141 self._add_get_nas_server_interfaces_response_failure(
142 m, self.NAS_SERVER_ID
143 )
144 interfaces = self.client.get_nas_server_interfaces(self.NAS_SERVER_ID)
145 self.assertIsNone(interfaces)
147 def _add_get_nas_server_interfaces_response_failure(self, m,
148 nas_server_id):
149 url = "{0}/nas_server/{1}?select=" \
150 "current_preferred_IPv4_interface_id," \
151 "current_preferred_IPv6_interface_id," \
152 "file_interfaces(id,ip_address)".format(
153 self._mock_url, nas_server_id
154 )
155 m.get(url, status_code=400)
157 @requests_mock.mock()
158 def test_create_filesystem(self, m):
159 self.assertEqual(0, len(m.request_history))
160 self._add_create_filesystem_response(
161 m, self._getJsonFile("create_filesystem_response.json")
162 )
163 id = self.client.create_filesystem(
164 self.NAS_SERVER_ID,
165 self.NFS_EXPORT_NAME,
166 self.NFS_EXPORT_SIZE
167 )
168 self.assertEqual(id, self.FILESYSTEM_ID)
170 def _add_create_filesystem_response(self, m, json_str):
171 url = "{0}/file_system".format(self._mock_url)
172 m.post(url, status_code=201, json=json_str)
174 @requests_mock.mock()
175 def test_create_filesystem_failure(self, m):
176 self.assertEqual(0, len(m.request_history))
177 self._add_create_filesystem_response_failure(m)
178 id = self.client.create_filesystem(
179 self.NAS_SERVER_ID,
180 self.NFS_EXPORT_NAME,
181 self.NFS_EXPORT_SIZE
182 )
183 self.assertIsNone(id)
185 def _add_create_filesystem_response_failure(self, m):
186 url = "{0}/file_system".format(self._mock_url)
187 m.post(url, status_code=400)
189 @requests_mock.mock()
190 def test_create_nfs_export(self, m):
191 self.assertEqual(0, len(m.request_history))
192 self._add_create_nfs_export_response(
193 m, self._getJsonFile("create_nfs_export_response.json")
194 )
195 id = self.client.create_nfs_export(self.FILESYSTEM_ID,
196 self.NFS_EXPORT_NAME)
197 self.assertEqual(id, self.NFS_EXPORT_ID)
199 def _add_create_nfs_export_response(self, m, json_str):
200 url = "{0}/nfs_export".format(self._mock_url)
201 m.post(url, status_code=201, json=json_str)
203 @requests_mock.mock()
204 def test_create_nfs_export_failure(self, m):
205 self.assertEqual(0, len(m.request_history))
206 self._add_create_nfs_export_response_failure(m)
207 id = self.client.create_nfs_export(self.FILESYSTEM_ID,
208 self.NFS_EXPORT_NAME)
209 self.assertIsNone(id)
211 def _add_create_nfs_export_response_failure(self, m):
212 url = "{0}/nfs_export".format(self._mock_url)
213 m.post(url, status_code=400)
215 @requests_mock.mock()
216 def test_delete_filesystem(self, m):
217 self.assertEqual(0, len(m.request_history))
218 self._add_delete_filesystem_response(m, self.FILESYSTEM_ID)
219 result = self.client.delete_filesystem(self.FILESYSTEM_ID)
220 self.assertEqual(result, True)
222 def _add_delete_filesystem_response(self, m, filesystem_id):
223 url = "{0}/file_system/{1}".format(
224 self._mock_url, filesystem_id
225 )
226 m.delete(url, status_code=204)
228 @requests_mock.mock()
229 def test_get_nfs_export_name(self, m):
230 self.assertEqual(0, len(m.request_history))
231 self._add_get_nfs_export_name_response(
232 m,
233 self.NFS_EXPORT_ID,
234 self._getJsonFile("get_nfs_export_name_response.json"),
235 )
236 name = self.client.get_nfs_export_name(self.NFS_EXPORT_ID)
237 self.assertEqual(name, self.NFS_EXPORT_NAME)
239 def _add_get_nfs_export_name_response(self, m, export_id, json_str):
240 url = "{0}/nfs_export/{1}?select=name".format(
241 self._mock_url, export_id
242 )
243 m.get(url, status_code=200, json=json_str)
245 @requests_mock.mock()
246 def test_get_nfs_export_name_failure(self, m):
247 self.assertEqual(0, len(m.request_history))
248 self._add_get_nfs_export_name_response_failure(m, self.NFS_EXPORT_ID)
249 name = self.client.get_nfs_export_name(self.NFS_EXPORT_ID)
250 self.assertIsNone(name)
252 def _add_get_nfs_export_name_response_failure(self,
253 m, export_id):
254 url = "{0}/nfs_export/{1}?select=name".format(
255 self._mock_url, export_id
256 )
257 m.get(url, status_code=400)
259 @requests_mock.mock()
260 def test_get_nfs_export_id(self, m):
261 self.assertEqual(0, len(m.request_history))
262 self._add_get_nfs_export_id_response(
263 m, self.NFS_EXPORT_NAME,
264 self._getJsonFile("get_nfs_export_id_response.json")
265 )
266 id = self.client.get_nfs_export_id(self.NFS_EXPORT_NAME)
267 self.assertEqual(id, self.NFS_EXPORT_ID)
269 def _add_get_nfs_export_id_response(self, m, name, json_str):
270 url = "{0}/nfs_export?select=id&name=eq.{1}".format(
271 self._mock_url, name
272 )
273 m.get(url, status_code=200, json=json_str)
275 @requests_mock.mock()
276 def test_get_nfs_export_id_failure(self, m):
277 self.assertEqual(0, len(m.request_history))
278 self._add_get_nfs_export_id_response_failure(m, self.NFS_EXPORT_NAME)
279 id = self.client.get_nfs_export_id(self.NFS_EXPORT_NAME)
280 self.assertIsNone(id)
282 def _add_get_nfs_export_id_response_failure(self, m, name):
283 url = "{0}/nfs_export?select=id&name=eq.{1}".format(
284 self._mock_url, name
285 )
286 m.get(url, status_code=400)
288 @requests_mock.mock()
289 def test_get_filesystem_id(self, m):
290 self.assertEqual(0, len(m.request_history))
291 self._add_get_filesystem_id_response(
292 m, self.NFS_EXPORT_NAME,
293 self._getJsonFile("get_fileystem_id_response.json")
294 )
295 id = self.client.get_filesystem_id(self.NFS_EXPORT_NAME)
296 self.assertEqual(id, self.FILESYSTEM_ID)
298 def _add_get_filesystem_id_response(self, m, name, json_str):
299 url = "{0}/file_system?name=eq.{1}".format(
300 self._mock_url, name
301 )
302 m.get(url, status_code=200, json=json_str)
304 @requests_mock.mock()
305 def test_get_filesystem_id_failure(self, m):
306 self.assertEqual(0, len(m.request_history))
307 self._add_get_filesystem_id_response_failure(m, self.NFS_EXPORT_NAME)
308 id = self.client.get_filesystem_id(self.NFS_EXPORT_NAME)
309 self.assertIsNone(id)
311 def _add_get_filesystem_id_response_failure(self, m, name):
312 url = "{0}/file_system?name=eq.{1}".format(
313 self._mock_url, name
314 )
315 m.get(url, status_code=400)
317 @requests_mock.mock()
318 def test_set_export_access(self, m):
320 self.assertEqual(0, len(m.request_history))
321 self._add_set_export_access_response(m, self.NFS_EXPORT_ID)
322 result = self.client.set_export_access(self.NFS_EXPORT_ID,
323 self.RW_HOSTS,
324 self.RO_HOSTS)
325 self.assertEqual(result, True)
327 def _add_set_export_access_response(self, m, export_id):
328 url = "{0}/nfs_export/{1}".format(self._mock_url, export_id)
329 m.patch(url, status_code=204)
331 @requests_mock.mock()
332 def test_resize_filesystem(self, m):
333 self.assertEqual(0, len(m.request_history))
334 self._add_resize_filesystem_response(m, self.FILESYSTEM_ID)
335 result, detail = self.client.resize_filesystem(
336 self.FILESYSTEM_ID, self.NFS_EXPORT_NEW_SIZE)
337 self.assertTrue(result)
338 self.assertIsNone(detail)
340 def _add_resize_filesystem_response(self, m, filesystem_id):
341 url = "{0}/file_system/{1}".format(
342 self._mock_url, filesystem_id
343 )
344 m.patch(url, status_code=204)
346 @requests_mock.mock()
347 def test_resize_filesystem_shrink_failure(self, m):
348 self.assertEqual(0, len(m.request_history))
349 self._add_resize_filesystem_shrink_failure_response(
350 m, self.FILESYSTEM_ID,
351 self._getJsonFile(
352 "resize_filesystem_shrink_failure_response.json"))
353 result, detail = self.client.resize_filesystem(
354 self.FILESYSTEM_ID, self.NFS_EXPORT_NEW_SIZE)
355 self.assertFalse(result)
356 self.assertIsNotNone(detail)
358 def _add_resize_filesystem_shrink_failure_response(
359 self, m, filesystem_id, json_str):
360 url = "{0}/file_system/{1}".format(
361 self._mock_url, filesystem_id
362 )
363 m.patch(url, status_code=422, json=json_str)
365 @requests_mock.mock()
366 def test_get_fsid_from_export_name(self, m):
367 self.assertEqual(0, len(m.request_history))
368 self._add_get_fsid_from_export_name_response(
369 m, self.NFS_EXPORT_NAME,
370 self._getJsonFile("get_fsid_from_export_name_response.json")
371 )
372 id = self.client.get_fsid_from_export_name(self.NFS_EXPORT_NAME)
373 self.assertEqual(id, self.FILESYSTEM_ID)
375 def _add_get_fsid_from_export_name_response(self, m, name, json_str):
376 url = "{0}/nfs_export?select=file_system_id&name=eq.{1}".format(
377 self._mock_url, name
378 )
379 m.get(url, status_code=200, json=json_str)
381 @requests_mock.mock()
382 def test_get_fsid_from_export_name_failure(self, m):
383 self.assertEqual(0, len(m.request_history))
384 self._add_get_fsid_from_export_name_response_failure(
385 m, self.NFS_EXPORT_NAME
386 )
387 id = self.client.get_fsid_from_export_name(self.NFS_EXPORT_NAME)
388 self.assertIsNone(id)
390 def _add_get_fsid_from_export_name_response_failure(self, m, name):
391 url = "{0}/nfs_export?select=file_system_id&name=eq.{1}".format(
392 self._mock_url, name
393 )
394 m.get(url, status_code=400)
396 @requests_mock.mock()
397 def test_create_snapshot(self, m):
398 self.assertEqual(0, len(m.request_history))
399 self._add_create_snapshot_response(
400 m, self.FILESYSTEM_ID,
401 self._getJsonFile("create_snapshot_response.json")
402 )
403 id = self.client.create_snapshot(self.FILESYSTEM_ID,
404 self.SNAPSHOT_NAME)
405 self.assertEqual(id, self.SNAPSHOT_ID)
407 def _add_create_snapshot_response(self, m, filesystem_id, json_str):
408 url = "{0}/file_system/{1}/snapshot".format(self._mock_url,
409 filesystem_id)
410 m.post(url, status_code=201, json=json_str)
412 @requests_mock.mock()
413 def test_create_snapshot_failure(self, m):
414 self.assertEqual(0, len(m.request_history))
415 self._add_create_snapshot_response_failure(m, self.FILESYSTEM_ID)
416 id = self.client.create_snapshot(self.FILESYSTEM_ID,
417 self.SNAPSHOT_NAME)
418 self.assertIsNone(id)
420 def _add_create_snapshot_response_failure(self, m, filesystem_id):
421 url = "{0}/file_system/{1}/snapshot".format(self._mock_url,
422 filesystem_id)
423 m.post(url, status_code=400)
425 @requests_mock.mock()
426 def test_restore_snapshot(self, m):
427 self.assertEqual(0, len(m.request_history))
428 self._add_restore_snapshot_response(
429 m, self.SNAPSHOT_ID
430 )
431 result = self.client.restore_snapshot(self.SNAPSHOT_ID)
432 self.assertEqual(result, True)
434 def _add_restore_snapshot_response(self, m, snapshot_id):
435 url = "{0}/file_system/{1}/restore".format(self._mock_url,
436 snapshot_id)
437 m.post(url, status_code=204)
439 @requests_mock.mock()
440 def test_restore_snapshot_failure(self, m):
441 self.assertEqual(0, len(m.request_history))
442 self._add_restore_snapshot_response_failure(
443 m, self.SNAPSHOT_ID
444 )
445 result = self.client.restore_snapshot(self.SNAPSHOT_ID)
446 self.assertEqual(result, False)
448 def _add_restore_snapshot_response_failure(self, m, snapshot_id):
449 url = "{0}/file_system/{1}/restore".format(self._mock_url,
450 snapshot_id)
451 m.post(url, status_code=400)
453 @requests_mock.mock()
454 def test_clone_snapshot(self, m):
455 self.assertEqual(0, len(m.request_history))
456 self._add_clone_snapshot_response(
457 m, self.SNAPSHOT_ID,
458 self._getJsonFile("clone_snapshot_response.json")
459 )
460 id = self.client.clone_snapshot(self.SNAPSHOT_ID,
461 self.CLONE_NAME)
462 self.assertEqual(id, self.CLONE_ID)
464 def _add_clone_snapshot_response(self, m, snapshot_id, json_str):
465 url = "{0}/file_system/{1}/clone".format(self._mock_url,
466 snapshot_id)
467 m.post(url, status_code=201, json=json_str)
469 @requests_mock.mock()
470 def test_clone_snapshot_failure(self, m):
471 self.assertEqual(0, len(m.request_history))
472 self._add_clone_snapshot_response_failure(
473 m, self.SNAPSHOT_ID
474 )
475 id = self.client.clone_snapshot(self.SNAPSHOT_ID,
476 self.CLONE_NAME)
477 self.assertIsNone(id)
479 def _add_clone_snapshot_response_failure(self, m, snapshot_id):
480 url = "{0}/file_system/{1}/clone".format(self._mock_url,
481 snapshot_id)
482 m.post(url, status_code=400)
484 @requests_mock.mock()
485 def test_get_cluster_id(self, m):
486 self.assertEqual(0, len(m.request_history))
487 self._add_get_cluster_id_response(
488 m,
489 self._getJsonFile("get_cluster_id_response.json")
490 )
491 id = self.client.get_cluster_id()
492 self.assertEqual(id, self.CLUSTER_ID)
494 def _add_get_cluster_id_response(self, m, json_str):
495 url = "{0}/cluster".format(self._mock_url)
496 m.get(url, status_code=200, json=json_str)
498 @requests_mock.mock()
499 def test_get_cluster_id_failure(self, m):
500 self.assertEqual(0, len(m.request_history))
501 self._add_get_cluster_id_response_failure(m)
502 id = self.client.get_cluster_id()
503 self.assertIsNone(id)
505 def _add_get_cluster_id_response_failure(self, m):
506 url = "{0}/cluster".format(self._mock_url)
507 m.get(url, status_code=400)
509 @requests_mock.mock()
510 def test_retreive_cluster_capacity_metrics(self, m):
511 self.assertEqual(0, len(m.request_history))
512 self._add_retreive_cluster_capacity_metrics_response(
513 m,
514 self._getJsonFile(
515 "retreive_cluster_capacity_metrics_response.json")
516 )
517 total, used = self.client.retreive_cluster_capacity_metrics(
518 self.CLUSTER_ID)
519 self.assertEqual(total, 47345047046144)
520 self.assertEqual(used, 366003363027)
522 def _add_retreive_cluster_capacity_metrics_response(self, m, json_str):
523 url = "{0}/metrics/generate?order=timestamp".format(self._mock_url)
524 m.post(url, status_code=200, json=json_str)
526 @requests_mock.mock()
527 def test_retreive_cluster_capacity_metrics_failure(self, m):
528 self.assertEqual(0, len(m.request_history))
529 self._add_retreive_cluster_capacity_metrics_response_failure(m)
530 total, used = self.client.retreive_cluster_capacity_metrics(
531 self.CLUSTER_ID)
532 self.assertIsNone(total)
533 self.assertIsNone(used)
535 def _add_retreive_cluster_capacity_metrics_response_failure(self, m):
536 url = "{0}/metrics/generate?order=timestamp".format(self._mock_url)
537 m.post(url, status_code=400)
539 @requests_mock.mock()
540 def test_create_smb_share(self, m):
541 self.assertEqual(0, len(m.request_history))
542 self._add_create_smb_share_response(
543 m, self._getJsonFile("create_smb_share_response.json")
544 )
545 id = self.client.create_smb_share(self.FILESYSTEM_ID,
546 self.SMB_SHARE_NAME)
547 self.assertEqual(id, self.SMB_SHARE_ID)
549 def _add_create_smb_share_response(self, m, json_str):
550 url = "{0}/smb_share".format(self._mock_url)
551 m.post(url, status_code=201, json=json_str)
553 @requests_mock.mock()
554 def test_create_smb_share_failure(self, m):
555 self.assertEqual(0, len(m.request_history))
556 self._add_create_smb_share_response_failure(m)
557 id = self.client.create_smb_share(self.FILESYSTEM_ID,
558 self.SMB_SHARE_NAME)
559 self.assertIsNone(id)
561 def _add_create_smb_share_response_failure(self, m):
562 url = "{0}/smb_share".format(self._mock_url)
563 m.post(url, status_code=400)
565 @requests_mock.mock()
566 def test_get_fsid_from_share_name(self, m):
567 self.assertEqual(0, len(m.request_history))
568 self._add_get_fsid_from_share_name_response(
569 m, self.NFS_EXPORT_NAME,
570 self._getJsonFile("get_fsid_from_share_name_response.json")
571 )
572 id = self.client.get_fsid_from_share_name(self.NFS_EXPORT_NAME)
573 self.assertEqual(id, self.FILESYSTEM_ID)
575 def _add_get_fsid_from_share_name_response(self, m, name, json_str):
576 url = "{0}/smb_share?select=file_system_id&name=eq.{1}".format(
577 self._mock_url, name
578 )
579 m.get(url, status_code=200, json=json_str)
581 @requests_mock.mock()
582 def test_get_fsid_from_share_name_failure(self, m):
583 self.assertEqual(0, len(m.request_history))
584 self._add_get_fsid_from_share_name_response_failure(
585 m, self.SMB_SHARE_NAME
586 )
587 id = self.client.get_fsid_from_share_name(self.SMB_SHARE_NAME)
588 self.assertIsNone(id)
590 def _add_get_fsid_from_share_name_response_failure(self, m, name):
591 url = "{0}/smb_share?select=file_system_id&name=eq.{1}".format(
592 self._mock_url, name
593 )
594 m.get(url, status_code=400)
596 @requests_mock.mock()
597 def test_get_smb_share_id(self, m):
598 self.assertEqual(0, len(m.request_history))
599 self._add_get_smb_share_id_response(
600 m, self.SMB_SHARE_NAME,
601 self._getJsonFile("get_smb_share_id_response.json")
602 )
603 id = self.client.get_smb_share_id(self.SMB_SHARE_NAME)
604 self.assertEqual(id, self.SMB_SHARE_ID)
606 def _add_get_smb_share_id_response(self, m, name, json_str):
607 url = "{0}/smb_share?select=id&name=eq.{1}".format(
608 self._mock_url, name
609 )
610 m.get(url, status_code=200, json=json_str)
612 @requests_mock.mock()
613 def test_get_smb_share_id_failure(self, m):
614 self.assertEqual(0, len(m.request_history))
615 self._add_get_smb_share_id_response_failure(
616 m, self.SMB_SHARE_NAME
617 )
618 id = self.client.get_smb_share_id(self.SMB_SHARE_NAME)
619 self.assertIsNone(id)
621 def _add_get_smb_share_id_response_failure(self, m, name):
622 url = "{0}/smb_share?select=id&name=eq.{1}".format(
623 self._mock_url, name
624 )
625 m.get(url, status_code=400)
627 @requests_mock.mock()
628 def test_get_nas_server_smb_netbios(self, m):
629 self.assertEqual(0, len(m.request_history))
630 self._add_get_nas_server_smb_netbios_response(
631 m, self.SMB_SHARE_NAME,
632 self._getJsonFile("get_nas_server_smb_netbios_response.json")
633 )
634 id = self.client.get_nas_server_smb_netbios(self.SMB_SHARE_NAME)
635 self.assertEqual(id, "OPENSTACK")
637 def _add_get_nas_server_smb_netbios_response(self, m, name, json_str):
638 url = "{0}/nas_server?select=smb_servers" \
639 "(is_standalone,netbios_name)&name=eq.{1}".format(
640 self._mock_url, name
641 )
642 m.get(url, status_code=200, json=json_str)
644 @requests_mock.mock()
645 def test_get_nas_server_smb_netbios_failure(self, m):
646 self.assertEqual(0, len(m.request_history))
647 self._add_get_nas_server_smb_netbios_response_failure(
648 m, self.SMB_SHARE_NAME
649 )
650 id = self.client.get_nas_server_smb_netbios(self.SMB_SHARE_NAME)
651 self.assertIsNone(id)
653 def _add_get_nas_server_smb_netbios_response_failure(self, m, name):
654 url = "{0}/nas_server?select=smb_servers" \
655 "(is_standalone,netbios_name)&name=eq.{1}".format(
656 self._mock_url, name
657 )
658 m.get(url, status_code=400)
660 @requests_mock.mock()
661 def test_set_acl(self, m):
663 self.assertEqual(0, len(m.request_history))
664 self._add_set_acl_response(m, self.SMB_SHARE_ID)
665 result = self.client.set_acl(self.SMB_SHARE_ID,
666 self.RW_USERS,
667 self.RO_USERS)
668 self.assertEqual(result, True)
670 def _add_set_acl_response(self, m, share_id):
671 url = "{0}/smb_share/{1}/set_acl".format(self._mock_url, share_id)
672 m.post(url, status_code=204)