diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /src/pybind/mgr/dashboard/tests/test_crud.py | |
parent | Initial commit. (diff) | |
download | ceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pybind/mgr/dashboard/tests/test_crud.py')
-rw-r--r-- | src/pybind/mgr/dashboard/tests/test_crud.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/tests/test_crud.py b/src/pybind/mgr/dashboard/tests/test_crud.py new file mode 100644 index 000000000..a94dfad62 --- /dev/null +++ b/src/pybind/mgr/dashboard/tests/test_crud.py @@ -0,0 +1,68 @@ +# pylint: disable=C0102 + +import json +from typing import NamedTuple + +import pytest +from jsonschema import validate + +from ..controllers._crud import ArrayHorizontalContainer, \ + ArrayVerticalContainer, Form, FormField, HorizontalContainer, SecretStr, \ + VerticalContainer, serialize + + +def assertObjectEquals(a, b): + assert json.dumps(a) == json.dumps(b) + + +class NamedTupleMock(NamedTuple): + foo: int + var: str + + +class NamedTupleSecretMock(NamedTuple): + foo: int + var: str + key: SecretStr + + +@pytest.mark.parametrize("inp,out", [ + (["foo", "var"], ["foo", "var"]), + (NamedTupleMock(1, "test"), {"foo": 1, "var": "test"}), + (NamedTupleSecretMock(1, "test", "imaginethisisakey"), {"foo": 1, "var": "test", + "key": "***********"}), + ((1, 2, 3), [1, 2, 3]), + (set((1, 2, 3)), [1, 2, 3]), +]) +def test_serialize(inp, out): + assertObjectEquals(serialize(inp), out) + + +def test_schema(): + form = Form(path='/cluster/user/create', + root_container=VerticalContainer('Create user', key='create_user', fields=[ + FormField('User entity', key='user_entity', field_type=str), + ArrayHorizontalContainer('Capabilities', key='caps', fields=[ + FormField('left', field_type=str, key='left'), + FormField('right', key='right', field_type=str) + ]), + ArrayVerticalContainer('ah', key='ah', fields=[ + FormField('top', key='top', field_type=str), + FormField('bottom', key='bottom', field_type=str) + ]), + HorizontalContainer('oh', key='oh', fields=[ + FormField('left', key='left', field_type=str), + FormField('right', key='right', field_type=str) + ]), + VerticalContainer('ov', key='ov', fields=[ + FormField('top', key='top', field_type=str), + FormField('bottom', key='bottom', field_type=bool) + ]), + ])) + form_dict = form.to_dict() + schema = {'schema': form_dict['control_schema'], 'layout': form_dict['ui_schema']} + validate(instance={'user_entity': 'foo', + 'caps': [{'left': 'foo', 'right': 'foo2'}], + 'ah': [{'top': 'foo', 'bottom': 'foo2'}], + 'oh': {'left': 'foo', 'right': 'foo2'}, + 'ov': {'top': 'foo', 'bottom': True}}, schema=schema['schema']) |