from backend.views import NotationView
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.test import APITestCase

from .constants import PASSWORD, USERNAME
from .test_utils import TestUtilsMixin, disable_gestionnaire_permission

VIEW_TYPE = NotationView

class NotationViewTest(APITestCase, TestUtilsMixin):

    basename = 'Notation'

    @classmethod
    def setUpTestData(cls):
        user = get_user_model().objects.create(id=1, username=USERNAME)
        user.set_password(PASSWORD)
        user.save()

    def setUp(self):
        logged_in = self.client.login(username=USERNAME, password=PASSWORD)
        self.assertTrue(logged_in, "l'utilisateur devrait être connecté")

    def tearDown(self):
        self.client.logout()

    def test_list_anonymous(self):
        """ vérifie que l'accès anonyme est interdit """

        self.client.logout()
        url = self._api_url()

        response = self.client.get(url)

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @disable_gestionnaire_permission(VIEW_TYPE)
    def test_list_authenticated(self):
        """ vérifie que l'utilisateur authentifié peut récupérer des décisions """

        url = self._api_url()

        response = self.client.get(url)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
