"""Integration tests for POST /vendors/service_tier/dataloader endpoint.""" import pytest import requests from tests.integration.conftest import ProfileInfo from tests.integration.consts import api vendor_data_single = [ { 'vendor_id': 792273, 'uuid': '04221a10-0408-11f0-8476-0ef8c77b7565', 'service_tier_uuid': '5f2bd4fc-df94-4f35-97d3-ef23f8573279', 'service_tier_name': 'diy-tier-1', 'service_tier_display_name': 'Basic', } ] vendor_data_multiple = [ { 'vendor_id': 792273, 'uuid': '04221a10-0408-11f0-8476-0ef8c77b7565', 'service_tier_uuid': '5f2bd4fc-df94-4f35-97d3-ef23f8573279', 'service_tier_name': 'diy-tier-1', 'service_tier_display_name': 'Basic', }, { 'vendor_id': 792370, 'uuid': '0685b13b-0a8d-11f0-8476-0ef8c77b7565', 'service_tier_uuid': '2304f272-7a12-40fc-ba48-959fff435223', 'service_tier_name': 'managed-basic', 'service_tier_display_name': 'Managed Basic', }, { 'vendor_id': 792191, 'uuid': '7a7a1d6d-0021-11f0-8476-0ef8c77b7565', 'service_tier_uuid': '1ed7aac0-ceb6-4c09-9166-afda8f349316', 'service_tier_name': 'tier-1', 'service_tier_display_name': 'Tier 1', }, { 'vendor_id': 792158, 'uuid': '2ec3fd81-fe99-11ef-8476-0ef8c77b7565', 'service_tier_uuid': '7410e51c-90da-4092-99da-b5489f364fa8', 'service_tier_name': 'tier-2', 'service_tier_display_name': 'Tier 2', }, { 'vendor_id': 792146, 'uuid': '995b0dc0-fdeb-11ef-8476-0ef8c77b7565', 'service_tier_uuid': '9363881e-1120-4495-ae09-657e13609e11', 'service_tier_name': 'tier-3', 'service_tier_display_name': 'Tier 3', }, { 'vendor_id': 792100, 'uuid': 'd8361153-faaf-11ef-8476-0ef8c77b7565', 'service_tier_uuid': '1dd92c83-25a3-4034-9a3d-f7c3f434f4ce', 'service_tier_name': 'premium-services', 'service_tier_display_name': 'Premium Services', }, None, # for non-existent vendor ] @pytest.mark.parametrize( 'vendor_uuids,expected_data', [ ( ['04221a10-0408-11f0-8476-0ef8c77b7565'], vendor_data_single, ), ( [ '04221a10-0408-11f0-8476-0ef8c77b7565', '0685b13b-0a8d-11f0-8476-0ef8c77b7565', '7a7a1d6d-0021-11f0-8476-0ef8c77b7565', '2ec3fd81-fe99-11ef-8476-0ef8c77b7565', '995b0dc0-fdeb-11ef-8476-0ef8c77b7565', 'd8361153-faaf-11ef-8476-0ef8c77b7565', 'f29dd336-d39e-4163-b0b8-cf2d0bbf3910', # non-existent ], vendor_data_multiple, ), ], ) def test_vendors_service_tier_dataloader_with_skip_access_check( vendor_uuids: list[str], expected_data: list ) -> None: """Test dataloader endpoint with skip_access_check=True.""" response = requests.post( api.VENDORS_SERVICE_TIER_DATALOADER, json={'vendor_uuids': vendor_uuids, 'skip_access_check': True}, ) assert response.status_code == 200 response_json = response.json() assert 'vendors' in response_json assert response_json['vendors'] == expected_data def test_vendors_service_tier_dataloader_with_access_granted( ows_account_test_user_settings_profile: ProfileInfo, ) -> None: """Test dataloader endpoint with access check passing.""" response = requests.post( api.VENDORS_SERVICE_TIER_DATALOADER, json={'vendor_uuids': ['04221a10-0408-11f0-8476-0ef8c77b7565'], 'skip_access_check': False}, headers={ 'Orchard-Profile-Type': ows_account_test_user_settings_profile.profile_type, 'Orchard-Profile-Id': str(ows_account_test_user_settings_profile.profile_id), 'Orchard-Identity-Id': ows_account_test_user_settings_profile.identity_id, }, ) assert response.status_code == 200 response_json = response.json() assert 'vendors' in response_json assert response_json['vendors'] == vendor_data_single def test_vendors_service_tier_dataloader_with_access_denied( settings_e2e_user_label_profile: ProfileInfo, ) -> None: """Test dataloader endpoint with access check failing.""" response = requests.post( api.VENDORS_SERVICE_TIER_DATALOADER, json={'vendor_uuids': ['04221a10-0408-11f0-8476-0ef8c77b7565'], 'skip_access_check': False}, headers={ 'Orchard-Profile-Type': settings_e2e_user_label_profile.profile_type, 'Orchard-Profile-Id': str(settings_e2e_user_label_profile.profile_id), 'Orchard-Identity-Id': settings_e2e_user_label_profile.identity_id, }, ) assert response.status_code == 403 response_json = response.json() assert response_json['code'] == 'authorization_error' assert 'Access denied' in response_json['message'] @pytest.mark.parametrize( 'vendor_uuids,expected_status', [ ([], 200), (['invalid-uuid'], 400), ], ) def test_vendors_service_tier_dataloader_edge_cases( vendor_uuids: list[str], expected_status: int ) -> None: """Test dataloader endpoint with edge cases.""" response = requests.post( api.VENDORS_SERVICE_TIER_DATALOADER, json={'vendor_uuids': vendor_uuids, 'skip_access_check': True}, ) assert response.status_code == expected_status