예제 #1
0
    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)
예제 #2
0
    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])
예제 #3
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)
예제 #4
0
    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)
예제 #5
0
    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])
예제 #6
0
    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)