aboutsummaryrefslogtreecommitdiffstats
path: root/tests/middleware/test_open_database.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/middleware/test_open_database.py')
-rw-r--r--tests/middleware/test_open_database.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/middleware/test_open_database.py b/tests/middleware/test_open_database.py
new file mode 100644
index 0000000..43ebb07
--- /dev/null
+++ b/tests/middleware/test_open_database.py
@@ -0,0 +1,55 @@
+import urllib.parse
+import urllib.request
+from wsgiref.validate import validator
+
+import pytest
+
+from paste import open_database
+
+from ..common_wsgi import call_app
+
+
+@pytest.fixture
+def app():
+ @validator
+ @open_database
+ @validator
+ def app(environ, start_response):
+ assert "paste.db_conn" in environ
+ conn = environ["paste.db_conn"]
+ (ver,) = conn.execute("PRAGMA user_version").fetchone()
+ assert ver > 0
+ start_response("200 OK", [("Content-Type", "text/plain")])
+ return [b"Hello, World!"]
+
+ return app
+
+
+def test_open_uri_memory(app):
+ response = call_app(app, environ={"PASTE_DB": "file::memory:"})
+ assert response.status == "200 OK"
+ assert response.data == b"Hello, World!"
+ assert ("Content-Type", "text/plain") in response.headers
+
+
+def test_open_uri_file(app, tmp_path):
+ uri = urllib.parse.urlunsplit(
+ (
+ "file",
+ None,
+ urllib.request.pathname2url(str(tmp_path / "test.db")),
+ None,
+ None,
+ )
+ )
+ response = call_app(app, environ={"PASTE_DB": uri})
+ assert response.status == "200 OK"
+ assert response.data == b"Hello, World!"
+ assert ("Content-Type", "text/plain") in response.headers
+
+
+def test_open_file(app, tmp_path):
+ response = call_app(app, environ={"PASTE_DB": str(tmp_path / "test.db")})
+ assert response.status == "200 OK"
+ assert response.data == b"Hello, World!"
+ assert ("Content-Type", "text/plain") in response.headers