diff options
author | Frederick Muriuki Muriithi | 2022-11-03 13:31:33 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2022-11-03 13:31:33 +0300 |
commit | be699ee4a1b090f45cad8702cfb887c24982f1d7 (patch) | |
tree | f2c52bb8e0686af5e4022ac4766b0be61ee2724c /tests/unit/conftest.py | |
parent | fbc8d034a9a034aa37cc3bc3893b4c1344bd09ee (diff) | |
download | genenetwork3-be699ee4a1b090f45cad8702cfb887c24982f1d7.tar.gz |
Add credentials checking
* gn3/auth/authentication.py: new function `credentials_in_database`
* gn3/auth/authentication/__init__.py: replace package with module
* gn3/settings.py: new `AUTH_MIGRATIONS` configuration variable
* migrations/auth/20221103_02_sGrIs-create-user-credentials-table.py: new
migration
* tests/unit/auth/test_credentials.py: test the `credentials_in_database`
function
* tests/unit/conftest.py: more test fixtures
Diffstat (limited to 'tests/unit/conftest.py')
-rw-r--r-- | tests/unit/conftest.py | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index bc974d9..dd6abb4 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -1,11 +1,13 @@ """Fixtures for unit tests.""" +import sqlite3 from typing import Union from pathlib import Path from datetime import datetime +from contextlib import closing from tempfile import TemporaryDirectory import pytest -from yoyo import get_backend +from yoyo import get_backend, read_migrations from yoyo.migrations import Migration, MigrationList from gn3.app import create_app @@ -25,16 +27,21 @@ def client(): # Clean up after ourselves testdb.unlink(missing_ok=True) -@pytest.fixture() +@pytest.fixture(scope="session") def test_app_config(client): # pylint: disable=redefined-outer-name """Return the test application's configuration object""" return client.application.config -@pytest.fixture() -def auth_testdb(test_app_config): # pylint: disable=redefined-outer-name +@pytest.fixture(scope="session") +def auth_testdb_path(test_app_config): # pylint: disable=redefined-outer-name """Get the test application's auth database file""" return test_app_config["AUTH_DB"] +@pytest.fixture(scope="session") +def auth_migrations_dir(test_app_config): # pylint: disable=redefined-outer-name + """Get the test application's auth database file""" + return test_app_config["AUTH_MIGRATIONS"] + def apply_single_migration(db_uri: Union[Path, str], migration: Migration): """Utility to apply a single migration""" apply_migrations(get_backend(f"sqlite:///{db_uri}"), MigrationList([migration])) @@ -42,3 +49,14 @@ def apply_single_migration(db_uri: Union[Path, str], migration: Migration): def rollback_single_migration(db_uri: Union[Path, str], migration: Migration): """Utility to rollback a single migration""" rollback_migrations(get_backend(f"sqlite:///{db_uri}"), MigrationList([migration])) + +@pytest.fixture(scope="function") +def conn_after_auth_migrations(auth_testdb_path, auth_migrations_dir): + """Run all migrations and return a connection to the database after""" + backend = get_backend(f"sqlite:///{auth_testdb_path}") + migrations = read_migrations(auth_migrations_dir) + apply_migrations(backend, migrations) + with closing(sqlite3.connect(auth_testdb_path)) as conn: + yield conn + + rollback_migrations(backend, migrations) |