import pytest from django.urls import reverse from rest_framework import status from rest_framework.test import APIClient from django.contrib.auth import get_user_model User = get_user_model() @pytest.mark.django_db class TestUserAPI: def setup_method(self): self.client = APIClient() self.user_data = { "email": "test@primjer.hr", "first_name": "Test", "last_name": "Korisnik", "password": "strongpassword123" } self.user = User.objects.create_user(**self.user_data) def test_get_me_authenticated(self): """Testira dohvat vlastitih podataka (uspjeh).""" self.client.force_authenticate(user=self.user) url = reverse('user-me') # Provjeri naziv u routeru response = self.client.get(url) assert response.status_code == status.HTTP_200_OK assert response.data['email'] == self.user.email assert 'is_serviser' in response.data def test_get_me_unauthenticated(self): """Testira pristup bez prijave (neuspjeh).""" url = reverse('user-me') response = self.client.get(url) # Ovisno o tvojim permission_classes, ovdje bi trebalo biti 401 ili 403 assert response.status_code in [status.HTTP_401_UNAUTHORIZED, status.HTTP_403_FORBIDDEN] def test_user_creation(self): """Testira osnovno stvaranje korisnika u bazi.""" assert User.objects.count() == 1 assert self.user.is_serviser is False def test_update_user_via_api(self): """Testira cjelokupan tok: API -> ViewSet -> Service.""" self.client.force_authenticate(user=self.user) url = reverse('user-detail', kwargs={'pk': self.user.id}) # Provjeri basename new_data = {"first_name": "Inženjer"} # Simuliramo PATCH zahtjev response = self.client.patch(url, new_data) # Osvježi instancu iz baze self.user.refresh_from_db() assert response.status_code == status.HTTP_200_OK assert self.user.first_name == "Inženjer"