summaryrefslogtreecommitdiff
path: root/src/saml2test
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2013-08-27 14:43:05 +0200
committerRoland Hedberg <roland.hedberg@adm.umu.se>2013-08-27 14:43:05 +0200
commit79d78079cd01119e4be8a2a9c6d926dadc597fa0 (patch)
treeb4d45123f9083204dd9bcb0ca7c77341f01a1203 /src/saml2test
parent324b638559dc1bbed2cae63777659077a19c83ba (diff)
downloadpysaml2-79d78079cd01119e4be8a2a9c6d926dadc597fa0.tar.gz
Improved operations error handling
Diffstat (limited to 'src/saml2test')
-rw-r--r--src/saml2test/__init__.py4
-rw-r--r--src/saml2test/tool.py28
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)