"""Tests for validation.""" from unittest.mock import MagicMock, Mock import flask import application from store.utils.validations import ( ORDER_BY, ORDER_BY_PARAM_DEFAULT, ORDER_DIR, ORDER_DIR_DEFAULT, VALID_PARAMS, sanitize_sort_params, validate_profile_access, ) profile_id_header = 1234 profile_type_header = "DummyProfile" identity_id_header = "123abc" def test_validate_profile_access_error_on_profile_headers(mocker: Mock) -> None: """ Test request profile validation of the request. Error on getting Orchard headers. """ mocker.patch( "store.utils.validations.flask_request.get_profile_headers", return_value=(None, None), ) result = validate_profile_access(MagicMock()) assert not result def test_validate_profile_access_error_on_profile_type_header(mocker: Mock) -> None: """ Test request profile validation of the request. Error on getting Orchard-Profile-Type header. """ mocker.patch( "store.utils.validations.flask_request.get_profile_headers", return_value=(None, profile_id_header), ) result = validate_profile_access(MagicMock()) assert not result def test_validate_profile_access_error_on_profile_id_header(mocker: Mock) -> None: """ Test request profile validation of the request. Error on getting Orchard-Profile-Id header. """ mocker.patch( "store.utils.validations.flask_request.get_profile_headers", return_value=(profile_type_header, None), ) result = validate_profile_access(MagicMock()) assert not result def test_sanitize_sort_params_unpermitted() -> None: """ Test un-permitted sort params are set to default. """ with application.app.test_request_context( query_string={ ORDER_BY: "; drop table customer_master_master;", ORDER_DIR: "; drop table customer_master;", } ): sanitized = sanitize_sort_params(flask.request) assert sanitized[ORDER_BY] == VALID_PARAMS[ORDER_BY][ORDER_BY_PARAM_DEFAULT] assert sanitized[ORDER_DIR] == ORDER_DIR_DEFAULT def test_sanitize_sort_params_defaults() -> None: """ Test undefined sort params are set to default. """ with application.app.test_request_context(query_string={}): sanitized = sanitize_sort_params(flask.request) assert sanitized[ORDER_BY] == VALID_PARAMS[ORDER_BY][ORDER_BY_PARAM_DEFAULT] assert sanitized[ORDER_DIR] == ORDER_DIR_DEFAULT def test_sanitize_sort_params_override() -> None: """ Test valid non-default params are permitted. """ with application.app.test_request_context(query_string={ORDER_DIR: "desc"}): sanitized = sanitize_sort_params(flask.request) assert sanitized[ORDER_BY] == VALID_PARAMS[ORDER_BY][ORDER_BY_PARAM_DEFAULT] assert sanitized[ORDER_DIR] == "desc"