test: autouse app_context in unit tests (#20911)

This commit is contained in:
Jesse Yang 2022-08-02 15:42:50 -07:00 committed by GitHub
parent c06d5eb70c
commit 7e836e9b04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 142 additions and 212 deletions

View File

@ -17,11 +17,8 @@
# isort:skip_file
"""Unit tests for Superset"""
from ipaddress import ip_address
import sqlalchemy
from flask.ctx import AppContext
from sqlalchemy import Column, Integer
from tests.integration_tests.base_tests import SupersetTestCase
from superset.advanced_data_type.types import (
AdvancedDataTypeRequest,
AdvancedDataTypeResponse,
@ -36,7 +33,7 @@ from superset.advanced_data_type.plugins.internet_port import internet_port as p
# tox -e py38 -- tests/unit_tests/advanced_data_type/types_tests.py
def test_ip_func_valid_ip(app_context: None):
def test_ip_func_valid_ip():
"""Test to see if the cidr_func behaves as expected when a valid IP is passed in"""
cidr_request: AdvancedDataTypeRequest = {
"advanced_data_type": "cidr",
@ -59,7 +56,7 @@ def test_ip_func_valid_ip(app_context: None):
assert internet_address.translate_type(cidr_request) == cidr_response
def test_cidr_func_invalid_ip(app_context: None):
def test_cidr_func_invalid_ip():
"""Test to see if the cidr_func behaves as expected when an invalid IP is passed in"""
cidr_request: AdvancedDataTypeRequest = {
"advanced_data_type": "cidr",
@ -82,7 +79,7 @@ def test_cidr_func_invalid_ip(app_context: None):
assert internet_address.translate_type(cidr_request) == cidr_response
def test_port_translation_func_valid_port_number(app_context: None):
def test_port_translation_func_valid_port_number():
"""Test to see if the port_translation_func behaves as expected when a valid port number
is passed in"""
port_request: AdvancedDataTypeRequest = {
@ -106,7 +103,7 @@ def test_port_translation_func_valid_port_number(app_context: None):
assert port.translate_type(port_request) == port_response
def test_port_translation_func_valid_port_name(app_context: None):
def test_port_translation_func_valid_port_name():
"""Test to see if the port_translation_func behaves as expected when a valid port name
is passed in"""
port_request: AdvancedDataTypeRequest = {
@ -130,7 +127,7 @@ def test_port_translation_func_valid_port_name(app_context: None):
assert port.translate_type(port_request) == port_response
def test_port_translation_func_invalid_port_name(app_context: None):
def test_port_translation_func_invalid_port_name():
"""Test to see if the port_translation_func behaves as expected when an invalid port name
is passed in"""
port_request: AdvancedDataTypeRequest = {
@ -154,7 +151,7 @@ def test_port_translation_func_invalid_port_name(app_context: None):
assert port.translate_type(port_request) == port_response
def test_port_translation_func_invalid_port_number(app_context: None):
def test_port_translation_func_invalid_port_number():
"""Test to see if the port_translation_func behaves as expected when an invalid port
number is passed in"""
port_request: AdvancedDataTypeRequest = {
@ -178,7 +175,7 @@ def test_port_translation_func_invalid_port_number(app_context: None):
assert port.translate_type(port_request) == port_response
def test_cidr_translate_filter_func_equals(app_context: None):
def test_cidr_translate_filter_func_equals():
"""Test to see if the cidr_translate_filter_func behaves as expected when the EQUALS
operator is used"""
@ -193,7 +190,7 @@ def test_cidr_translate_filter_func_equals(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_not_equals(app_context: None):
def test_cidr_translate_filter_func_not_equals():
"""Test to see if the cidr_translate_filter_func behaves as expected when the NOT_EQUALS
operator is used"""
@ -208,7 +205,7 @@ def test_cidr_translate_filter_func_not_equals(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_greater_than_or_equals(app_context: None):
def test_cidr_translate_filter_func_greater_than_or_equals():
"""Test to see if the cidr_translate_filter_func behaves as expected when the
GREATER_THAN_OR_EQUALS operator is used"""
@ -225,7 +222,7 @@ def test_cidr_translate_filter_func_greater_than_or_equals(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_greater_than(app_context: None):
def test_cidr_translate_filter_func_greater_than():
"""Test to see if the cidr_translate_filter_func behaves as expected when the
GREATER_THAN operator is used"""
@ -242,7 +239,7 @@ def test_cidr_translate_filter_func_greater_than(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_less_than(app_context: None):
def test_cidr_translate_filter_func_less_than():
"""Test to see if the cidr_translate_filter_func behaves as expected when the LESS_THAN
operator is used"""
@ -259,7 +256,7 @@ def test_cidr_translate_filter_func_less_than(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_less_than_or_equals(app_context: None):
def test_cidr_translate_filter_func_less_than_or_equals():
"""Test to see if the cidr_translate_filter_func behaves as expected when the
LESS_THAN_OR_EQUALS operator is used"""
@ -276,7 +273,7 @@ def test_cidr_translate_filter_func_less_than_or_equals(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_in_single(app_context: None):
def test_cidr_translate_filter_func_in_single():
"""Test to see if the cidr_translate_filter_func behaves as expected when the IN operator
is used with a single IP"""
@ -293,7 +290,7 @@ def test_cidr_translate_filter_func_in_single(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_in_double(app_context: None):
def test_cidr_translate_filter_func_in_double():
"""Test to see if the cidr_translate_filter_func behaves as expected when the IN operator
is used with two IP's"""
@ -312,7 +309,7 @@ def test_cidr_translate_filter_func_in_double(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_not_in_single(app_context: None):
def test_cidr_translate_filter_func_not_in_single():
"""Test to see if the cidr_translate_filter_func behaves as expected when the NOT_IN
operator is used with a single IP"""
@ -329,7 +326,7 @@ def test_cidr_translate_filter_func_not_in_single(app_context: None):
).compare(cidr_translate_filter_response)
def test_cidr_translate_filter_func_not_in_double(app_context: None):
def test_cidr_translate_filter_func_not_in_double():
"""Test to see if the cidr_translate_filter_func behaves as expected when the NOT_IN
operator is used with two IP's"""
@ -348,7 +345,7 @@ def test_cidr_translate_filter_func_not_in_double(app_context: None):
).compare(cidr_translate_filter_response)
def test_port_translate_filter_func_equals(app_context: None):
def test_port_translate_filter_func_equals():
"""Test to see if the port_translate_filter_func behaves as expected when the EQUALS
operator is used"""
@ -365,7 +362,7 @@ def test_port_translate_filter_func_equals(app_context: None):
)
def test_port_translate_filter_func_not_equals(app_context: None):
def test_port_translate_filter_func_not_equals():
"""Test to see if the port_translate_filter_func behaves as expected when the NOT_EQUALS
operator is used"""
@ -382,7 +379,7 @@ def test_port_translate_filter_func_not_equals(app_context: None):
)
def test_port_translate_filter_func_greater_than_or_equals(app_context: None):
def test_port_translate_filter_func_greater_than_or_equals():
"""Test to see if the port_translate_filter_func behaves as expected when the
GREATER_THAN_OR_EQUALS operator is used"""
@ -399,7 +396,7 @@ def test_port_translate_filter_func_greater_than_or_equals(app_context: None):
)
def test_port_translate_filter_func_greater_than(app_context: None):
def test_port_translate_filter_func_greater_than():
"""Test to see if the port_translate_filter_func behaves as expected when the
GREATER_THAN operator is used"""
@ -416,7 +413,7 @@ def test_port_translate_filter_func_greater_than(app_context: None):
)
def test_port_translate_filter_func_less_than_or_equals(app_context: None):
def test_port_translate_filter_func_less_than_or_equals():
"""Test to see if the port_translate_filter_func behaves as expected when the
LESS_THAN_OR_EQUALS operator is used"""
@ -433,7 +430,7 @@ def test_port_translate_filter_func_less_than_or_equals(app_context: None):
)
def test_port_translate_filter_func_less_than(app_context: None):
def test_port_translate_filter_func_less_than():
"""Test to see if the port_translate_filter_func behaves as expected when the LESS_THAN
operator is used"""
@ -450,7 +447,7 @@ def test_port_translate_filter_func_less_than(app_context: None):
)
def test_port_translate_filter_func_in_single(app_context: None):
def test_port_translate_filter_func_in_single():
"""Test to see if the port_translate_filter_func behaves as expected when the IN operator
is used with a single port"""
@ -467,7 +464,7 @@ def test_port_translate_filter_func_in_single(app_context: None):
)
def test_port_translate_filter_func_in_double(app_context: None):
def test_port_translate_filter_func_in_double():
"""Test to see if the port_translate_filter_func behaves as expected when the IN operator
is used with two ports"""
@ -484,7 +481,7 @@ def test_port_translate_filter_func_in_double(app_context: None):
)
def test_port_translate_filter_func_not_in_single(app_context: None):
def test_port_translate_filter_func_not_in_single():
"""Test to see if the port_translate_filter_func behaves as expected when the NOT_IN
operator is used with a single port"""
@ -501,7 +498,7 @@ def test_port_translate_filter_func_not_in_single(app_context: None):
)
def test_port_translate_filter_func_not_in_double(app_context: None):
def test_port_translate_filter_func_not_in_double():
"""Test to see if the port_translate_filter_func behaves as expected when the NOT_IN
operator is used with two ports"""

View File

@ -21,7 +21,7 @@ import copy
from sqlalchemy.orm.session import Session
def test_import_chart(app_context: None, session: Session) -> None:
def test_import_chart(session: Session) -> None:
"""
Test importing a chart.
"""
@ -45,7 +45,7 @@ def test_import_chart(app_context: None, session: Session) -> None:
assert chart.external_url is None
def test_import_chart_managed_externally(app_context: None, session: Session) -> None:
def test_import_chart_managed_externally(session: Session) -> None:
"""
Test importing a chart that is managed externally.
"""

View File

@ -20,7 +20,7 @@
from sqlalchemy.orm.session import Session
def test_column_model(app_context: None, session: Session) -> None:
def test_column_model(session: Session) -> None:
"""
Test basic attributes of a ``Column``.
"""

View File

@ -20,7 +20,7 @@ from freezegun import freeze_time
from pytest_mock import MockFixture
def test_export_assets_command(mocker: MockFixture, app_context: None) -> None:
def test_export_assets_command(mocker: MockFixture) -> None:
"""
Test that all assets are exported correctly.
"""

View File

@ -74,7 +74,7 @@ def apply_dttm_defaults(table: "SqlaTable", dttm_defaults: Dict[str, Any]) -> No
@pytest.fixture
def test_table(app_context: None, session: Session) -> "SqlaTable":
def test_table(session: Session) -> "SqlaTable":
"""
Fixture that generates an in-memory table.
"""

View File

@ -102,7 +102,7 @@ def client(app: SupersetApp) -> Any:
yield client
@pytest.fixture
@pytest.fixture(autouse=True)
def app_context(app: SupersetApp) -> Iterator[None]:
"""
A fixture that yields and application context.

View File

@ -21,7 +21,7 @@ import pytest
from sqlalchemy.orm.session import Session
def test_query_dao_save_metadata(app_context: None, session: Session) -> None:
def test_query_dao_save_metadata(session: Session) -> None:
from superset.models.core import Database
from superset.models.sql_lab import Query

View File

@ -21,7 +21,7 @@ import copy
from sqlalchemy.orm.session import Session
def test_import_dashboard(app_context: None, session: Session) -> None:
def test_import_dashboard(session: Session) -> None:
"""
Test importing a dashboard.
"""
@ -43,9 +43,7 @@ def test_import_dashboard(app_context: None, session: Session) -> None:
assert dashboard.external_url is None
def test_import_dashboard_managed_externally(
app_context: None, session: Session
) -> None:
def test_import_dashboard_managed_externally(session: Session) -> None:
"""
Test importing a dashboard that is managed externally.
"""

View File

@ -82,7 +82,7 @@ def test_update_id_refs_immune_missing( # pylint: disable=invalid-name
}
def test_update_native_filter_config_scope_excluded(app_context: None):
def test_update_native_filter_config_scope_excluded():
from superset.dashboards.commands.importers.v1.utils import update_id_refs
config = {

View File

@ -21,7 +21,7 @@ import copy
from sqlalchemy.orm.session import Session
def test_import_database(app_context: None, session: Session) -> None:
def test_import_database(session: Session) -> None:
"""
Test importing a database.
"""
@ -48,9 +48,7 @@ def test_import_database(app_context: None, session: Session) -> None:
assert database.external_url is None
def test_import_database_managed_externally(
app_context: None, session: Session
) -> None:
def test_import_database_managed_externally(session: Session) -> None:
"""
Test importing a database that is managed externally.
"""

View File

@ -21,7 +21,7 @@ from sqlalchemy.orm.session import Session
from superset.databases.utils import make_url_safe
def test_make_url_safe_string(app_context: None, session: Session) -> None:
def test_make_url_safe_string(session: Session) -> None:
"""
Test converting a string to a safe uri
"""
@ -31,7 +31,7 @@ def test_make_url_safe_string(app_context: None, session: Session) -> None:
assert uri_safe == make_url(uri_string)
def test_make_url_safe_url(app_context: None, session: Session) -> None:
def test_make_url_safe_url(session: Session) -> None:
"""
Test converting a url to a safe uri
"""

View File

@ -24,7 +24,7 @@ from superset.dataframe import df_to_records
from superset.superset_typing import DbapiDescription
def test_df_to_records(app_context: None) -> None:
def test_df_to_records() -> None:
from superset.db_engine_specs import BaseEngineSpec
from superset.result_set import SupersetResultSet
@ -41,7 +41,7 @@ def test_df_to_records(app_context: None) -> None:
]
def test_js_max_int(app_context: None) -> None:
def test_js_max_int() -> None:
from superset.db_engine_specs import BaseEngineSpec
from superset.result_set import SupersetResultSet

View File

@ -21,7 +21,7 @@ import json
from sqlalchemy.orm.session import Session
def test_export(app_context: None, session: Session) -> None:
def test_export(session: Session) -> None:
"""
Test exporting a dataset.
"""

View File

@ -24,7 +24,7 @@ from typing import Any, Dict
from sqlalchemy.orm.session import Session
def test_import_dataset(app_context: None, session: Session) -> None:
def test_import_dataset(session: Session) -> None:
"""
Test importing a dataset.
"""
@ -137,7 +137,7 @@ def test_import_dataset(app_context: None, session: Session) -> None:
assert sqla_table.database.id == database.id
def test_import_dataset_duplicate_column(app_context: None, session: Session) -> None:
def test_import_dataset_duplicate_column(session: Session) -> None:
"""
Test importing a dataset with a column that already exists.
"""
@ -260,7 +260,7 @@ def test_import_dataset_duplicate_column(app_context: None, session: Session) ->
assert sqla_table.database.id == database.id
def test_import_column_extra_is_string(app_context: None, session: Session) -> None:
def test_import_column_extra_is_string(session: Session) -> None:
"""
Test importing a dataset when the column extra is a string.
"""
@ -340,7 +340,7 @@ def test_import_column_extra_is_string(app_context: None, session: Session) -> N
assert sqla_table.extra == '{"warning_markdown": "*WARNING*"}'
def test_import_dataset_managed_externally(app_context: None, session: Session) -> None:
def test_import_dataset_managed_externally(session: Session) -> None:
"""
Test importing a dataset that is managed externally.
"""

View File

@ -27,7 +27,7 @@ if TYPE_CHECKING:
from superset.connectors.sqla.models import SqlMetric, TableColumn
def test_dataset_model(app_context: None, session: Session) -> None:
def test_dataset_model(session: Session) -> None:
"""
Test basic attributes of a ``Dataset``.
"""
@ -86,7 +86,7 @@ FROM my_catalog.my_schema.my_table
assert [column.name for column in dataset.columns] == ["position"]
def test_cascade_delete_table(app_context: None, session: Session) -> None:
def test_cascade_delete_table(session: Session) -> None:
"""
Test that deleting ``Table`` also deletes its columns.
"""
@ -121,7 +121,7 @@ def test_cascade_delete_table(app_context: None, session: Session) -> None:
assert len(columns) == 0
def test_cascade_delete_dataset(app_context: None, session: Session) -> None:
def test_cascade_delete_dataset(session: Session) -> None:
"""
Test that deleting ``Dataset`` also deletes its columns.
"""
@ -175,7 +175,7 @@ FROM my_catalog.my_schema.my_table
assert len(columns) == 2
def test_dataset_attributes(app_context: None, session: Session) -> None:
def test_dataset_attributes(session: Session) -> None:
"""
Test that checks attributes in the dataset.
@ -649,7 +649,7 @@ FROM
}
def test_delete_sqlatable(app_context: None, session: Session) -> None:
def test_delete_sqlatable(session: Session) -> None:
"""
Test that deleting a ``SqlaTable`` also deletes the corresponding ``Dataset``.
"""
@ -689,7 +689,7 @@ def test_delete_sqlatable(app_context: None, session: Session) -> None:
def test_update_physical_sqlatable_columns(
mocker: MockFixture, app_context: None, session: Session
mocker: MockFixture, session: Session
) -> None:
"""
Test that updating a ``SqlaTable`` also updates the corresponding ``Dataset``.
@ -765,7 +765,7 @@ def test_update_physical_sqlatable_columns(
def test_update_physical_sqlatable_schema(
mocker: MockFixture, app_context: None, session: Session
mocker: MockFixture, session: Session
) -> None:
"""
Test that updating a ``SqlaTable`` schema also updates the corresponding ``Dataset``.
@ -1046,7 +1046,7 @@ def test_update_physical_sqlatable_database(
def test_update_virtual_sqlatable_references(
mocker: MockFixture, app_context: None, session: Session
mocker: MockFixture, session: Session
) -> None:
"""
Test that changing the SQL of a virtual ``SqlaTable`` updates ``Dataset``.
@ -1122,7 +1122,7 @@ def test_update_virtual_sqlatable_references(
assert new_dataset.tables[2].name == "table_c"
def test_quote_expressions(app_context: None, session: Session) -> None:
def test_quote_expressions(session: Session) -> None:
"""
Test that expressions are quoted appropriately in columns and datasets.
"""

View File

@ -99,9 +99,7 @@ FROM my_catalog.my_schema.my_table
yield session
def test_get_datasource_sqlatable(
app_context: None, session_with_data: Session
) -> None:
def test_get_datasource_sqlatable(session_with_data: Session) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.datasource.dao import DatasourceDAO
@ -116,7 +114,7 @@ def test_get_datasource_sqlatable(
assert isinstance(result, SqlaTable)
def test_get_datasource_query(app_context: None, session_with_data: Session) -> None:
def test_get_datasource_query(session_with_data: Session) -> None:
from superset.datasource.dao import DatasourceDAO
from superset.models.sql_lab import Query
@ -128,9 +126,7 @@ def test_get_datasource_query(app_context: None, session_with_data: Session) ->
assert isinstance(result, Query)
def test_get_datasource_saved_query(
app_context: None, session_with_data: Session
) -> None:
def test_get_datasource_saved_query(session_with_data: Session) -> None:
from superset.datasource.dao import DatasourceDAO
from superset.models.sql_lab import SavedQuery
@ -144,7 +140,7 @@ def test_get_datasource_saved_query(
assert isinstance(result, SavedQuery)
def test_get_datasource_sl_table(app_context: None, session_with_data: Session) -> None:
def test_get_datasource_sl_table(session_with_data: Session) -> None:
from superset.datasource.dao import DatasourceDAO
from superset.tables.models import Table
@ -160,9 +156,7 @@ def test_get_datasource_sl_table(app_context: None, session_with_data: Session)
assert isinstance(result, Table)
def test_get_datasource_sl_dataset(
app_context: None, session_with_data: Session
) -> None:
def test_get_datasource_sl_dataset(session_with_data: Session) -> None:
from superset.datasets.models import Dataset
from superset.datasource.dao import DatasourceDAO
@ -178,9 +172,7 @@ def test_get_datasource_sl_dataset(
assert isinstance(result, Dataset)
def test_get_datasource_w_str_param(
app_context: None, session_with_data: Session
) -> None:
def test_get_datasource_w_str_param(session_with_data: Session) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.datasets.models import Dataset
from superset.datasource.dao import DatasourceDAO
@ -205,7 +197,7 @@ def test_get_datasource_w_str_param(
)
def test_get_all_datasources(app_context: None, session_with_data: Session) -> None:
def test_get_all_datasources(session_with_data: Session) -> None:
from superset.connectors.sqla.models import SqlaTable
result = SqlaTable.get_all_datasources(session=session_with_data)

View File

@ -18,8 +18,6 @@
import re
from datetime import datetime
from flask.ctx import AppContext
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from tests.unit_tests.fixtures.common import dttm
@ -28,7 +26,7 @@ SYNTAX_ERROR_REGEX = re.compile(
)
def test_convert_dttm(app_context: AppContext, dttm: datetime) -> None:
def test_convert_dttm(dttm: datetime) -> None:
"""
Test that date objects are converted correctly.
"""
@ -43,7 +41,7 @@ def test_convert_dttm(app_context: AppContext, dttm: datetime) -> None:
)
def test_extract_errors(app_context: AppContext) -> None:
def test_extract_errors() -> None:
"""
Test that custom error messages are extracted correctly.
"""
@ -70,7 +68,7 @@ def test_extract_errors(app_context: AppContext) -> None:
]
def test_get_text_clause_with_colon(app_context: AppContext) -> None:
def test_get_text_clause_with_colon() -> None:
"""
Make sure text clauses don't escape the colon character
"""

View File

@ -19,11 +19,10 @@
from textwrap import dedent
import pytest
from flask.ctx import AppContext
from sqlalchemy.types import TypeEngine
def test_get_text_clause_with_colon(app_context: AppContext) -> None:
def test_get_text_clause_with_colon() -> None:
"""
Make sure text clauses are correctly escaped
"""
@ -36,7 +35,7 @@ def test_get_text_clause_with_colon(app_context: AppContext) -> None:
assert text_clause.text == "SELECT foo FROM tbl WHERE foo = '123\\:456')"
def test_parse_sql_single_statement(app_context: AppContext) -> None:
def test_parse_sql_single_statement() -> None:
"""
`parse_sql` should properly strip leading and trailing spaces and semicolons
"""
@ -47,7 +46,7 @@ def test_parse_sql_single_statement(app_context: AppContext) -> None:
assert queries == ["SELECT foo FROM tbl"]
def test_parse_sql_multi_statement(app_context: AppContext) -> None:
def test_parse_sql_multi_statement() -> None:
"""
For string with multiple SQL-statements `parse_sql` method should return list
where each element represents the single SQL-statement
@ -95,9 +94,7 @@ select 'USD' as cur
),
],
)
def test_cte_query_parsing(
app_context: AppContext, original: TypeEngine, expected: str
) -> None:
def test_cte_query_parsing(original: TypeEngine, expected: str) -> None:
from superset.db_engine_specs.base import BaseEngineSpec
actual = BaseEngineSpec.get_cte_query(original)

View File

@ -16,14 +16,13 @@
# under the License.
# pylint: disable=unused-argument, import-outside-toplevel, protected-access
from flask.ctx import AppContext
from pybigquery.sqlalchemy_bigquery import BigQueryDialect
from pytest_mock import MockFixture
from sqlalchemy import select
from sqlalchemy.sql import sqltypes
def test_get_fields(app_context: AppContext) -> None:
def test_get_fields() -> None:
"""
Test the custom ``_get_fields`` method.
@ -66,7 +65,7 @@ def test_get_fields(app_context: AppContext) -> None:
)
def test_select_star(mocker: MockFixture, app_context: AppContext) -> None:
def test_select_star(mocker: MockFixture) -> None:
"""
Test the ``select_star`` method.

View File

@ -16,11 +16,10 @@
# under the License.
# pylint: disable=unused-argument, import-outside-toplevel, protected-access
from flask.ctx import AppContext
from pytest import raises
def test_odbc_impersonation(app_context: AppContext) -> None:
def test_odbc_impersonation() -> None:
"""
Test ``get_url_for_impersonation`` method when driver == odbc.
@ -36,7 +35,7 @@ def test_odbc_impersonation(app_context: AppContext) -> None:
assert url.query["DelegationUID"] == username
def test_jdbc_impersonation(app_context: AppContext) -> None:
def test_jdbc_impersonation() -> None:
"""
Test ``get_url_for_impersonation`` method when driver == jdbc.
@ -52,7 +51,7 @@ def test_jdbc_impersonation(app_context: AppContext) -> None:
assert url.query["impersonation_target"] == username
def test_sadrill_impersonation(app_context: AppContext) -> None:
def test_sadrill_impersonation() -> None:
"""
Test ``get_url_for_impersonation`` method when driver == sadrill.
@ -68,7 +67,7 @@ def test_sadrill_impersonation(app_context: AppContext) -> None:
assert url.query["impersonation_target"] == username
def test_invalid_impersonation(app_context: AppContext) -> None:
def test_invalid_impersonation() -> None:
"""
Test ``get_url_for_impersonation`` method when driver == foobar.

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from flask.ctx import AppContext
from pytest_mock import MockFixture
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
@ -28,7 +27,6 @@ class ProgrammingError(Exception):
def test_validate_parameters_simple(
mocker: MockFixture,
app_context: AppContext,
) -> None:
from superset.db_engine_specs.gsheets import (
GSheetsEngineSpec,
@ -52,7 +50,6 @@ def test_validate_parameters_simple(
def test_validate_parameters_catalog(
mocker: MockFixture,
app_context: AppContext,
) -> None:
from superset.db_engine_specs.gsheets import (
GSheetsEngineSpec,
@ -143,7 +140,6 @@ def test_validate_parameters_catalog(
def test_validate_parameters_catalog_and_credentials(
mocker: MockFixture,
app_context: AppContext,
) -> None:
from superset.db_engine_specs.gsheets import (
GSheetsEngineSpec,

View File

@ -18,7 +18,6 @@
from datetime import datetime
import pytest
from flask.ctx import AppContext
from tests.unit_tests.fixtures.common import dttm
@ -32,9 +31,7 @@ from tests.unit_tests.fixtures.common import dttm
("INSERT INTO tbl (foo) VALUES (1)", False),
],
)
def test_sql_is_readonly_query(
app_context: AppContext, sql: str, expected: bool
) -> None:
def test_sql_is_readonly_query(sql: str, expected: bool) -> None:
"""
Make sure that SQL dialect consider only SELECT statements as read-only
"""
@ -56,7 +53,7 @@ def test_sql_is_readonly_query(
(".show tables", False),
],
)
def test_kql_is_select_query(app_context: AppContext, kql: str, expected: bool) -> None:
def test_kql_is_select_query(kql: str, expected: bool) -> None:
"""
Make sure that KQL dialect consider only statements that do not start with "." (dot)
as a SELECT statements
@ -83,9 +80,7 @@ def test_kql_is_select_query(app_context: AppContext, kql: str, expected: bool)
(".set-or-append table foo <| bar", False),
],
)
def test_kql_is_readonly_query(
app_context: AppContext, kql: str, expected: bool
) -> None:
def test_kql_is_readonly_query(kql: str, expected: bool) -> None:
"""
Make sure that KQL dialect consider only SELECT statements as read-only
"""
@ -99,7 +94,7 @@ def test_kql_is_readonly_query(
assert expected == is_readonly
def test_kql_parse_sql(app_context: AppContext) -> None:
def test_kql_parse_sql() -> None:
"""
parse_sql method should always return a list with a single element
which is an original query
@ -121,7 +116,6 @@ def test_kql_parse_sql(app_context: AppContext) -> None:
],
)
def test_kql_convert_dttm(
app_context: AppContext,
target_type: str,
expected_dttm: str,
dttm: datetime,
@ -145,7 +139,6 @@ def test_kql_convert_dttm(
],
)
def test_sql_convert_dttm(
app_context: AppContext,
target_type: str,
expected_dttm: str,
dttm: datetime,

View File

@ -19,7 +19,6 @@ from datetime import datetime
from textwrap import dedent
import pytest
from flask.ctx import AppContext
from sqlalchemy import column, table
from sqlalchemy.dialects import mssql
from sqlalchemy.dialects.mssql import DATE, NTEXT, NVARCHAR, TEXT, VARCHAR
@ -44,7 +43,6 @@ from tests.unit_tests.fixtures.common import dttm
],
)
def test_mssql_column_types(
app_context: AppContext,
type_string: str,
type_expected: TypeEngine,
generic_type_expected: GenericDataType,
@ -61,7 +59,7 @@ def test_mssql_column_types(
assert column_spec.generic_type == generic_type_expected
def test_where_clause_n_prefix(app_context: AppContext) -> None:
def test_where_clause_n_prefix() -> None:
from superset.db_engine_specs.mssql import MssqlEngineSpec
dialect = mssql.dialect()
@ -95,7 +93,7 @@ def test_where_clause_n_prefix(app_context: AppContext) -> None:
assert query == query_expected
def test_time_exp_mixd_case_col_1y(app_context: AppContext) -> None:
def test_time_exp_mixd_case_col_1y() -> None:
from superset.db_engine_specs.mssql import MssqlEngineSpec
col = column("MixedCase")
@ -122,7 +120,6 @@ def test_time_exp_mixd_case_col_1y(app_context: AppContext) -> None:
],
)
def test_convert_dttm(
app_context: AppContext,
actual: str,
expected: str,
dttm: datetime,
@ -132,7 +129,7 @@ def test_convert_dttm(
assert MssqlEngineSpec.convert_dttm(actual, dttm) == expected
def test_extract_error_message(app_context: AppContext) -> None:
def test_extract_error_message() -> None:
from superset.db_engine_specs.mssql import MssqlEngineSpec
test_mssql_exception = Exception(
@ -158,7 +155,7 @@ def test_extract_error_message(app_context: AppContext) -> None:
assert expected_message == error_message
def test_fetch_data(app_context: AppContext) -> None:
def test_fetch_data() -> None:
from superset.db_engine_specs.base import BaseEngineSpec
from superset.db_engine_specs.mssql import MssqlEngineSpec
@ -185,9 +182,7 @@ def test_fetch_data(app_context: AppContext) -> None:
(NTEXT(collation="utf8_general_ci"), "NTEXT"),
],
)
def test_column_datatype_to_string(
app_context: AppContext, original: TypeEngine, expected: str
) -> None:
def test_column_datatype_to_string(original: TypeEngine, expected: str) -> None:
from superset.db_engine_specs.mssql import MssqlEngineSpec
actual = MssqlEngineSpec.column_datatype_to_string(original, mssql.dialect())
@ -239,9 +234,7 @@ select 'USD' as cur
),
],
)
def test_cte_query_parsing(
app_context: AppContext, original: TypeEngine, expected: str
) -> None:
def test_cte_query_parsing(original: TypeEngine, expected: str) -> None:
from superset.db_engine_specs.mssql import MssqlEngineSpec
actual = MssqlEngineSpec.get_cte_query(original)
@ -270,16 +263,14 @@ select TOP 100 * from currency""",
),
],
)
def test_top_query_parsing(
app_context: AppContext, original: TypeEngine, expected: str, top: int
) -> None:
def test_top_query_parsing(original: TypeEngine, expected: str, top: int) -> None:
from superset.db_engine_specs.mssql import MssqlEngineSpec
actual = MssqlEngineSpec.apply_top_to_sql(original, top)
assert actual == expected
def test_extract_errors(app_context: AppContext) -> None:
def test_extract_errors() -> None:
"""
Test that custom error messages are extracted correctly.
"""

View File

@ -19,7 +19,6 @@ from typing import Optional
import pytest
import pytz
from flask.ctx import AppContext
@pytest.mark.parametrize(
@ -45,7 +44,6 @@ from flask.ctx import AppContext
],
)
def test_convert_dttm(
app_context: AppContext,
target_type: str,
dttm: datetime,
result: Optional[str],

View File

@ -19,7 +19,6 @@ from datetime import datetime
from unittest import mock
import pytest
from flask.ctx import AppContext
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from tests.unit_tests.fixtures.common import dttm
@ -33,15 +32,13 @@ from tests.unit_tests.fixtures.common import dttm
("TIMESTAMP", "TO_TIMESTAMP('2019-01-02T03:04:05.678900')"),
],
)
def test_convert_dttm(
app_context: AppContext, actual: str, expected: str, dttm: datetime
) -> None:
def test_convert_dttm(actual: str, expected: str, dttm: datetime) -> None:
from superset.db_engine_specs.snowflake import SnowflakeEngineSpec
assert SnowflakeEngineSpec.convert_dttm(actual, dttm) == expected
def test_database_connection_test_mutator(app_context: AppContext) -> None:
def test_database_connection_test_mutator() -> None:
from superset.db_engine_specs.snowflake import SnowflakeEngineSpec
from superset.models.core import Database
@ -54,7 +51,7 @@ def test_database_connection_test_mutator(app_context: AppContext) -> None:
} == engine_params
def test_extract_errors(app_context: AppContext) -> None:
def test_extract_errors() -> None:
from superset.db_engine_specs.snowflake import SnowflakeEngineSpec
msg = "Object dumbBrick does not exist or not authorized."

View File

@ -19,31 +19,30 @@ from datetime import datetime
from unittest import mock
import pytest
from flask.ctx import AppContext
from sqlalchemy.engine import create_engine
from tests.unit_tests.fixtures.common import dttm
def test_convert_dttm(app_context: AppContext, dttm: datetime) -> None:
def test_convert_dttm(dttm: datetime) -> None:
from superset.db_engine_specs.sqlite import SqliteEngineSpec
assert SqliteEngineSpec.convert_dttm("TEXT", dttm) == "'2019-01-02 03:04:05.678900'"
def test_convert_dttm_lower(app_context: AppContext, dttm: datetime) -> None:
def test_convert_dttm_lower(dttm: datetime) -> None:
from superset.db_engine_specs.sqlite import SqliteEngineSpec
assert SqliteEngineSpec.convert_dttm("text", dttm) == "'2019-01-02 03:04:05.678900'"
def test_convert_dttm_invalid_type(app_context: AppContext, dttm: datetime) -> None:
def test_convert_dttm_invalid_type(dttm: datetime) -> None:
from superset.db_engine_specs.sqlite import SqliteEngineSpec
assert SqliteEngineSpec.convert_dttm("other", dttm) is None
def test_get_all_datasource_names_table(app_context: AppContext) -> None:
def test_get_all_datasource_names_table() -> None:
from superset.db_engine_specs.sqlite import SqliteEngineSpec
database = mock.MagicMock()
@ -62,7 +61,7 @@ def test_get_all_datasource_names_table(app_context: AppContext) -> None:
)
def test_get_all_datasource_names_view(app_context: AppContext) -> None:
def test_get_all_datasource_names_view() -> None:
from superset.db_engine_specs.sqlite import SqliteEngineSpec
database = mock.MagicMock()
@ -81,7 +80,7 @@ def test_get_all_datasource_names_view(app_context: AppContext) -> None:
)
def test_get_all_datasource_names_invalid_type(app_context: AppContext) -> None:
def test_get_all_datasource_names_invalid_type() -> None:
from superset.db_engine_specs.sqlite import SqliteEngineSpec
database = mock.MagicMock()
@ -132,9 +131,7 @@ def test_get_all_datasource_names_invalid_type(app_context: AppContext) -> None:
("2022-12-04T05:06:07.89Z", "P3M", "2022-10-01 00:00:00"),
],
)
def test_time_grain_expressions(
dttm: str, grain: str, expected: str, app_context: AppContext
) -> None:
def test_time_grain_expressions(dttm: str, grain: str, expected: str) -> None:
from superset.db_engine_specs.sqlite import SqliteEngineSpec
engine = create_engine("sqlite://")

View File

@ -16,7 +16,6 @@
# under the License.
# pylint: disable=unused-argument, import-outside-toplevel, protected-access
import pytest
from flask.ctx import AppContext
@pytest.mark.parametrize(
@ -32,7 +31,6 @@ from flask.ctx import AppContext
],
)
def test_apply_top_to_sql_limit(
app_context: AppContext,
limit: int,
original: str,
expected: str,

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from flask.ctx import AppContext
from flask_appbuilder.security.sqla.models import User
from pytest import raises
from pytest_mock import MockFixture
@ -51,7 +50,7 @@ query_datasources_by_name = (
)
def test_unsaved_chart_no_dataset_id(app_context: AppContext) -> None:
def test_unsaved_chart_no_dataset_id() -> None:
from superset.explore.utils import check_access as check_chart_access
with raises(DatasourceNotFoundValidationError):
@ -63,9 +62,7 @@ def test_unsaved_chart_no_dataset_id(app_context: AppContext) -> None:
)
def test_unsaved_chart_unknown_dataset_id(
mocker: MockFixture, app_context: AppContext
) -> None:
def test_unsaved_chart_unknown_dataset_id(mocker: MockFixture) -> None:
from superset.explore.utils import check_access as check_chart_access
with raises(DatasetNotFoundError):
@ -79,9 +76,7 @@ def test_unsaved_chart_unknown_dataset_id(
)
def test_unsaved_chart_unknown_query_id(
mocker: MockFixture, app_context: AppContext
) -> None:
def test_unsaved_chart_unknown_query_id(mocker: MockFixture) -> None:
from superset.explore.utils import check_access as check_chart_access
with raises(QueryNotFoundValidationError):
@ -95,9 +90,7 @@ def test_unsaved_chart_unknown_query_id(
)
def test_unsaved_chart_unauthorized_dataset(
mocker: MockFixture, app_context: AppContext
) -> None:
def test_unsaved_chart_unauthorized_dataset(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
@ -113,9 +106,7 @@ def test_unsaved_chart_unauthorized_dataset(
)
def test_unsaved_chart_authorized_dataset(
mocker: MockFixture, app_context: AppContext
) -> None:
def test_unsaved_chart_authorized_dataset(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
@ -130,9 +121,7 @@ def test_unsaved_chart_authorized_dataset(
)
def test_saved_chart_unknown_chart_id(
mocker: MockFixture, app_context: AppContext
) -> None:
def test_saved_chart_unknown_chart_id(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
@ -149,9 +138,7 @@ def test_saved_chart_unknown_chart_id(
)
def test_saved_chart_unauthorized_dataset(
mocker: MockFixture, app_context: AppContext
) -> None:
def test_saved_chart_unauthorized_dataset(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
@ -167,7 +154,7 @@ def test_saved_chart_unauthorized_dataset(
)
def test_saved_chart_is_admin(mocker: MockFixture, app_context: AppContext) -> None:
def test_saved_chart_is_admin(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
from superset.models.slice import Slice
@ -185,7 +172,7 @@ def test_saved_chart_is_admin(mocker: MockFixture, app_context: AppContext) -> N
)
def test_saved_chart_is_owner(mocker: MockFixture, app_context: AppContext) -> None:
def test_saved_chart_is_owner(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
from superset.models.slice import Slice
@ -204,7 +191,7 @@ def test_saved_chart_is_owner(mocker: MockFixture, app_context: AppContext) -> N
)
def test_saved_chart_has_access(mocker: MockFixture, app_context: AppContext) -> None:
def test_saved_chart_has_access(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
from superset.models.slice import Slice
@ -224,7 +211,7 @@ def test_saved_chart_has_access(mocker: MockFixture, app_context: AppContext) ->
)
def test_saved_chart_no_access(mocker: MockFixture, app_context: AppContext) -> None:
def test_saved_chart_no_access(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_access as check_chart_access
from superset.models.slice import Slice
@ -245,7 +232,7 @@ def test_saved_chart_no_access(mocker: MockFixture, app_context: AppContext) ->
)
def test_dataset_has_access(mocker: MockFixture, app_context: AppContext) -> None:
def test_dataset_has_access(mocker: MockFixture) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_datasource_access
@ -263,7 +250,7 @@ def test_dataset_has_access(mocker: MockFixture, app_context: AppContext) -> Non
)
def test_query_has_access(mocker: MockFixture, app_context: AppContext) -> None:
def test_query_has_access(mocker: MockFixture) -> None:
from superset.explore.utils import check_datasource_access
from superset.models.sql_lab import Query
@ -281,7 +268,7 @@ def test_query_has_access(mocker: MockFixture, app_context: AppContext) -> None:
)
def test_query_no_access(mocker: MockFixture, client, app_context: AppContext) -> None:
def test_query_no_access(mocker: MockFixture, client) -> None:
from superset.connectors.sqla.models import SqlaTable
from superset.explore.utils import check_datasource_access
from superset.models.core import Database

View File

@ -34,7 +34,7 @@ def test_where_in() -> None:
assert where_in(["O'Malley's"]) == "('O''Malley''s')"
def test_dataset_macro(mocker: MockFixture, app_context: None) -> None:
def test_dataset_macro(mocker: MockFixture) -> None:
"""
Test the ``dataset_macro`` macro.
"""

View File

@ -15,10 +15,9 @@
# specific language governing permissions and limitations
# under the License.
import pandas as pd
from flask.ctx import AppContext
def test_render_description_with_html(app_context: AppContext) -> None:
def test_render_description_with_html() -> None:
# `superset.models.helpers`, a dependency of following imports,
# requires app context
from superset.reports.models import ReportRecipients, ReportRecipientType

View File

@ -18,7 +18,7 @@
# pylint: disable=import-outside-toplevel, unused-argument
def test_column_names_as_bytes(app_context: None) -> None:
def test_column_names_as_bytes() -> None:
"""
Test that we can handle column names as bytes.
"""

View File

@ -63,7 +63,6 @@ def test_execute_sql_statement(mocker: MockerFixture, app: None) -> None:
def test_execute_sql_statement_with_rls(
mocker: MockerFixture,
app_context: None,
) -> None:
"""
Test for `execute_sql_statement` when an RLS rule is in place.
@ -118,7 +117,6 @@ def test_execute_sql_statement_with_rls(
def test_sql_lab_insert_rls(
mocker: MockerFixture,
session: Session,
app_context: None,
) -> None:
"""
Integration test for `insert_rls`.

View File

@ -1445,7 +1445,7 @@ def test_add_table_name(rls: str, table: str, expected: str) -> None:
assert str(condition) == expected
def test_get_rls_for_table(mocker: MockerFixture, app_context: None) -> None:
def test_get_rls_for_table(mocker: MockerFixture) -> None:
"""
Tests for ``get_rls_for_table``.
"""

View File

@ -20,7 +20,7 @@
from sqlalchemy.orm.session import Session
def test_table_model(app_context: None, session: Session) -> None:
def test_table_model(session: Session) -> None:
"""
Test basic attributes of a ``Table``.
"""

View File

@ -20,7 +20,6 @@ from typing import List
import pytest
import pytz
from dateutil import parser
from flask.ctx import AppContext
from freezegun import freeze_time
from freezegun.api import FakeDatetime # type: ignore
@ -50,7 +49,7 @@ from superset.tasks.cron_util import cron_schedule_window
],
)
def test_cron_schedule_window_los_angeles(
app_context: AppContext, current_dttm: str, cron: str, expected: List[FakeDatetime]
current_dttm: str, cron: str, expected: List[FakeDatetime]
) -> None:
"""
Reports scheduler: Test cron schedule window for "America/Los_Angeles"
@ -87,7 +86,7 @@ def test_cron_schedule_window_los_angeles(
],
)
def test_cron_schedule_window_invalid_timezone(
app_context: AppContext, current_dttm: str, cron: str, expected: List[FakeDatetime]
current_dttm: str, cron: str, expected: List[FakeDatetime]
) -> None:
"""
Reports scheduler: Test cron schedule window for "invalid timezone"
@ -125,7 +124,7 @@ def test_cron_schedule_window_invalid_timezone(
],
)
def test_cron_schedule_window_new_york(
app_context: AppContext, current_dttm: str, cron: str, expected: List[FakeDatetime]
current_dttm: str, cron: str, expected: List[FakeDatetime]
) -> None:
"""
Reports scheduler: Test cron schedule window for "America/New_York"
@ -162,7 +161,7 @@ def test_cron_schedule_window_new_york(
],
)
def test_cron_schedule_window_chicago(
app_context: AppContext, current_dttm: str, cron: str, expected: List[FakeDatetime]
current_dttm: str, cron: str, expected: List[FakeDatetime]
) -> None:
"""
Reports scheduler: Test cron schedule window for "America/Chicago"
@ -199,7 +198,7 @@ def test_cron_schedule_window_chicago(
],
)
def test_cron_schedule_window_chicago_daylight(
app_context: AppContext, current_dttm: str, cron: str, expected: List[FakeDatetime]
current_dttm: str, cron: str, expected: List[FakeDatetime]
) -> None:
"""
Reports scheduler: Test cron schedule window for "America/Chicago"

