fix soap xml parsing for tp-link devices #20

Merged
jackrobison merged 3 commits from fix-tplink-xml-parsing into master 2019-11-14 20:22:14 +01:00
Showing only changes of commit 2e24b35463 - Show all commits

View file

@ -114,3 +114,11 @@ class TestSOAPSerialization(unittest.TestCase):
raised = True raised = True
self.assertEqual(str(err), expected) self.assertEqual(str(err), expected)
self.assertTrue(raised) self.assertTrue(raised)
def test_soap_env_namespace_response(self):
# tp link devices use `SOAP-ENV` namespace rather than the normal `s`
response = b'HTTP/1.1 200 OK\r\nCONNECTION: close\r\nSERVER: ipos/7.0 UPnP/1.0 TL-WR940N/TL-WR941ND/3.0\r\nCONTENT-LENGTH: 404\r\nCONTENT-TYPE: text/xml; charset="utf-8"\r\n\r\n<?xml version="1.0"?>\n<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">\n<SOAP-ENV:Body>\n<u:GetExternalIPAddressResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewExternalIPAddress>100.100.100.100</NewExternalIPAddress></u:GetExternalIPAddressResponse></SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n'
self.assertDictEqual(
deserialize_soap_post_response(response, 'GetExternalIPAddress', self.st.decode()),
{'NewExternalIPAddress': '100.100.100.100'}
)