From e4c4db197c1ac3c51f9e3db553689d9c1f9614df Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Wed, 29 Mar 2023 19:02:53 +0100 Subject: application: use get_store to turn environ into Store This is a form of dependency injection and means that this function should now be testable without monkeypatching. --- paste/__init__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/paste/__init__.py b/paste/__init__.py index c54791b..4e0a0ef 100644 --- a/paste/__init__.py +++ b/paste/__init__.py @@ -169,8 +169,13 @@ def authenticate(get_auth: Callable[[Env], Auth]) -> Middleware: return authenticate -def application(environ: Env, start_response: StartResponse, /) -> Response: - store = Store(environ["paste.db_conn"]) +def paste_application( + environ: Env, + start_response: StartResponse, + get_store: Callable[[Env], Store] = lambda environ: Store(environ["paste.db_conn"]), + /, +) -> Response: + store = get_store(environ) name = environ["PATH_INFO"] if environ["REQUEST_METHOD"] == "GET": row = store.get(name) @@ -248,5 +253,6 @@ middlewares = [ authenticate(lambda environ: Auth(environ["paste.db_conn"])), ] +application = paste_application for m in reversed(middlewares): application = m(application) -- cgit v1.2.3-54-g00ecf