def test_XMLDeserializer_default(self): self.deserializer = wsgi.XMLDeserializer() datastring = "<XML>HELLO</XML>" request = mock.Mock() request.body = datastring result = self.deserializer.default(request) self.assertEqual({'body': {'XML': 'HELLO'}}, result)
def test_find_children_named(self): child_node = mock.Mock(nodeName=mock.sentinel.node_name) parent_node = mock.Mock(childNodes=[child_node]) result = [] xml_deserializer = wsgi.XMLDeserializer() for n in xml_deserializer.\ find_children_named(parent_node, mock.sentinel.node_name): result.append(n) self.assertEqual(1, len(result)) self.assertEqual(child_node, result[0])
def test_XMLDeserializer_extract_text(self): self.deserializer = wsgi.XMLDeserializer() mock_node = mock.Mock() mock_child = mock.Mock() mock_child.nodeType = mock_child.TEXT_NODE mock_node.childNodes = [mock_child] result = self.deserializer.extract_text(mock_node) mock_child.nodeType = None mock_node.childNodes = [mock_child] result = self.deserializer.extract_text(mock_node) self.assertEqual("", result) mock_node.childNodes = [] result = self.deserializer.extract_text(mock_node) self.assertEqual("", result)
def test_XMLDeserializer_find_first_child_named(self): self.deserializer = wsgi.XMLDeserializer() parent = mock.Mock() mock_child = mock.Mock() mock_child.nodeName = "name" parent.childNodes = [mock_child] result = self.deserializer.find_first_child_named(parent, "name") self.assertIsNotNone(result) parent.childNodes = [] result = self.deserializer.find_first_child_named(parent, "name") self.assertIsNone(result) mock_child.nodeName = "other_name" parent.childNodes = [mock_child] result = self.deserializer.find_first_child_named(parent, "name") self.assertIsNone(result)
def test_from_xml_node_all_branches(self): mock_grandchild_node = mock.MagicMock( **{ 'nodeName': 'qux', 'nodeType': mock.sentinel.grandchild_node_type, 'childNodes': [mock.Mock(nodeType=3, nodeValue=mock.sentinel.qux_node)] }) mock_child_node = mock.MagicMock( **{ 'nodeName': mock.sentinel.child_node, 'attributes.keys.return_value': ['foo', 'bar', 'baz'], 'attributes.__getitem__.side_effect': [ mock.Mock(nodeValue=mock.sentinel.foo_node), mock.Mock(nodeValue=mock.sentinel.bar_node), mock.Mock(nodeValue=mock.sentinel.baz_node) ], 'childNodes': [mock_grandchild_node], 'TEXT_NODE': mock.sentinel.child_node_type }) mock_node = mock.Mock(**{ 'nodeName': mock.sentinel.parent_node, 'childNodes': [mock_child_node] }) listnames = [mock.sentinel.parent_node] xml_deserializer = wsgi.XMLDeserializer() result = xml_deserializer._from_xml_node(mock_node, listnames) expected_result = [{ 'foo': mock.sentinel.foo_node, 'bar': mock.sentinel.bar_node, 'baz': mock.sentinel.baz_node, 'qux': mock.sentinel.qux_node }] self.assertEqual(1, len(result)) self.assertEqual(len(expected_result[0]), len(result[0])) for key, val in expected_result[0].items(): self.assertEqual(val, result[0][key])
def test_XMLDeserializer_from_xml(self): self.deserializer = wsgi.XMLDeserializer() datastring = "<XML>HELLO</XML>" request = mock.Mock() request.body = datastring result = self.deserializer._from_xml(request) self.assertEqual({'XML': 'HELLO'}, result) datastring = "<NOT XML><NOT XML>" request.body = datastring self.assertRaises(exceptions.MalformedRequestBody, self.deserializer._from_xml, request) datastring = "<XML><XML1>HELLO</XML1></XML>" request.body = datastring result = self.deserializer._from_xml(request) self.assertEqual({'XML': {'XML1': 'HELLO'}}, result) datastring = "<XML><XML1><XML2>HELLO</XML2></XML1></XML>" request.body = datastring result = self.deserializer._from_xml(request) self.assertEqual({'XML': {'XML1': {'XML2': 'HELLO'}}}, result)