View File

@ -18,7 +18,6 @@ import json
from typing import Any
import pytest
from flask.ctx import AppContext
from sqlalchemy.dialects.postgresql import dialect
from superset import app
@ -26,30 +25,30 @@ from superset.exceptions import SupersetTemplateException
from superset.jinja_context import ExtraCache, safe_proxy
def test_filter_values_default(app_context: AppContext) -> None:
def test_filter_values_default() -> None:
cache = ExtraCache()
assert cache.filter_values("name", "foo") == ["foo"]
assert cache.removed_filters == []
def test_filter_values_remove_not_present(app_context: AppContext) -> None:
def test_filter_values_remove_not_present() -> None:
cache = ExtraCache()
assert cache.filter_values("name", remove_filter=True) == []
assert cache.removed_filters == []
def test_get_filters_remove_not_present(app_context: AppContext) -> None:
def test_get_filters_remove_not_present() -> None:
cache = ExtraCache()
assert cache.get_filters("name", remove_filter=True) == []
assert cache.removed_filters == []
def test_filter_values_no_default(app_context: AppContext) -> None:
def test_filter_values_no_default() -> None:
cache = ExtraCache()
assert cache.filter_values("name") == []
def test_filter_values_adhoc_filters(app_context: AppContext) -> None:
def test_filter_values_adhoc_filters() -> None:
with app.test_request_context(
data={
"form_data": json.dumps(
@ -93,7 +92,7 @@ def test_filter_values_adhoc_filters(app_context: AppContext) -> None:
assert cache.applied_filters == ["name"]
def test_get_filters_adhoc_filters(app_context: AppContext) -> None:
def test_get_filters_adhoc_filters() -> None:
with app.test_request_context(
data={
"form_data": json.dumps(
@ -167,7 +166,7 @@ def test_get_filters_adhoc_filters(app_context: AppContext) -> None:
assert cache.applied_filters == ["name"]
def test_filter_values_extra_filters(app_context: AppContext) -> None:
def test_filter_values_extra_filters() -> None:
with app.test_request_context(
data={
"form_data": json.dumps(
@ -180,25 +179,25 @@ def test_filter_values_extra_filters(app_context: AppContext) -> None:
assert cache.applied_filters == ["name"]
def test_url_param_default(app_context: AppContext) -> None:
def test_url_param_default() -> None:
with app.test_request_context():
cache = ExtraCache()
assert cache.url_param("foo", "bar") == "bar"
def test_url_param_no_default(app_context: AppContext) -> None:
def test_url_param_no_default() -> None:
with app.test_request_context():
cache = ExtraCache()
assert cache.url_param("foo") is None
def test_url_param_query(app_context: AppContext) -> None:
def test_url_param_query() -> None:
with app.test_request_context(query_string={"foo": "bar"}):
cache = ExtraCache()
assert cache.url_param("foo") == "bar"
def test_url_param_form_data(app_context: AppContext) -> None:
def test_url_param_form_data() -> None:
with app.test_request_context(
query_string={"form_data": json.dumps({"url_params": {"foo": "bar"}})}
):
@ -206,7 +205,7 @@ def test_url_param_form_data(app_context: AppContext) -> None:
assert cache.url_param("foo") == "bar"
def test_url_param_escaped_form_data(app_context: AppContext) -> None:
def test_url_param_escaped_form_data() -> None:
with app.test_request_context(
query_string={"form_data": json.dumps({"url_params": {"foo": "O'Brien"}})}
):
@ -214,7 +213,7 @@ def test_url_param_escaped_form_data(app_context: AppContext) -> None:
assert cache.url_param("foo") == "O''Brien"
def test_url_param_escaped_default_form_data(app_context: AppContext) -> None:
def test_url_param_escaped_default_form_data() -> None:
with app.test_request_context(
query_string={"form_data": json.dumps({"url_params": {"foo": "O'Brien"}})}
):
@ -222,7 +221,7 @@ def test_url_param_escaped_default_form_data(app_context: AppContext) -> None:
assert cache.url_param("bar", "O'Malley") == "O''Malley"
def test_url_param_unescaped_form_data(app_context: AppContext) -> None:
def test_url_param_unescaped_form_data() -> None:
with app.test_request_context(
query_string={"form_data": json.dumps({"url_params": {"foo": "O'Brien"}})}
):
@ -230,7 +229,7 @@ def test_url_param_unescaped_form_data(app_context: AppContext) -> None:
assert cache.url_param("foo", escape_result=False) == "O'Brien"
def test_url_param_unescaped_default_form_data(app_context: AppContext) -> None:
def test_url_param_unescaped_default_form_data() -> None:
with app.test_request_context(
query_string={"form_data": json.dumps({"url_params": {"foo": "O'Brien"}})}
):
@ -238,21 +237,21 @@ def test_url_param_unescaped_default_form_data(app_context: AppContext) -> None:
assert cache.url_param("bar", "O'Malley", escape_result=False) == "O'Malley"
def test_safe_proxy_primitive(app_context: AppContext) -> None:
def test_safe_proxy_primitive() -> None:
def func(input_: Any) -> Any:
return input_
assert safe_proxy(func, "foo") == "foo"
def test_safe_proxy_dict(app_context: AppContext) -> None:
def test_safe_proxy_dict() -> None:
def func(input_: Any) -> Any:
return input_
assert safe_proxy(func, {"foo": "bar"}) == {"foo": "bar"}
def test_safe_proxy_lambda(app_context: AppContext) -> None:
def test_safe_proxy_lambda() -> None:
def func(input_: Any) -> Any:
return input_
@ -260,7 +259,7 @@ def test_safe_proxy_lambda(app_context: AppContext) -> None:
safe_proxy(func, lambda: "bar")
def test_safe_proxy_nested_lambda(app_context: AppContext) -> None:
def test_safe_proxy_nested_lambda() -> None:
def func(input_: Any) -> Any:
return input_

View File

@ -21,7 +21,7 @@
from pytest_mock import MockerFixture
def test_memoized_func(app_context: None, mocker: MockerFixture) -> None:
def test_memoized_func(mocker: MockerFixture) -> None:
"""
Test the ``memoized_func`` decorator.
"""