import http

import pytest
from rest_framework.test import APIClient

from networkmap.api import UserMapViewSet

TEST_LINK = ['netmap-maps-list']


@pytest.mark.django_db
class TestApi(object):

    @pytest.mark.unit
    @pytest.mark.parametrize('link', TEST_LINK)
    def test_get_api_not_authorized(self, get_url, test_server, link):
        client = APIClient()
        response = client.get(get_url(link))

        assert response.status_code == http.HTTPStatus.FORBIDDEN

    @pytest.mark.unit
    @pytest.mark.parametrize('link', TEST_LINK)
    def test_get_api_authenticated_wo_needed_rights(self, add_user_with_permissions, get_url, test_server, link,client):
        username = 'user'
        password = 'pro100ton'
        user = add_user_with_permissions(username=username, password=password)
        client.force_login(user)

        response = client.get(get_url(link))
        assert response.status_code == http.HTTPStatus.FORBIDDEN

    @pytest.mark.unit
    @pytest.mark.parametrize('link', TEST_LINK)
    def test_get_api_with_right_perms(self, add_user_with_permissions, get_url, test_server, link,client):
        username = 'user'
        password = 'pro100ton'
        user=add_user_with_permissions(username=username, password=password, permissions=UserMapViewSet.console_permissions)
        client.force_login(user)
        response = client.get(get_url(link))
        assert response.status_code == http.HTTPStatus.OK
