Skip to content
Snippets Groups Projects
test_hosts.py 2.29 KiB
Newer Older
from conftest import assert_data
from program.models import LinkType
from program.tests.factories import HostFactory
pytestmark = pytest.mark.django_db
def url(host=None) -> str:
    return f"/api/v1/hosts/{host.id}/" if host else "/api/v1/hosts/"
def host_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_host(admin_api_client):
    data = host_data()
    response = admin_api_client.post(url(), data=data)
    assert response.status_code == 201
    assert_data(response, data)
def test_create_host_forbidden_for_common_user(common_api_client1):
    data = host_data()
    response = common_api_client1.post(url(), data=data)
    assert response.status_code == 403
def test_delete_host(admin_api_client, host):
    response = admin_api_client.delete(url(host))
    assert response.status_code == 204
def test_delete_host_forbidden_for_common_user(common_api_client1, host):
    response = common_api_client1.delete(url(host))
    assert response.status_code == 403
def test_list_hosts(admin_api_client):
    HOSTS = 3
    HostFactory.create_batch(size=HOSTS)
    response = admin_api_client.get(url())
    assert len(response.data) == HOSTS
def test_retrieve_host(api_client, host):
    response = api_client.get(url(host))
    assert response.status_code == 200
def test_update_host(admin_api_client, host, image):
    update = host_data(image)
    update["is_active"] = False
    response = admin_api_client.put(url(host), data=update)
    assert response.status_code == 200
    assert_data(response, update)
def test_update_host_links(admin_api_client, host, link_type):
    update = host_data(link_type=link_type)

    response = admin_api_client.patch(url(host), data=update, format="json")

    assert response.status_code == 200

    assert_data(response, update)


def test_update_host_forbidden_for_common_user(common_api_client1, host):
    update = host_data()
    response = common_api_client1.put(url(host), data=update)
    assert response.status_code == 403