import uuid import httpx import pytest from tests.integration.config import TEST_GLOBAL_PARTICIPANT_ID, TEST_VENDOR_ID from tests.integration.dtos import TestUser from tests.integration.utils import get_user_email @pytest.mark.parametrize( "authenticated_client_with_email,expected_status", [ (get_user_email(TestUser.NO_ACCESS), 403), (get_user_email(TestUser.BASIC), 403), (get_user_email(TestUser.BASIC_SHOPIFY), 403), (get_user_email(TestUser.AD_REPORTING), 403), (get_user_email(TestUser.APP_CONN_SHOPIFY), 403), (get_user_email(TestUser.APP_CONN), 403), (get_user_email(TestUser.EMAIL_VIEW), 403), (get_user_email(TestUser.EMAIL_CREATE), 200), (get_user_email(TestUser.SMS_VIEW), 403), (get_user_email(TestUser.SMS_CREATE), 200), (get_user_email(TestUser.CAPRICORN), 403), (get_user_email(TestUser.AQUARIUS), 403), (get_user_email(TestUser.VIRGO), 403), ], indirect=["authenticated_client_with_email"], ) def test_get_audiences( authenticated_client_with_email: httpx.Client, expected_status: int ) -> None: response = authenticated_client_with_email.get( "/audiences", ) assert response.status_code == expected_status @pytest.mark.parametrize( "authenticated_client_with_email,expected_status", [ (get_user_email(TestUser.NO_ACCESS), 403), (get_user_email(TestUser.BASIC), 403), (get_user_email(TestUser.BASIC_SHOPIFY), 403), (get_user_email(TestUser.AD_REPORTING), 403), (get_user_email(TestUser.APP_CONN_SHOPIFY), 403), (get_user_email(TestUser.APP_CONN), 403), (get_user_email(TestUser.EMAIL_VIEW), 403), (get_user_email(TestUser.EMAIL_CREATE), 403), (get_user_email(TestUser.SMS_VIEW), 403), (get_user_email(TestUser.SMS_CREATE), 403), ], indirect=["authenticated_client_with_email"], ) def test_create_audience_ad_target( authenticated_client_with_email: httpx.Client, expected_status: int ) -> None: response = authenticated_client_with_email.post( "/audiences", json={ "name": f"test-{uuid.uuid4()}", "vendorId": TEST_VENDOR_ID, "subaccountId": 0, "fanDataListIds": [ { "id": TEST_GLOBAL_PARTICIPANT_ID, "type": "ARTIST", } ], "target": "ADS", "filters": {"countries": ["AQ"]}, }, ) assert response.status_code == expected_status @pytest.mark.parametrize( "authenticated_client_with_email,expected_status", [ (get_user_email(TestUser.NO_ACCESS), 403), (get_user_email(TestUser.BASIC), 403), (get_user_email(TestUser.BASIC_SHOPIFY), 403), (get_user_email(TestUser.AD_REPORTING), 403), (get_user_email(TestUser.APP_CONN_SHOPIFY), 403), (get_user_email(TestUser.APP_CONN), 403), (get_user_email(TestUser.EMAIL_VIEW), 403), (get_user_email(TestUser.SMS_VIEW), 403), (get_user_email(TestUser.SMS_CREATE), 403), ], indirect=["authenticated_client_with_email"], ) def test_create_audience_email_target( authenticated_client_with_email: httpx.Client, expected_status: int ) -> None: response = authenticated_client_with_email.post( "/audiences", json={ "name": f"test-{uuid.uuid4()}", "vendorId": TEST_VENDOR_ID, "subaccountId": 0, "fanDataListIds": [ { "id": TEST_GLOBAL_PARTICIPANT_ID, "type": "ARTIST", } ], "target": "EMAIL", "filters": {"countries": ["AQ"]}, }, ) assert response.status_code == expected_status