]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/tests/test_docs.py
import quincy beta 17.1.0
[ceph.git] / ceph / src / pybind / mgr / dashboard / tests / test_docs.py
index 5291edb3bb77f6ef1ecebf351ea3503b091f5a52..ded0c140e6704b351b77743bc2522526ddfde2c7 100644 (file)
@@ -1,5 +1,6 @@
 # # -*- coding: utf-8 -*-
-from __future__ import absolute_import
+
+import unittest
 
 from ..api.doc import SchemaType
 from ..controllers import ENDPOINT_MAP, APIDoc, APIRouter, Endpoint, EndpointDoc, RESTController
@@ -123,3 +124,117 @@ class DocsTest(ControllerTestCase):
     def test_gen_tags(self):
         outcome = Docs._gen_tags(False)
         self.assertEqual([{'description': 'Group description', 'name': 'FooGroup'}], outcome)
+
+
+class TestEndpointDocWrapper(unittest.TestCase):
+    def test_wrong_param_types(self):
+        with self.assertRaises(Exception):
+            EndpointDoc(description=False)
+        with self.assertRaises(Exception):
+            EndpointDoc(group=False)
+        with self.assertRaises(Exception):
+            EndpointDoc(parameters='wrong parameters')
+        with self.assertRaises(Exception):
+            EndpointDoc(responses='wrong response')
+
+        def dummy_func():
+            pass
+        with self.assertRaises(Exception):
+            EndpointDoc(parameters={'parameter': 'wrong parameter'})(dummy_func)
+
+    def test_split_dict(self):
+        edoc = EndpointDoc()
+        data = {
+            'name1': (int, 'description1'),
+            'dict_param': ({'name2': (int, 'description2')}, 'description_dict'),
+            'list_param': ([int, float], 'description_list')
+        }
+        expected = [
+            {
+                'name': 'name1',
+                'description': 'description1',
+                'required': True,
+                'nested': False,
+                'type': int
+            },
+            {
+                'name': 'dict_param',
+                'description': 'description_dict',
+                'required': True,
+                'nested': False,
+                'type': dict,
+                'nested_params': [
+                    {
+                        'name': 'name2',
+                        'description': 'description2',
+                        'required': True,
+                        'nested': True,
+                        'type': int
+                    }
+                ]
+            },
+            {
+                'name': 'list_param',
+                'description':
+                'description_list',
+                'required': True,
+                'nested': False,
+                'type': [int, float]
+            }
+        ]
+
+        res = edoc._split_dict(data, False)
+        self.assertEqual(res, expected)
+
+    def test_split_param(self):
+        edoc = EndpointDoc()
+        name = 'foo'
+        p_type = int
+        description = 'description'
+        default_value = 1
+        expected = {
+            'name': name,
+            'description': description,
+            'required': True,
+            'nested': False,
+            'default': default_value,
+            'type': p_type,
+        }
+        res = edoc._split_param(name, p_type, description, default_value=default_value)
+        self.assertEqual(res, expected)
+
+    def test_split_param_nested(self):
+        edoc = EndpointDoc()
+        name = 'foo'
+        p_type = {'name2': (int, 'description2')}, 'description_dict'
+        description = 'description'
+        default_value = 1
+        expected = {
+            'name': name,
+            'description': description,
+            'required': True,
+            'nested': True,
+            'default': default_value,
+            'type': type(p_type),
+            'nested_params': [
+                {
+                    'name': 'name2',
+                    'description': 'description2',
+                    'required': True,
+                    'nested': True,
+                    'type': int
+                }
+            ]
+        }
+        res = edoc._split_param(name, p_type, description, default_value=default_value,
+                                nested=True)
+        self.assertEqual(res, expected)
+
+    def test_split_list(self):
+        edoc = EndpointDoc()
+        data = [('foo', int), ('foo', float)]
+        expected = []
+
+        res = edoc._split_list(data, True)
+
+        self.assertEqual(res, expected)