def test_simple_json_to_avu_float(self): """ Test if simple json is correctly transformed to avu's using float as type """ data = json.loads('{"k1": 5.0 }') avu = jsonavu.json2avu(data, "root") self.assertEqual([{'a': 'k1', 'u': 'root_0_n', 'v': '5.0'}], avu)
def test_simple_json_to_avu_string(self): """ Test if simple json is correctly transformed to avu's using string as type """ data = json.loads('{"k1": "v1"}') avu = jsonavu.json2avu(data, "root") self.assertEqual([{'a': 'k1', 'u': 'root_0_s', 'v': 'v1'}], avu)
def test_simple_json_to_avu_nested_array(self): """ Test if simple json is correctly transformed to avu's using object as type """ data = json.loads('{"k1": "v1","k2":[["v4", "v5"],["v6", "v7"]]}') avu = jsonavu.json2avu(data, "root") expected_avu = [{ 'a': u'k2', 'u': 'root_0_s#0#0', 'v': u'v4' }, { 'a': u'k2', 'u': 'root_0_s#0#1', 'v': u'v5' }, { 'a': u'k2', 'u': 'root_0_s#1#0', 'v': u'v6' }, { 'a': u'k2', 'u': 'root_0_s#1#1', 'v': u'v7' }, { 'a': u'k1', 'u': 'root_0_s', 'v': u'v1' }] self.assertCountEqual(expected_avu, avu)
def test_simple_bidirectional(self): """ Test if simple json is correctly transformed to avu and back to json """ data = json.loads('{"k1": "v1"}') avu = jsonavu.json2avu(data, "root") json_output = jsonavu.avu2json(avu, "root") self.assertEqual('{"k1": "v1"}', json.dumps(json_output))
def test_json_empty_arrays_file_bidirectional(self): """ Test if empty array and empty object json file is correctly transformed to avu and back to json """ data = json.loads(self.test_data_empty_arrays_json) avu = jsonavu.json2avu(data, "root") json_output = jsonavu.avu2json(avu, "root") self.assertCountEqual(json.dumps(data, sort_keys=True), json.dumps(json_output, sort_keys=True))
def test_unicode_bidirectional(self): """ Test if unicode json is correctly transformed to avu and back to json """ data = json.loads('{"k1": "µm"}') avu = jsonavu.json2avu(data, "root") json_output = jsonavu.avu2json(avu, "root") self.assertEqual('{"k1": "µm"}', json.dumps(json_output, ensure_ascii=False))
def test_json_to_avu_only_list_input(self): """ Test if json with only a list is correctly parsed """ avu = jsonavu.json2avu(['test', 'test2'], "root") self.assertEqual([{ 'a': 'root', 'u': 'root_0_s#0', 'v': 'test' }, { 'a': 'root', 'u': 'root_0_s#1', 'v': 'test2' }], avu)
def test_simple_json_to_avu_boolean(self): """ Test if simple json is correctly transformed to avu's using boolean as type """ data = json.loads('{"k1": true , "k2": false }') avu = jsonavu.json2avu(data, "root") self.assertCountEqual([{ 'a': u'k2', 'u': 'root_0_b', 'v': 'False' }, { 'a': u'k1', 'u': 'root_0_b', 'v': 'True' }], avu)
def test_simple_json_to_avu_empty_object(self): """ Test if simple json is correctly transformed to avu using empty object """ data = json.loads('{"k1": "v1","emptyObj": {}}') avu = jsonavu.json2avu(data, "root") expected_avu = [{ 'a': u'k1', 'u': 'root_0_s', 'v': u'v1' }, { 'a': u'emptyObj', 'u': 'root_0_o1', 'v': u'o1' }] self.assertCountEqual(expected_avu, avu)
def test_simple_json_to_avu_empty_array(self): """ Test if simple json is correctly transformed to avu using empty array """ data = json.loads('{"k1": "v1","emptyArr": []}') avu = jsonavu.json2avu(data, "root") expected_avu = [{ 'a': u'k1', 'u': 'root_0_s', 'v': u'v1' }, { 'a': u'emptyArr', 'u': 'root_0_a', 'v': u'.' }] self.assertCountEqual(expected_avu, avu)
def test_json_types_file_json_to_avu(self): """ Test if types json file is correctly transformed to avu """ data = json.loads(self.test_data_types_json) avu = jsonavu.json2avu(data, "root") expected_avu = [{ 'a': 'k2', 'u': 'root_0_o1', 'v': 'o1' }, { 'a': 'k3', 'u': 'root_1_z', 'v': '.' }, { 'a': 'k4', 'u': 'root_1_s', 'v': 'v3' }, { 'a': 'k1', 'u': 'root_0_e', 'v': '.' }, { 'a': 'k6', 'u': 'root_0_o2#0', 'v': 'o2' }, { 'a': 'k8', 'u': 'root_2_b', 'v': 'False' }, { 'a': 'k7', 'u': 'root_2_b', 'v': 'True' }, { 'a': 'k5', 'u': 'root_0_n#0', 'v': '42' }, { 'a': 'k5', 'u': 'root_0_n#1', 'v': '42.42' }] self.assertCountEqual(expected_avu, avu)
def test_simple_json_to_avu_object(self): """ Test if simple json is correctly transformed to avu's using object as type """ data = json.loads('{"k2": {"k3" : null,"k4" : "v3" }}') avu = jsonavu.json2avu(data, "root") expected_avu = [{ 'a': u'k2', 'u': 'root_0_o1', 'v': 'o1' }, { 'a': u'k3', 'u': 'root_1_z', 'v': '.' }, { 'a': u'k4', 'u': 'root_1_s', 'v': u'v3' }] self.assertEqual(expected_avu, avu)
def test_json_to_avu_only_string_input(self): """ Test if json with only a string is correctly parsed """ avu = jsonavu.json2avu('test', "root") self.assertEqual([{'a': 'root', 'u': 'root_0_s', 'v': 'test'}], avu)
try: jsonschema.validate(instance=data, schema=schema) except jsonschema.exceptions.ValidationError, e: callback.msiExit("-1101000", "JSON instance could not be validated against JSON-schema: " + str(e.message)) return # Load global variable activelyUpdatingAVUs and set this to true. At this point we are actively updating # AVUs and want to disable the check for not being able to set JSON AVUs directly global activelyUpdatingAVUs activelyUpdatingAVUs = True ret_val = callback.msi_rmw_avu(object_type, object_name, "%", "%", json_root + "_%") if ret_val['status'] is False and ret_val['code'] != -819000: return avu = jsonavu.json2avu(data, json_root) for i in avu: callback.msi_add_avu(object_type, object_name, i["a"], i["v"], i["u"]) # Set global variable activelyUpdatingAVUs to false. At this point we are done updating AVU and want # to enable some of the checks. activelyUpdatingAVUs = False def getJsonFromObj(rule_args, callback, rei): """ This function return a JSON string from AVU's set to an object :param rule_args: Argument 0: The object name (/nlmumc/P000000003, /nlmumc/projects/metadata.xml, [email protected], demoResc)
#!/usr/bin/python3 import json import sys import jsonavu with open(sys.argv[1]) as f: data = json.load(f) avu = jsonavu.json2avu(data, "root") print("Source:") print(json.dumps(data, indent=4)) # Find out max V length and use that for formatting max_a_len = len(max(avu, key=lambda k: len(str(k["a"])))["a"]) max_v_len = len(max(avu, key=lambda k: len(str(k["v"])))["v"]) out_format = "%" + str(max_a_len + 5) + "s %" + str(max_v_len + 5) + "s %15s" print("AVUs:") print(out_format % ("A", "V", "U")) for i in avu: print(out_format % (i["a"], i["v"], i["u"])) print("JSON:") data_back = jsonavu.avu2json(avu, "root") print(json.dumps(data_back, indent=4))