2 # Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
4 # This program and the accompanying materials are made available under the
5 # terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 # and is available at http://www.eclipse.org/legal/epl-v10.html
12 from onem2m_json_primitive import OneM2MJsonPrimitiveBuilder
13 from onem2m_primitive import OneM2M
16 class TestOneM2MJsonPrimitive(unittest.TestCase):
17 """Class of unittests testing OneM2MJsonPrimitive objects"""
19 params = """{"test": {"value": 1} }"""
20 content = """{"content": 123, "content2": {"content_element": "ce1"}}"""
21 proto_params = """{"proto_param1": 1, "proto_param2": 2, "proto_param3" : {"element1": "e1"}}"""
23 def test_primitive_build_no_content(self):
24 builder = OneM2MJsonPrimitiveBuilder()
25 builder.set_parameters(self.params)
26 primitive = builder.build()
27 self.assertIsNotNone(primitive)
28 self.assertIsNotNone(primitive.get_parameters_str())
29 self.assertIsNotNone(primitive.get_primitive_str())
30 json_primitive = json.loads(primitive.get_primitive_str())
31 self.assertNotIn(OneM2M.short_primitive_content, json_primitive)
33 self.assertEqual(json.dumps(json_primitive), primitive.get_parameters_str())
35 def _create_primitive(self):
37 OneM2MJsonPrimitiveBuilder()
38 .set_parameters(self.params)
39 .set_content(self.content)
40 .set_protocol_specific_parameters(self.proto_params)
42 return builder.build()
44 def test_primitive_build_with_content(self):
45 primitive = self._create_primitive()
46 self.assertIsNotNone(primitive)
47 self.assertIsNotNone(primitive.get_parameters_str())
48 self.assertIsNotNone(primitive.get_primitive_str())
50 json_primitive = json.loads(primitive.get_primitive_str())
51 self.assertIn(OneM2M.short_primitive_content, json_primitive)
54 json.dumps(json_primitive[OneM2M.short_primitive_content]),
55 primitive.get_content_str(),
58 def test_primitive_items_access(self):
59 primitive = self._create_primitive()
60 test_param = primitive.get_param("/test")
61 self.assertIsNotNone(test_param)
62 self.assertTrue(isinstance(test_param, dict))
64 item_val = primitive.get_param("/test/value")
65 self.assertEqual(item_val, 1)
67 content2_attr = primitive.get_attr("/content2")
68 self.assertIsNotNone(content2_attr)
69 self.assertTrue(isinstance(content2_attr, dict))
71 item_val = primitive.get_attr("/content/")
72 self.assertEqual(item_val, 123)
73 item_val = primitive.get_attr("/content")
74 self.assertEqual(item_val, 123)
75 item_val = primitive.get_attr("/content2/content_element")
76 self.assertEqual(item_val, "ce1")
78 proto_param3 = primitive.get_proto_param("/proto_param3")
79 self.assertIsNotNone(proto_param3)
80 self.assertTrue(isinstance(proto_param3, dict))
82 item_val = primitive.get_proto_param("/proto_param2")
83 self.assertEqual(item_val, 2)
84 item_val = primitive.get_proto_param("/proto_param3/element1/")
85 self.assertEqual(item_val, "e1")