Skip to content
Snippets Groups Projects
test_profiles.py 2.63 KiB
Newer Older
  • Learn to ignore specific revisions
  • from conftest import assert_data
    
    from program.models import LinkType
    
    from program.tests.factories import ProfileFactory
    
    pytestmark = pytest.mark.django_db
    
    def url(profile=None) -> str:
        return f"/api/v1/profiles/{profile.id}/" if profile else "/api/v1/profiles/"
    
    def profile_data(image=None, link_type: LinkType = None) -> dict[str, str | int]:
    
        data = {
            "biography": "BIOGRAPHY",
            "email": "host@aura.radio",
            "name": "NAME",
        }
    
            data["image_id"] = image.id
    
        if link_type:
            data["links"] = [{"type_id": link_type.id, "url": "https://aura.radio"}]
    
    
    def test_create_profile(admin_api_client):
        data = profile_data()
    
        response = admin_api_client.post(url(), data=data)
    
        assert response.status_code == 201
    
        assert_data(response, data)
    
    def test_create_profile_forbidden_for_common_user(common_api_client1):
        data = profile_data()
    
        response = common_api_client1.post(url(), data=data)
    
        assert response.status_code == 403
    
    def test_delete_profile(admin_api_client, profile):
        response = admin_api_client.delete(url(profile))
    
        assert response.status_code == 204
    
    def test_delete_profile_forbidden_for_common_user(common_api_client1, profile):
        response = common_api_client1.delete(url(profile))
    
        assert response.status_code == 403
    
    def test_list_profile(admin_api_client):
    
        ProfileFactory.create_batch(size=HOSTS)
    
        response = admin_api_client.get(url())
    
        assert len(response.data) == HOSTS
    
    def test_retrieve_profile(api_client, profile):
        response = api_client.get(url(profile))
    
        assert response.status_code == 200
    
    def test_update_profile(admin_api_client, profile, image):
        update = profile_data(image)
    
        update["is_active"] = False
    
        response = admin_api_client.put(url(profile), data=update)
    
        assert response.status_code == 200
    
        assert_data(response, update)
    
    def test_update_host_profile(admin_api_client, profile, link_type):
        update = profile_data(link_type=link_type)
    
        response = admin_api_client.patch(url(profile), data=update, format="json")
    
    
        assert response.status_code == 200
    
        assert_data(response, update)
    
    
    
    def test_update_profile_forbidden_for_common_user(common_api_client1, profile):
        update = profile_data()
    
        response = common_api_client1.put(url(profile), data=update)
    
        assert response.status_code == 403
    
    
    
    def test_redacted_fields_for_unauthenticated_requests(api_client, profile):
        response = api_client.get(url(profile))
        data = response.json()
    
        assert response.status_code == 200
    
        assert "email" not in data
        assert "cba" not in data