parser = argparse.ArgumentParser() parser.add_argument('-y', dest='yaml_flows') parser.add_argument('-k', dest="insecure", action='store_true') parser.add_argument('-l', dest="log_name") parser.add_argument('-t', dest="test_id") parser.add_argument('-p', dest="profile") parser.add_argument('-i', dest="id") parser.add_argument('-g', dest="group") parser.add_argument('-x', dest='exit', action='store_true') parser.add_argument(dest="config") cargs = parser.parse_args() cls_factories = {'': oper.factory} func_factory = func.factory FLOWS = parse_yaml_conf(cargs.yaml_flows, cls_factories, func_factory) CONF = importlib.import_module(cargs.config) if cargs.log_name: setup_logger(logger, cargs.log_name) else: setup_logger(logger) # Add own keys for signing/encrypting JWTs jwks, keyjar, kidd = build_keyjar(CONF.KEYS) # export JWKS p = urlparse(CONF.KEY_EXPORT_URL) f = open("." + p.path, "w") f.write(json.dumps(jwks))
args = parser.parse_args() session_opts = { 'session.type': 'memory', 'session.cookie_expires': True, 'session.auto': True, # 'session.key': "{}.beaker.session.id".format( # urlparse(_base).netloc.replace(":", ".")) } sys.path.insert(0, ".") config = importlib.import_module(args.config) fdef = {'Flows': {}, 'Order': [], 'Desc': {}} for flow_def in args.yaml_flow: spec = parse_yaml_conf(flow_def, config.TOOL_ARGS['cls_factories'], config.TOOL_ARGS['func_factory']) fdef['Flows'].update(spec['Flows']) fdef['Desc'].update(spec['Desc']) fdef['Order'].extend(spec['Order']) # Filter based on profile keep = [] for key, val in fdef['Flows'].items(): for p in args.profile: if p in val['profiles']: keep.append(key) for key in list(fdef['Flows'].keys()): if key not in keep: del fdef['Flows'][key]
from oidctest import func from oic.oic.message import factory as oic_message_factory parser = argparse.ArgumentParser() parser.add_argument("-f", dest="flows") parser.add_argument("-l", dest="log_name") parser.add_argument("-p", dest="profile") parser.add_argument("-t", dest="testid") parser.add_argument(dest="config") cargs = parser.parse_args() fdef = {"Flows": {}, "Order": [], "Desc": []} cls_factories = {"": oper.factory} func_factory = func.factory spec = parse_yaml_conf(cargs.flows, cls_factories, func_factory) fdef["Flows"].update(spec["Flows"]) for param in ["Order", "Desc"]: try: fdef[param].extend(spec[param]) except KeyError: pass CONF = importlib.import_module(cargs.config) if cargs.log_name: setup_logger(logger, cargs.log_name) else: setup_logger(logger) # Add own keys for signing/encrypting JWTs
from oidctest import func from oic.oic.message import factory as oic_message_factory parser = argparse.ArgumentParser() parser.add_argument('-f', dest='flows') parser.add_argument('-l', dest="log_name") parser.add_argument('-p', dest="profile") parser.add_argument('-t', dest="testid") parser.add_argument(dest="config") cargs = parser.parse_args() fdef = {'Flows': {}, 'Order': [], 'Desc': []} cls_factories = {'': oper.factory} func_factory = func.factory spec = parse_yaml_conf(cargs.flows, cls_factories, func_factory) fdef['Flows'].update(spec['Flows']) for param in ['Order', 'Desc']: try: fdef[param].extend(spec[param]) except KeyError: pass CONF = importlib.import_module(cargs.config) if cargs.log_name: setup_logger(logger, cargs.log_name) else: setup_logger(logger) # Add own keys for signing/encrypting JWTs
def construct_app_args(args, oper, func, default_profiles): """ :param args: Command arguments, argparse instance :param oper: Operations module :param func: Functions module :param default_profiles: The default profiles module :return: Application arguments """ sys.path.insert(0, ".") CONF = importlib.import_module(args.config) #setup_logging("%s/rp_%s.log" % (SERVER_LOG_FOLDER, CONF.PORT), logger) fdef = {'Flows': {}, 'Order': [], 'Desc': {}} cls_factories = {'': oper.factory} func_factory = func.factory for flow_def in args.flows: spec = parse_yaml_conf(flow_def, cls_factories, func_factory) fdef['Flows'].update(spec['Flows']) fdef['Desc'].update(spec['Desc']) fdef['Order'].extend(spec['Order']) if args.profiles: profiles = importlib.import_module(args.profiles) else: profiles = default_profiles try: if args.operations: operations = importlib.import_module(args.operations) else: operations = oper except AttributeError: operations = oper # Add own keys for signing/encrypting JWTs jwks, keyjar, kidd = build_keyjar(CONF.KEYS) try: if args.staticdir: _sdir = args.staticdir else: _sdir = 'static' except AttributeError: _sdir = 'static' # If this instance is behind a reverse proxy or on its own if CONF.BASE.endswith('/'): CONF.BASE = CONF.BASE[:-1] if args.path2port: ppmap = read_path2port_map(args.path2port) _path = ppmap[str(CONF.PORT)] if args.xport: _port = CONF.PORT _base = '{}:{}/{}/'.format(CONF.BASE, str(CONF.PORT), _path) else: _base = '{}/{}/'.format(CONF.BASE, _path) if args.tls: _port = 443 else: _port = 80 else: _port = CONF.PORT if _port not in [443, 80]: _base = '{}:{}'.format(CONF.BASE, _port) else: _base = CONF.BASE _path = '' # -------- JWKS --------------- if args.path2port: jwks_uri = "{}{}/jwks_{}.json".format(_base, _sdir, _port) f = open('{}/jwks_{}.json'.format(_sdir, _port), "w") elif _port not in [443, 80]: jwks_uri = "{}:{}/{}/jwks_{}.json".format(CONF.BASE, _port, _sdir, _port) f = open('{}/jwks_{}.json'.format(_sdir, _port), "w") else: jwks_uri = "{}/{}/jwks.json".format(CONF.BASE, _sdir) f = open('{}/jwks.json'.format(_sdir), "w") f.write(json.dumps(jwks)) f.close() # -------- MAKO setup ----------- try: if args.makodir: _dir = args.makodir if not _dir.endswith("/"): _dir += "/" else: _dir = "./" except AttributeError: _dir = './' LOOKUP = TemplateLookup(directories=[_dir + 'templates', _dir + 'htdocs'], module_directory=_dir + 'modules', input_encoding='utf-8', output_encoding='utf-8') _client_info = CONF.CLIENT # Now when the basci URL for the RP is constructed update the # redirect_uris and the post_logout_redirect_uris try: ri = _client_info['registration_info'] except KeyError: pass else: ri['redirect_uris'] = [r.format(_base) for r in ri['redirect_uris']] try: ri['post_logout_redirect_uris'] = [r.format(_base) for r in ri['post_logout_redirect_uris']] except KeyError: pass _base += '/' _client_info.update( {"base_url": _base, 'client_id': _base, "kid": kidd, "keyjar": keyjar, "jwks_uri": jwks_uri} ) if args.insecure: _client_info['verify_ssl'] = False # Test profile either as a command line argument or if not that # from the configuration file if args.profile: _profile = args.profile else: _profile = CONF.TOOL['profile'] # Application arguments app_args = { "flows": fdef['Flows'], "conf": CONF, "client_info": _client_info, "order": fdef['Order'], "profiles": profiles, "operation": operations, "cache": {}, "profile": _profile, "lookup": LOOKUP, "desc": fdef['Desc'], } return _path, app_args
def test_flows(): cls_factories = {'': oper.factory} func_factory = func.factory x = parse_yaml_conf('oidc_flows.yaml', cls_factories, func_factory) assert len(x['Flows']) == 103