def handle_restart_test_instance(response_encoder, parameters): if ISSUER_QUERY_KEY in parameters and INSTANCE_ID_QUERY_KEY in parameters: issuer = remove_last_slash(parameters[ISSUER_QUERY_KEY]) instance_id = parameters[INSTANCE_ID_QUERY_KEY] port_database = PortDatabase(CONF.PORT_DATABASE_FILE) configurations = port_database.get_configuration(issuer, instance_id) if not configurations: raise MissingConfigurations( "Failed to load the configuration for the given test instance", log_info="No configuration from test instance issuer: " "%s instance_id: %s" % (issuer, instance_id), show_trace=False) port = port_database.get_port(issuer, instance_id) profile = configurations['behaviour']['profile'] return restart_test_instance(instance_id, port, profile, response_encoder, configurations) return response_encoder.bad_request()
def handle_get_redirect_url(session, response_encoder, parameters): if INSTANCE_ID_QUERY_KEY not in session: raise MissingSessionInformation( "No ID for the current test instance " "configuration where found in the session", show_trace=False) if 'issuer' not in parameters: return response_encoder.bad_request() if IS_RECONFIGURING not in session: raise MissingSessionInformation( "Could not find a required attribute in the session", show_trace=False) instance_id = session[INSTANCE_ID_QUERY_KEY] issuer = parameters['issuer'] response = {} if session[IS_RECONFIGURING]: if uses_dynamic_client_reg(issuer, instance_id): response['info'] = "While reconfiguring a test instance it is not possible to " \ "change whether your openID provider supports 'client " \ "registration' or not. In order to change this feature please " \ "create a new test instance" port_database = PortDatabase(CONF.PORT_DATABASE_FILE) port = port_database.get_port(issuer, instance_id) else: try: port = allocate_static_port(issuer, instance_id) except NoPortAvailable: raise NoStaticClientRegPortAvailable( "No ports for test instances using static client " "registration is available at the moment, " "please try " "again later.", log_info="Failed to allocate a port used for " "static " "client registration since no port " "where available.", show_trace=False) session['port'] = port redirect_url = get_base_url(port) + "authz_cb" response['redirect_url'] = redirect_url return response_encoder.return_json(json.dumps(response))
def handle_request_instance_ids(response_encoder, parameters): if 'issuer' not in parameters: return response_encoder.bad_request() issuer = parameters['issuer'] port_db = PortDatabase(CONF.PORT_DATABASE_FILE) instance_ids = port_db.get_instance_ids(issuer) return_info = {} for instance_id in instance_ids: port = port_db.get_port(issuer=issuer, instance_id=instance_id) contains_config = does_configuration_exists(port_db, issuer=issuer, instance_id=instance_id, conf=CONF) return_info[instance_id] = {"url": get_base_url(port), "port": port, "contains_config": contains_config} return response_encoder.return_json(json.dumps(return_info))
def handle_get_redirect_url(session, response_encoder, parameters): if INSTANCE_ID_QUERY_KEY not in session: raise MissingSessionInformation("No ID for the current test instance " "configuration where found in the session", show_trace=False) if 'issuer' not in parameters: return response_encoder.bad_request() if IS_RECONFIGURING not in session: raise MissingSessionInformation("Could not find a required attribute in the session", show_trace=False) instance_id = session[INSTANCE_ID_QUERY_KEY] issuer = parameters['issuer'] response = {} if session[IS_RECONFIGURING]: if uses_dynamic_client_reg(issuer, instance_id): response['info'] = "While reconfiguring a test instance it is not possible to " \ "change whether your openID provider supports 'client " \ "registration' or not. In order to change this feature please " \ "create a new test instance" port_database = PortDatabase(CONF.PORT_DATABASE_FILE) port = port_database.get_port(issuer, instance_id) else: try: port = allocate_static_port(issuer, instance_id) except NoPortAvailable: raise NoStaticClientRegPortAvailable("No ports for test instances using static client " "registration is available at the moment, " "please try " "again later.", log_info="Failed to allocate a port used for " "static " "client registration since no port " "where available.", show_trace=False) session['port'] = port redirect_url = get_base_url(port) + "authz_cb" response['redirect_url'] = redirect_url return response_encoder.return_json(json.dumps(response))
def handle_load_existing_config(response_encoder, session, parameters): if ISSUER_QUERY_KEY in parameters and INSTANCE_ID_QUERY_KEY in parameters: configurations = load_configuration_from_database(parameters) if not configurations: issuer = remove_last_slash(parameters[ISSUER_QUERY_KEY]) instance_id = parameters[INSTANCE_ID_QUERY_KEY] port_db = PortDatabase(CONF.PORT_DATABASE_FILE) port = port_db.get_port(issuer, instance_id) configurations = identify_existing_config_file(port, CONF.OPRP_DIR_PATH) store_query_parameter(parameters, session, ISSUER_QUERY_KEY) store_query_parameter(parameters, session, INSTANCE_ID_QUERY_KEY) if configurations: session[OP_CONFIG] = configurations else: session[OP_CONFIG] = get_default_client() session[IS_RECONFIGURING] = True return response_encoder.return_json("{}") return response_encoder.bad_request()