diff options
author | Tomasz Kramkowski <tomasz@kramkow.ski> | 2023-03-28 18:53:15 +0100 |
---|---|---|
committer | Tomasz Kramkowski <tomasz@kramkow.ski> | 2023-03-28 20:10:48 +0100 |
commit | d198fca95919cc78275d3d9fa8f1b0a8acfdbab3 (patch) | |
tree | c5e01750f40310df6a365da94b7e76ef540f8a27 /tests | |
parent | a4669636144bf1f3d61bb5af80e23841f2ad8481 (diff) | |
download | paste-d198fca95919cc78275d3d9fa8f1b0a8acfdbab3.tar.gz paste-d198fca95919cc78275d3d9fa8f1b0a8acfdbab3.tar.xz paste-d198fca95919cc78275d3d9fa8f1b0a8acfdbab3.zip |
Switch back to centralised opening of the database
Create Store instances when needed
This will make more sense with following commits
Diffstat (limited to 'tests')
-rw-r--r-- | tests/middleware/test_authenticate.py | 23 | ||||
-rw-r--r-- | tests/middleware/test_open_store.py | 20 | ||||
-rw-r--r-- | tests/test_application.py | 6 |
3 files changed, 30 insertions, 19 deletions
diff --git a/tests/middleware/test_authenticate.py b/tests/middleware/test_authenticate.py index 2acfe92..9fccb32 100644 --- a/tests/middleware/test_authenticate.py +++ b/tests/middleware/test_authenticate.py @@ -34,7 +34,7 @@ def test_unauthenticated_request(app, method): def test_unauthenticated_request_with_key(app, method): environ = { "REQUEST_METHOD": method, - "paste.store": None, + "paste.db_conn": None, "HTTP_AUTHORIZATION": "ApiKey AAAA", } response = call_app(app, environ) @@ -64,13 +64,22 @@ def test_authenticate_malformed_key(app, method, key): assert ("WWW-Authenticate", "APIKey") in response.headers -class MockDB: +class MockConnection: def __init__(self, check_token): self.check_token = check_token +class MockStore: + def __init__(self, c): + assert isinstance(c, MockConnection) + self.conn = c + + def check_token(self, tok): + return self.conn.check_token(tok) + + @pytest.mark.parametrize("method", ["POST", "PUT", "DELETE"]) -def test_authenticate_check_token_fail(app, method): +def test_authenticate_check_token_fail(app, method, monkeypatch): check_token_called = False token = b"test" @@ -82,10 +91,11 @@ def test_authenticate_check_token_fail(app, method): environ = { "REQUEST_METHOD": method, - "paste.store": MockDB(check_token), + "paste.db_conn": MockConnection(check_token), "HTTP_AUTHORIZATION": f"APIKey {b64encode(token).decode()}", } + monkeypatch.setattr("paste.Store", MockStore) response = call_app(app, environ) assert check_token_called assert response.data == b"401 Unauthorized\n" @@ -95,7 +105,7 @@ def test_authenticate_check_token_fail(app, method): @pytest.mark.parametrize("method", ["POST", "PUT", "DELETE"]) -def test_authenticate_check_token_success(app, method): +def test_authenticate_check_token_success(app, method, monkeypatch): check_token_called = False token = b"test" @@ -107,10 +117,11 @@ def test_authenticate_check_token_success(app, method): environ = { "REQUEST_METHOD": method, - "paste.store": MockDB(check_token), + "paste.db_conn": MockConnection(check_token), "HTTP_AUTHORIZATION": f"APIKey {b64encode(token).decode()}", } + monkeypatch.setattr("paste.Store", MockStore) response = call_app(app, environ) assert check_token_called assert response.data == b"Hello, world!" diff --git a/tests/middleware/test_open_store.py b/tests/middleware/test_open_store.py index dd430e9..3e844a9 100644 --- a/tests/middleware/test_open_store.py +++ b/tests/middleware/test_open_store.py @@ -1,30 +1,30 @@ from contextlib import contextmanager from wsgiref.validate import validator -from paste import open_store +from paste import open_database from ..common_wsgi import call_app -def test_open_store(monkeypatch): +def test_open_database(monkeypatch): db_path = "test_db_path" - store = object() + conn = object() @contextmanager - def store_open(path): - assert path == db_path - yield store + def connect(uri): + assert uri == db_path + yield conn @validator - @open_store + @open_database @validator def app(environ, start_response): - assert "paste.store" in environ - assert environ["paste.store"] == store + assert "paste.db_conn" in environ + assert environ["paste.db_conn"] == conn start_response("200 OK", [("Content-Type", "text/plain")]) return [b"Hello, World!"] - monkeypatch.setattr("paste.store.open", store_open) + monkeypatch.setattr("paste.db.connect", connect) response = call_app(app, environ={"PASTE_DB": db_path}) assert response.status == "200 OK" assert response.data == b"Hello, World!" diff --git a/tests/test_application.py b/tests/test_application.py index e86d937..20cbeac 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -4,15 +4,15 @@ import pytest from webtest import TestApp import paste.db -import paste.store from paste import __main__, application +from paste.store import Store DB = "file::memory:?cache=shared" @pytest.fixture def db(): - with paste.store.open(DB) as d: + with paste.db.connect(DB) as d: yield d @@ -25,7 +25,7 @@ def app(db): @pytest.fixture def token(db): - return b64encode(db.generate_token()).decode() + return b64encode(Store(db).generate_token()).decode() @pytest.mark.parametrize("method", ["put", "post", "delete"]) |