From: <wa...@us...> - 2008-05-15 17:02:07
|
Revision: 1453 http://pywebsvcs.svn.sourceforge.net/pywebsvcs/?rev=1453&view=rev Author: warnes Date: 2008-05-15 10:02:00 -0700 (Thu, 15 May 2008) Log Message: ----------- Fix error handling when an unexpected tag is encounterd outside the SOAP body. Modified Paths: -------------- trunk/SOAPpy/SOAPpy/Parser.py trunk/SOAPpy/tests/Bug1161780.py trunk/SOAPpy/tests/Makefile Modified: trunk/SOAPpy/SOAPpy/Parser.py =================================================================== --- trunk/SOAPpy/SOAPpy/Parser.py 2008-05-14 21:36:32 UTC (rev 1452) +++ trunk/SOAPpy/SOAPpy/Parser.py 2008-05-15 17:02:00 UTC (rev 1453) @@ -85,6 +85,16 @@ self._rules = rules def startElementNS(self, name, qname, attrs): + + def toStr( name ): + prefix = name[0] + tag = name[1] + if self._prem_r.has_key(prefix): + tag = self._prem_r[name[0]] + ':' + name[1] + elif prefix: + tag = prefix + ":" + tag + return tag + # Workaround two sax bugs if name[0] == None and name[1][0] == ' ': name = (None, name[1][1:]) @@ -95,8 +105,8 @@ if self._next == "E": if name[1] != 'Envelope': - raise Error, "expected `SOAP-ENV:Envelope', gto `%s:%s'" % \ - (self._prem_r[name[0]], name[1]) + raise Error, "expected `SOAP-ENV:Envelope', " \ + "got `%s'" % toStr( name ) if name[0] != NS.ENV: raise faultType, ("%s:VersionMismatch" % NS.ENV_T, "Don't understand version `%s' Envelope" % name[0]) @@ -108,16 +118,17 @@ else: raise Error, \ "expected `SOAP-ENV:Header' or `SOAP-ENV:Body', " \ - "got `%s'" % self._prem_r[name[0]] + ':' + name[1] + "got `%s'" % toStr( name ) elif self._next == "B": if name == (NS.ENV, "Body"): self._next = None else: - raise Error, "expected `SOAP-ENV:Body', got `%s'" % \ - self._prem_r[name[0]] + ':' + name[1] + raise Error, "expected `SOAP-ENV:Body', " \ + "got `%s'" % toStr( name ) elif self._next == "": - raise Error, "expected nothing, got `%s'" % \ - self._prem_r[name[0]] + ':' + name[1] + raise Error, "expected nothing, " \ + "got `%s'" % toStr( name ) + if len(self._stack) == 2: rules = self._rules Modified: trunk/SOAPpy/tests/Bug1161780.py =================================================================== --- trunk/SOAPpy/tests/Bug1161780.py 2008-05-14 21:36:32 UTC (rev 1452) +++ trunk/SOAPpy/tests/Bug1161780.py 2008-05-15 17:02:00 UTC (rev 1453) @@ -1,9 +1,10 @@ #!/usr/bin/env python import sys -sys.path = ["/home/tim/SOAPpy-0.12.0"] \ - + sys.path +sys.path.insert(1, "..") +from SOAPpy.Errors import Error from SOAPpy.Parser import parseSOAPRPC -bad = """<?xml version="1.0"?> + +original = """<?xml version="1.0"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" @@ -15,4 +16,13 @@ <ErrorString>The CustomerID tag could not be found or the number contained in the tag was invalid</ErrorString></SOAP-ENV:Envelope> """ -parseSOAPRPC(bad, attrs = 1) + +try: + parseSOAPRPC(original, attrs = 1) +except Error, e: + if e.msg != "expected nothing, got `ErrorString'": + raise AssertionError, "Incorrect error message generated: " + e.msg +else: + raise AssertionError, "Incorrect error message generated" + +print "Success" Modified: trunk/SOAPpy/tests/Makefile =================================================================== --- trunk/SOAPpy/tests/Makefile 2008-05-14 21:36:32 UTC (rev 1452) +++ trunk/SOAPpy/tests/Makefile 2008-05-15 17:02:00 UTC (rev 1453) @@ -1,9 +1,11 @@ PYTHON=python -default: echoClient echoHeader largeDataTest Bug1001646 Bug916265 \ +default: echoClient echoHeader largeDataTest bugs \ card independent \ testClient1 outside_services +bugs: Bug1001646 Bug916265 Bug1161780 + echoClient: $(PYTHON) echoServer.py >& echoServer_echoClient.log & sleep 5s # wait for server to start up @@ -29,6 +31,9 @@ $(PYTHON) esj_test_client.py +Bug1161780: + $(PYTHON) Bug1161780.py + Bug1001646: $(PYTHON) echoServer.py >& echoServer_largeDataTest.log & sleep 5s # wait for server to start up @@ -50,7 +55,7 @@ independent: $(PYTHON) speedTest.py $(PYTHON) Bug918216.py - $(PYTHON) ComplexTypes.py + -$(PYTHON) ComplexTypes.py -$(PYTHON) SOAPtest.py # one subtest will fail $(PYTHON) TCtest.py $(PYTHON) testleak.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |