import pytest from paste import db @pytest.fixture def unmigrated_conn(): with db.connect("file::memory:", migrations=None) as conn: yield conn @pytest.fixture def conn(): with db.connect("file::memory:") as conn: yield conn def test_connect_succeeds(conn): _ = conn pass def test_migration_succeeds(unmigrated_conn): conn = unmigrated_conn assert db.get_version(conn) == 0 (schema_count,) = conn.execute("SELECT COUNT(*) FROM sqlite_schema").fetchone() assert schema_count == 0 db.migrate(conn, db.migrations) assert db.get_version(conn) == 1 (schema_count,) = conn.execute("SELECT COUNT(*) FROM sqlite_schema").fetchone() assert schema_count == 7 hash_testdata = [ ("", "", True), (b"", b"", True), ("a", "a", True), (b"a", b"a", True), ("a", "", False), ("a", "A", False), ("a", "b", False), ("a", "aa", False), (b"a", "a", True), (b"a", "A", False), ] @pytest.mark.parametrize("a,b,expected", hash_testdata) def test_hash_behaves_normally(unmigrated_conn, a, b, expected): (res,) = unmigrated_conn.execute( "SELECT DATA_HASH(?) == DATA_HASH(?)", (a, b) ).fetchone() assert res == (1 if expected else 0) @pytest.mark.parametrize("a,b,expected", hash_testdata) def test_sha256_behaves_normally(unmigrated_conn, a, b, expected): (res,) = unmigrated_conn.execute("SELECT SHA256(?) == SHA256(?)", (a, b)).fetchone() assert res == (1 if expected else 0)