"""Tests for requester validation.""" import pytest from flask import Response from assets.api import app from assets.constants import field_const from assets.validation.requester import block_alw_and_oa_users @app.route("/route_for_testing_block_alw_and_oa_users") @block_alw_and_oa_users def route_for_testing_block_alw_and_oa_users() -> Response: """Route for testing block_alw_and_oa_users.""" return Response("Success", 200) @pytest.mark.parametrize( ( "test_description", "headers", "expected_result", ), [ ( "not alw or or user", {}, Response("Success", status=200), ), ( "alw or oa user because of Orchard-User-Id header", { field_const.ORCHARD_USER_ID: "some orchard user id", }, Response( '{"code": "authorization_error", "message": "Request not allowed"}', status=403, ), ), ( "alw user because of Grass-Account-Type header", { field_const.GRASS_ACCOUNT_TYPE: "some orchard user id", }, Response( '{"code": "authorization_error", "message": "Request not allowed"}', status=403, ), ), ( "alw user because of Grass-Account-Id header", { field_const.GRASS_ACCOUNT_ID: "some orchard user id", }, Response( '{"code": "authorization_error", "message": "Request not allowed"}', status=403, ), ), ], ) def test_block_alw_and_oa_users( test_description: str, headers: dict[str, str], expected_result: Response, ) -> None: """Test block_alw_and_oa_users.""" response = app.test_client().get( "/route_for_testing_block_alw_and_oa_users", headers=headers ) assert response.status_code == expected_result.status_code assert response.data == expected_result.data