From c431c6f0fc9ec9be996ac77500d2bfbe3ec38cfc Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Sat, 21 Jan 2023 12:47:09 +0100 Subject: [PATCH] Tighten pytest raises assertions --- test/unit/util/test_bool_expressions.py | 3 ++- test/unit/util/test_sqlite_utils.py | 14 ++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/test/unit/util/test_bool_expressions.py b/test/unit/util/test_bool_expressions.py index 58e9766a679..1c8596ca528 100644 --- a/test/unit/util/test_bool_expressions.py +++ b/test/unit/util/test_bool_expressions.py @@ -1,4 +1,5 @@ import pytest +from pyparsing.exceptions import ParseException from galaxy.util.bool_expressions import ( BooleanExpressionEvaluator, @@ -61,7 +62,7 @@ def test_expression_evaluates_as_expected(expr: str, expected: bool, contained_e @pytest.mark.parametrize("expr", INVALID_EXPRESSIONS_TESTS) def test_invalid_expression_raises_exception(expr: str, contained_evaluator: BooleanExpressionEvaluator): - with pytest.raises(Exception): + with pytest.raises(ParseException): contained_evaluator.evaluate_expression(expr) diff --git a/test/unit/util/test_sqlite_utils.py b/test/unit/util/test_sqlite_utils.py index 8e627614316..758733579c5 100644 --- a/test/unit/util/test_sqlite_utils.py +++ b/test/unit/util/test_sqlite_utils.py @@ -21,17 +21,19 @@ def test_sqlite_exploits(): connection = sqlite.connect(":memory:") connection.execute("create TABLE FOO (foo1 text)") __assert_has_n_rows(connection, "select * from FOO", 0) - __assert_query_errors(connection, "select * from FOOX") + __assert_query_errors(connection, "select * from FOOX", "no such table") # Make sure sqlite query cannot execute multiple statements - __assert_query_errors(connection, "select * from FOO; select * from FOO") + __assert_query_errors( + connection, "select * from FOO; select * from FOO", "You can only execute one statement at a time." + ) # Make sure sqlite cannot select on PRAGMA results - __assert_query_errors(connection, "select * from (PRAGMA database_list)") + __assert_query_errors(connection, "select * from (PRAGMA database_list)", "no such table: PRAGMA") __assert_has_n_rows(connection, "select * from FOO where foo1 in (SELECT foo1 from FOO)", 0) # Ensure nested queries cannot modify database. - __assert_query_errors(connection, "select * from FOO where foo1 in (INSERT INTO FOO VALUES ('bar')") + __assert_query_errors(connection, "select * from FOO where foo1 in (INSERT INTO FOO VALUES ('bar')", "syntax error") # Should access to the schema be disallowed? # __assert_has_n_rows(connection, "select * from SQLITE_MASTER", 0) @@ -44,8 +46,8 @@ def __assert_has_n_rows(connection, query, n): assert count == n -def __assert_query_errors(connection, query): - with pytest.raises(Exception): +def __assert_query_errors(connection, query, match): + with pytest.raises(Exception, match=match): connection.cursor().execute(query)