This commit is contained in:
61
backend/core/users/tests/test_users.py
Normal file
61
backend/core/users/tests/test_users.py
Normal file
@@ -0,0 +1,61 @@
|
||||
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"
|
||||
Reference in New Issue
Block a user