aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/auth/test_create_user_credentials_table.py
blob: 72b7dd7fe82451edd8cff28be630a727da2134de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""Test the auth database initialisation migration."""
from contextlib import closing

import pytest
import sqlite3

from gn3.migrations import get_migration, apply_migrations, rollback_migrations
from tests.unit.auth.conftest import (
    apply_single_migration, rollback_single_migration, migrations_up_to)

migration_path = "migrations/auth/20221103_02_sGrIs-create-user-credentials-table.py"

@pytest.mark.unit_test
def test_create_user_credentials_table(auth_testdb_path, backend, all_migrations):
    """
    GIVEN: A database migration script to create the `user_credentials` table
    WHEN: The migration is applied
    THEN: Ensure that the table is created
    """
    older_migrations = migrations_up_to(migration_path, "migrations/auth/")
    apply_migrations(backend, older_migrations)
    with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor:
        cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'")
        result = cursor.fetchall()
        assert "users_credentials" not in [row[0] for row in cursor.fetchall()]
        apply_single_migration(auth_testdb_path, get_migration(migration_path))
        cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'")
        assert "user_credentials" in [row[0] for row in cursor.fetchall()]

    rollback_migrations(backend, older_migrations)

@pytest.mark.unit_test
def test_rollback_create_user_credentials_table(auth_testdb_path, backend):
    """
    GIVEN: A database migration script to create the `user_credentials` table
    WHEN: The migration is rolled back
    THEN: Ensure that the `user_credentials` table no longer exists
    """
    older_migrations = migrations_up_to(migration_path, "migrations/auth/")
    apply_migrations(backend, older_migrations)
    with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor:
        apply_single_migration(auth_testdb_path, get_migration(migration_path))
        rollback_single_migration(auth_testdb_path, get_migration(migration_path))
        cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'")
        assert "user_credentials" not in [row[0] for row in cursor.fetchall()]

    rollback_migrations(backend, older_migrations)