def app(appconfig, initialized_db): """ Used by pytest-flask plugin to inject a custom app instance for testing. """ app = Flask(__name__) login_manager = LoginManager(app) @app.errorhandler(model.DataModelException) def handle_dme(ex): response = jsonify({"message": str(ex)}) response.status_code = 400 return response @login_manager.user_loader def load_user(user_uuid): return LoginWrappedDBUser(user_uuid) @identity_loaded.connect_via(app) def on_identity_loaded_for_test(sender, identity): on_identity_loaded(sender, identity) Principal(app, use_sessions=False) app.url_map.converters["regex"] = RegexConverter app.url_map.converters["apirepopath"] = APIRepositoryPathConverter app.url_map.converters["repopath"] = RepositoryPathConverter app.url_map.converters["repopathredirect"] = RepositoryPathRedirectConverter app.url_map.converters["v1createrepopath"] = V1CreateRepositoryPathConverter app.register_blueprint(api_bp, url_prefix="/api") app.register_blueprint(appr_bp, url_prefix="/cnr") app.register_blueprint(web, url_prefix="/") app.register_blueprint(v1_bp, url_prefix="/v1") app.register_blueprint(v2_bp, url_prefix="/v2") app.register_blueprint(webhooks, url_prefix="/webhooks") app.config.update(appconfig) features.import_features(app.config) Userfiles(app) Mail(app) with app.app_context(): yield app
app.config["DISTRIBUTED_STORAGE_PREFERENCE"] = _distributed_storage_preference # Generate a secret key if none was specified. if app.config["SECRET_KEY"] is None: logger.debug("Generating in-memory secret key") app.config["SECRET_KEY"] = generate_secret_key() # If the "preferred" scheme is https, then http is not allowed. Therefore, ensure we have a secure # session cookie. if app.config["PREFERRED_URL_SCHEME"] == "https" and not app.config.get( "FORCE_NONSECURE_SESSION_COOKIE", False ): app.config["SESSION_COOKIE_SECURE"] = True # Load features from config. features.import_features(app.config) CONFIG_DIGEST = hashlib.sha256(json.dumps(app.config, default=str)).hexdigest()[0:8] logger.debug("Loaded config", extra={"config": app.config}) class RequestWithId(Request): request_gen = staticmethod(urn_generator(["request"])) def __init__(self, *args, **kwargs): super(RequestWithId, self).__init__(*args, **kwargs) self.request_id = self.request_gen() @app.before_request