1import json 2import pytest 3 4from ansible.module_utils import kubevirt as mymodule 5 6 7def test_simple_merge_dicts(): 8 dict1 = {'labels': {'label1': 'value'}} 9 dict2 = {'labels': {'label2': 'value'}} 10 dict3 = json.dumps({'labels': {'label1': 'value', 'label2': 'value'}}, sort_keys=True) 11 assert dict3 == json.dumps(dict(mymodule.KubeVirtRawModule.merge_dicts(dict1, dict2)), sort_keys=True) 12 13 14def test_simple_multi_merge_dicts(): 15 dict1 = {'labels': {'label1': 'value', 'label3': 'value'}} 16 dict2 = {'labels': {'label2': 'value'}} 17 dict3 = json.dumps({'labels': {'label1': 'value', 'label2': 'value', 'label3': 'value'}}, sort_keys=True) 18 assert dict3 == json.dumps(dict(mymodule.KubeVirtRawModule.merge_dicts(dict1, dict2)), sort_keys=True) 19 20 21def test_double_nested_merge_dicts(): 22 dict1 = {'metadata': {'labels': {'label1': 'value', 'label3': 'value'}}} 23 dict2 = {'metadata': {'labels': {'label2': 'value'}}} 24 dict3 = json.dumps({'metadata': {'labels': {'label1': 'value', 'label2': 'value', 'label3': 'value'}}}, sort_keys=True) 25 assert dict3 == json.dumps(dict(mymodule.KubeVirtRawModule.merge_dicts(dict1, dict2)), sort_keys=True) 26 27 28@pytest.mark.parametrize("lval, operations, rval, result", [ 29 ('v1', ['<', '<='], 'v2', True), 30 ('v1', ['>', '>=', '=='], 'v2', False), 31 ('v1', ['>'], 'v1alpha1', True), 32 ('v1', ['==', '<', '<='], 'v1alpha1', False), 33 ('v1beta5', ['==', '<=', '>='], 'v1beta5', True), 34 ('v1beta5', ['<', '>', '!='], 'v1beta5', False), 35 36]) 37def test_kubeapiversion_comparisons(lval, operations, rval, result): 38 KubeAPIVersion = mymodule.KubeAPIVersion 39 for op in operations: 40 test = '(KubeAPIVersion("{0}") {1} KubeAPIVersion("{2}")) == {3}'.format(lval, op, rval, result) 41 assert eval(test) 42 43 44@pytest.mark.parametrize("ver", ('nope', 'v1delta7', '1.5', 'v1beta', 'v')) 45def test_kubeapiversion_unsupported_versions(ver): 46 threw = False 47 try: 48 mymodule.KubeAPIVersion(ver) 49 except ValueError: 50 threw = True 51 assert threw 52