aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Kramkowski <tomasz@kramkow.ski>2023-03-29 19:02:53 +0100
committerTomasz Kramkowski <tomasz@kramkow.ski>2023-03-29 19:02:53 +0100
commite4c4db197c1ac3c51f9e3db553689d9c1f9614df (patch)
treee6421accfb38d19c6f126c465b4394eb3c5413d6
parent72e3796c9e89946fd820fda96912dba2519e0828 (diff)
downloadpaste-e4c4db197c1ac3c51f9e3db553689d9c1f9614df.tar.gz
paste-e4c4db197c1ac3c51f9e3db553689d9c1f9614df.tar.xz
paste-e4c4db197c1ac3c51f9e3db553689d9c1f9614df.zip
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.
-rw-r--r--paste/__init__.py10
1 files 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)