"""Test for the header util.""" from unittest.mock import MagicMock from oto import response from oto import status from owsrequest.constants import headers as owsrequest_constants import pytest from marketing.api import app from marketing.utils import headers @pytest.mark.parametrize('header_data', [ [owsrequest_constants.GRASS_ACCOUNT_TYPE_VENDOR, '10982'], [owsrequest_constants.GRASS_ACCOUNT_TYPE_VENDOR, ''], [owsrequest_constants.GRASS_ACCOUNT_TYPE_VENDOR, None], [owsrequest_constants.GRASS_ACCOUNT_TYPE_SUBACCOUNT, '10982'], [owsrequest_constants.GRASS_ACCOUNT_TYPE_SUBACCOUNT, ''], [owsrequest_constants.GRASS_ACCOUNT_TYPE_SUBACCOUNT, None], ['', '10909282'], [None, '10909282']]) def test_verify_grass_ownership(header_data): """Test verifying Grass ownership with valid headers.""" request_headers = {} if header_data[0] is not None: request_headers.update({ owsrequest_constants.GRASS_ACCOUNT_TYPE: header_data[0] }) if header_data[1] is not None: request_headers.update({ owsrequest_constants.GRASS_ACCOUNT_ID: header_data[1] }) ownership_response = response.Response() # If Grass headers are not provided, we expect a valid response to come # back method = MagicMock(return_value=ownership_response) args = ('some', 'values', 'to', 'provide') kwargs = {'additional': 'data'} with app.test_request_context(headers=request_headers): ownership = headers.verify_grass_ownership(method, *args, **kwargs) assert ownership is ownership_response method.assert_called_with( *args, account_type=header_data[0], account_id=header_data[1], **kwargs) def test_verify_grass_ownership_without_grass_headers(): """Test verifying Grass ownership with no grass headers.""" method = MagicMock() args = ('some', 'values', 'to', 'provide') kwargs = {'additional': 'data'} with app.test_request_context(): ownership = headers.verify_grass_ownership(method, *args, **kwargs) assert ownership.status == status.OK assert not method.called