Files
004.erp.generic/backend/core/users/tests/test_users.py
mariomitte 5d39e048ba
Some checks failed
ERP CI Pipeline / test (push) Has been cancelled
prvi kod za live uporabu
2026-07-09 21:21:17 +02:00

61 lines
2.1 KiB
Python

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"