diff options
author | Roland Hedberg <roland.hedberg@adm.umu.se> | 2013-08-27 14:43:05 +0200 |
---|---|---|
committer | Roland Hedberg <roland.hedberg@adm.umu.se> | 2013-08-27 14:43:05 +0200 |
commit | 79d78079cd01119e4be8a2a9c6d926dadc597fa0 (patch) | |
tree | b4d45123f9083204dd9bcb0ca7c77341f01a1203 /src/saml2test | |
parent | 324b638559dc1bbed2cae63777659077a19c83ba (diff) | |
download | pysaml2-79d78079cd01119e4be8a2a9c6d926dadc597fa0.tar.gz |
Improved operations error handling
Diffstat (limited to 'src/saml2test')
-rw-r--r-- | src/saml2test/__init__.py | 4 | ||||
-rw-r--r-- | src/saml2test/tool.py | 28 |
2 files changed, 25 insertions, 7 deletions
diff --git a/src/saml2test/__init__.py b/src/saml2test/__init__.py index 15e096d8..2768a527 100644 --- a/src/saml2test/__init__.py +++ b/src/saml2test/__init__.py @@ -28,6 +28,10 @@ class Unknown(Exception): pass +class OperationError(Exception): + pass + + # class Trace(object): # def __init__(self): # self.trace = [] diff --git a/src/saml2test/tool.py b/src/saml2test/tool.py index 039015e3..4f926209 100644 --- a/src/saml2test/tool.py +++ b/src/saml2test/tool.py @@ -6,12 +6,13 @@ from urlparse import parse_qs from saml2test.opfunc import Operation from saml2test import FatalError -from saml2test.check import ExpectedError +from saml2test.check import ExpectedError, ERROR from saml2test.check import INTERACTION from saml2test.interaction import Interaction from saml2test.interaction import Action from saml2test.interaction import InteractionNeeded from saml2test.status import STATUSCODE +from saml2test import OperationError __author__ = 'rolandh' @@ -181,7 +182,13 @@ class Conversation(object): if _spec == _last_action: _same_actions += 1 if _same_actions >= 3: - raise InteractionNeeded("Interaction loop detection") + self.test_output.append( + {"status": ERROR, + "message": "Interaction loop detection", + #"id": "exception", + #"name": "interaction needed", + "url": self.position}) + raise OperationError() else: _last_action = _spec @@ -205,10 +212,17 @@ class Conversation(object): self.response = _response if _response.status_code >= 400: - logger.error("Got status code '%s', error: %s" % ( - _response.status_code, content)) - raise FatalError() - except (FatalError, InteractionNeeded): + txt = "Got status code '%s', error: %s" % ( + _response.status_code, content) + logger.error(txt) + self.test_output.append( + {"status": ERROR, + "message": txt, + #"id": "exception", + #"name": "interaction needed", + "url": self.position}) + raise OperationError() + except (FatalError, InteractionNeeded, OperationError): raise except Exception, err: self.err_check("exception", err, False) @@ -284,7 +298,7 @@ class Conversation(object): "name": "interaction needed", "url": self.position}) break - except FatalError: + except (FatalError, OperationError): raise except Exception, err: #self.err_check("exception", err) |