diff --git a/src/idp_test/__init__.py b/src/idp_test/__init__.py index 6f671a2..022a599 100644 --- a/src/idp_test/__init__.py +++ b/src/idp_test/__init__.py @@ -19,9 +19,10 @@ from saml2.mdstore import MetaData from saml2test import FatalError, OperationError from saml2test import exception_trace from saml2test import ContextFilter +from saml2test import JSON_DUMPS_ARGS -from idp_test.base import Conversation -from idp_test.check import CheckSaml2IntMetaData +from base import Conversation +from check import CheckSaml2IntMetaData # Schemas supported from saml2 import md @@ -34,7 +35,7 @@ from saml2.extension import mdattr from saml2.extension import ui from saml2.metadata import entity_descriptor from saml2.saml import NAME_FORMAT_UNSPECIFIED -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS SCHEMA = [dri, idpdisc, md, mdattr, mdui, saml, ui, xmldsig, xmlenc] @@ -149,6 +150,7 @@ class SAML2client(object): self.constraints = {} self.operations = None self.args = None + self.client = None def json_config_file(self): if self.args.json_config_file == "-": @@ -293,15 +295,34 @@ class SAML2client(object): self.setup() except (AttributeError, ToOld), err: print >> sys.stdout, "Configuration Error: %s" % err - - self.client = Saml2Client(self.sp_config) - conv = None + return if self.args.pretty: pp = pprint.PrettyPrinter(indent=4) else: pp = None + conv = None + + try: + self.client = Saml2Client(self.sp_config) + except Exception, err: + if conv: + self.test_log = conv.test_output + self.test_log.append(exception_trace("RUN", err)) + else: + self.test_log = exception_trace("RUN", err) + tsum = self.test_summation(self.args.oper) + + if pp: + pp.pprint(tsum) + else: + print >> sys.stdout, json.dumps(tsum, **JSON_DUMPS_ARGS) + + if tsum["status"] > 1 or self.args.debug or err: + self.output_log(memoryhandler, streamhandler) + return + try: try: oper = self.operations.OPERATIONS[self.args.oper] diff --git a/src/idp_test/interaction.py b/src/idp_test/interaction.py index 364d71f..6b0ddf2 100644 --- a/src/idp_test/interaction.py +++ b/src/idp_test/interaction.py @@ -1,4 +1,5 @@ -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS +from saml2test import JSON_DUMPS_ARGS __author__ = 'rohe0002' diff --git a/src/saml2test/__init__.py b/src/saml2test/__init__.py index a4812f9..2906776 100644 --- a/src/saml2test/__init__.py +++ b/src/saml2test/__init__.py @@ -12,6 +12,8 @@ logger = logging.getLogger(__name__) __author__ = 'rolandh' +JSON_DUMPS_ARGS = {"indent": 4, "sort_keys": True} + class FatalError(Exception): pass @@ -21,7 +23,7 @@ class CheckError(Exception): pass -class HTTP_ERROR(Exception): +class HttpError(Exception): pass @@ -38,11 +40,15 @@ class ContextFilter(logging.Filter): This is a filter which injects time laps information into the log. """ + def __init__(self, name=""): + logging.Filter.__init__(self, name) + self.startTime = 0 + def start(self): - self.start = time.time() + self.startTime = time.time() def filter(self, record): - record.delta = time.time() - self.start + record.delta = time.time() - self.startTime return True @@ -78,7 +84,7 @@ def get_page(url): if resp.status_code == 200: return resp.text else: - raise HTTP_ERROR(resp.status) + raise HttpError(resp.status) def exception_trace(tag, exc, log=None): diff --git a/src/saml2test/interaction.py b/src/saml2test/interaction.py index c67216f..ad8a5c8 100644 --- a/src/saml2test/interaction.py +++ b/src/saml2test/interaction.py @@ -1,4 +1,5 @@ -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS +from saml2test import JSON_DUMPS_ARGS __author__ = 'rohe0002' diff --git a/src/saml2test/opfunc.py b/src/saml2test/opfunc.py index f2e13d4..5bc99e4 100644 --- a/src/saml2test/opfunc.py +++ b/src/saml2test/opfunc.py @@ -6,7 +6,9 @@ from urlparse import urlparse from mechanize import ParseResponseEx from mechanize._form import ControlNotFoundError, AmbiguityError from mechanize._form import ListControl -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS +from saml2test import JSON_DUMPS_ARGS + __author__ = 'rohe0002' diff --git a/src/sp_test/__init__.py b/src/sp_test/__init__.py index f3abf73..bd8f8e5 100644 --- a/src/sp_test/__init__.py +++ b/src/sp_test/__init__.py @@ -13,13 +13,14 @@ from saml2.server import Server from saml2.config import IdPConfig from saml2.config import logging -from sp_test.base import Conversation +from base import Conversation from saml2test import FatalError from saml2test import CheckError from saml2test import ContextFilter from saml2test import exception_trace -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS +from saml2test import JSON_DUMPS_ARGS __author__ = 'rolandh' @@ -57,8 +58,8 @@ class Client(object): help="Configuration file for the IdP") self._parser.add_argument( '-C', dest="ca_certs", - help=("CA certs to use to verify HTTPS server certificates, ", - "if HTTPS is used and no server CA certs are defined then ", + help=("CA certs to use to verify HTTPS server certificates, " + "if HTTPS is used and no server CA certs are defined then " "no cert verification will be done")) self._parser.add_argument('-d', dest='debug', action='store_true', help="Print debug information") diff --git a/tests/idp_test/target_idp.py b/tests/idp_test/target_idp.py index 5007b8b..0fb267d 100755 --- a/tests/idp_test/target_idp.py +++ b/tests/idp_test/target_idp.py @@ -1,6 +1,7 @@ #!/usr/bin/env python from saml2.saml import NAME_FORMAT_URI -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS +from saml2test import JSON_DUMPS_ARGS __author__ = 'rolandh' diff --git a/tests/localhost.py b/tests/localhost.py index 22e1283..40b2de5 100755 --- a/tests/localhost.py +++ b/tests/localhost.py @@ -1,6 +1,7 @@ #!/usr/bin/env python from saml2.saml import NAME_FORMAT_URI -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS +from saml2test import JSON_DUMPS_ARGS __author__ = 'rolandh' diff --git a/tests/sp_test/targetsp.py b/tests/sp_test/targetsp.py index 7cd0cc6..5258f59 100755 --- a/tests/sp_test/targetsp.py +++ b/tests/sp_test/targetsp.py @@ -1,6 +1,7 @@ #!/usr/bin/env python from saml2.saml import AUTHN_PASSWORD -from commonArgs import JSON_DUMPS_ARGS +#from commonArgs import JSON_DUMPS_ARGS +from saml2test import JSON_DUMPS_ARGS __author__ = 'rolandh'