import pytest
from rest_framework import status
from rest_framework.reverse import reverse


@pytest.mark.unit
@pytest.mark.django_db
class TestAuth:

    @pytest.fixture(autouse=True)
    def setup_tests(self, django_user_model):
        self.admin_user = django_user_model.objects.get(username='admin')

    def test_login_with_active_user(self, api_client):
        url = reverse('api_login')

        credentials = {
            'username': 'admin',
            'password': 'nimda'
        }
        response = api_client.post(url, data=credentials)
        assert response.status_code == status.HTTP_200_OK

        credentials = {
            'username': 'admin',
            'password': 'invalid_password'
        }

        response = api_client.post(url, data=credentials)
        assert response.status_code == status.HTTP_400_BAD_REQUEST

    def test_login_with_non_active_user(self, api_client):
        url = reverse('api_login')
        self.admin_user.is_active = False
        self.admin_user.save()

        credentials = {
            'username': 'admin',
            'password': 'nimda'
        }
        response = api_client.post(url, data=credentials)
        assert response.status_code == status.HTTP_400_BAD_REQUEST
