SMART-42 added tests for retrieve user profile endpoint
This commit is contained in:
parent
dae0990207
commit
f3e9c33034
Binary file not shown.
@ -1,29 +1,63 @@
|
|||||||
|
"""
|
||||||
|
@author: p.dolata
|
||||||
|
"""
|
||||||
|
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.test import APITestCase, APIClient
|
from rest_framework.test import APITestCase, APIClient
|
||||||
|
|
||||||
from smartpicasso.app.user.models import User, UserManager
|
from smartpicasso.app.user.models import User
|
||||||
from smartpicasso.app.user.serializers import UserLoginSerializer, UserRegistrationSerializer
|
from smartpicasso.app.user.serializers import UserLoginSerializer, UserRegistrationSerializer
|
||||||
|
from smartpicasso.app.user_profile.models import UserProfile
|
||||||
|
|
||||||
|
|
||||||
class UserApiTest(APITestCase):
|
class UserApiTest(APITestCase):
|
||||||
client = APIClient()
|
client = APIClient()
|
||||||
|
authenticate_url = reverse('authenticate')
|
||||||
|
register_url = reverse('register')
|
||||||
|
profile = {"username": 'test', "first_name": "test", "last_name": "test"}
|
||||||
|
|
||||||
def test_login_when_user_non_exist(self):
|
def test_login_when_user_non_exist(self):
|
||||||
url = reverse('authenticate')
|
response = self.client.post(self.authenticate_url, {'email': 'non-exist', 'password': '123'}, format='json')
|
||||||
response = self.client.post(url, {'email': 'non-exist', 'password': '123'}, format='json')
|
|
||||||
assert response.status_code == 400
|
assert response.status_code == 400
|
||||||
|
|
||||||
def test_login_when_user_exist(self):
|
def test_login_when_user_exist(self):
|
||||||
User.objects.create_user(email='test@test.com', password='test')
|
User.objects.create_user(email='test@test.com', password='test')
|
||||||
url = reverse('authenticate')
|
response = self.client.post(self.authenticate_url, {'email': 'test@test.com', 'password': 'test'},
|
||||||
response = self.client.post(url, {'email': 'test@test.com', 'password': 'test'}, format='json')
|
format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
self.assertEqual(response.data['success'], 'True')
|
self.assertEqual(response.data['success'], 'True')
|
||||||
self.assertIn('token', response.data)
|
self.assertIn('token', response.data)
|
||||||
|
|
||||||
|
def test_register_when_user_non_exist(self):
|
||||||
|
response = self.client.post(self.register_url, {'email': 'test@test.com', 'password': 'test',
|
||||||
|
'profile': self.profile}, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
self.assertEqual(response.data['success'], 'True')
|
||||||
|
|
||||||
|
def test_register_when_email_exist(self):
|
||||||
|
User.objects.create_user(email='test@test.com', password='test')
|
||||||
|
response = self.client.post(self.register_url, {'email': 'test@test.com', 'password': 'test',
|
||||||
|
'profile': self.profile}, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||||
|
self.assertIn('email', response.data)
|
||||||
|
|
||||||
|
def test_register_when_username_exist(self):
|
||||||
|
user = User.objects.create_user(email='test2@test.com', password='test')
|
||||||
|
UserProfile.objects.create(
|
||||||
|
user=user,
|
||||||
|
username=self.profile['username'],
|
||||||
|
first_name=self.profile['first_name'],
|
||||||
|
last_name=self.profile['last_name']
|
||||||
|
)
|
||||||
|
response = self.client.post(self.register_url, {'email': 'test@test.com', 'password': 'test',
|
||||||
|
'profile': self.profile}, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||||
|
self.assertIn('profile', response.data)
|
||||||
|
self.assertIn('username', response.data['profile'])
|
||||||
|
|
||||||
|
|
||||||
class UserTest(TestCase):
|
class UserTest(TestCase):
|
||||||
|
|
||||||
@ -52,7 +86,7 @@ class UserRegistrationSerializerTest(TestCase):
|
|||||||
serializer = UserRegistrationSerializer()
|
serializer = UserRegistrationSerializer()
|
||||||
|
|
||||||
def test_create(self):
|
def test_create(self):
|
||||||
profile = {"first_name": "test", "last_name": "test"}
|
profile = {"username": 'test', "first_name": "test", "last_name": "test"}
|
||||||
user = self.serializer.create({"email": "test@test.com", "password": "test", "profile": profile})
|
user = self.serializer.create({"email": "test@test.com", "password": "test", "profile": profile})
|
||||||
|
|
||||||
self.assertNotEqual(user, None)
|
self.assertNotEqual(user, None)
|
||||||
|
Binary file not shown.
@ -17,6 +17,9 @@ class UserProfile(models.Model):
|
|||||||
first_name = models.CharField(max_length=50, unique=False)
|
first_name = models.CharField(max_length=50, unique=False)
|
||||||
last_name = models.CharField(max_length=50, unique=False)
|
last_name = models.CharField(max_length=50, unique=False)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return str(self.username) + ' - ' + str(self.first_name) + ' ' + str(self.last_name)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""
|
"""
|
||||||
Meta to se table name in database
|
Meta to se table name in database
|
||||||
|
@ -1,3 +1,65 @@
|
|||||||
from django.test import TestCase
|
"""
|
||||||
|
@author: p.dolata
|
||||||
|
"""
|
||||||
|
|
||||||
# Create your tests here.
|
from django.test import TestCase
|
||||||
|
from django.urls import reverse
|
||||||
|
from rest_framework import status
|
||||||
|
from rest_framework.test import APITestCase, APIClient
|
||||||
|
|
||||||
|
from smartpicasso.app.user.models import User
|
||||||
|
from smartpicasso.app.user_profile.models import UserProfile
|
||||||
|
|
||||||
|
|
||||||
|
class UserProfileApiTest(APITestCase):
|
||||||
|
client = APIClient()
|
||||||
|
profile_url = reverse('profile')
|
||||||
|
authenticate_url = reverse('authenticate')
|
||||||
|
profile = {"username": 'test_user', "first_name": "first", "last_name": "last"}
|
||||||
|
|
||||||
|
def test_get_profile_without_auth(self):
|
||||||
|
response = self.client.get(self.profile_url, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||||
|
|
||||||
|
def test_get_profile_with_invalid_token(self):
|
||||||
|
self.client.force_authenticate(user=None)
|
||||||
|
response = self.client.get(self.profile_url, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||||
|
|
||||||
|
def test_get_profile_when_user_without_profile(self):
|
||||||
|
user = User.objects.create_user(email='test@test.com', password='test')
|
||||||
|
self.client.force_authenticate(user=user)
|
||||||
|
response = self.client.get(self.profile_url, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||||
|
self.assertEqual(response.data['success'], 'False')
|
||||||
|
|
||||||
|
def test_get_profile(self):
|
||||||
|
user = User.objects.create_user(email='test@test.com', password='test')
|
||||||
|
UserProfile.objects.create(
|
||||||
|
user=user,
|
||||||
|
username=self.profile['username'],
|
||||||
|
first_name=self.profile['first_name'],
|
||||||
|
last_name=self.profile['last_name']
|
||||||
|
)
|
||||||
|
self.client.force_authenticate(user=user)
|
||||||
|
response = self.client.get(self.profile_url, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
self.assertEqual(response.data['success'], 'True')
|
||||||
|
profile = response.data['profile']
|
||||||
|
self.assertEqual(profile['username'], self.profile['username'])
|
||||||
|
self.assertEqual(profile['first_name'], self.profile['first_name'])
|
||||||
|
self.assertEqual(profile['last_name'], self.profile['last_name'])
|
||||||
|
|
||||||
|
|
||||||
|
class UserProfileTest(TestCase):
|
||||||
|
profile = {"username": 'test_user', "first_name": "first", "last_name": "last"}
|
||||||
|
|
||||||
|
def test_user_profile_str(self):
|
||||||
|
user = User.objects.create_user(email='test@test.com', password='test')
|
||||||
|
user_profile = UserProfile.objects.create(
|
||||||
|
user=user,
|
||||||
|
username=self.profile['username'],
|
||||||
|
first_name=self.profile['first_name'],
|
||||||
|
last_name=self.profile['last_name']
|
||||||
|
)
|
||||||
|
self.assertEqual(str(user_profile), 'test_user - first last')
|
||||||
|
@ -13,17 +13,17 @@ from smartpicasso.app.user_profile.models import UserProfile
|
|||||||
|
|
||||||
class UserProfileView(RetrieveAPIView):
|
class UserProfileView(RetrieveAPIView):
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
authentication_classes = JSONWebTokenAuthentication
|
authentication_class = JSONWebTokenAuthentication
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
try:
|
try:
|
||||||
user_profile = UserProfile.objects.get(user=request.user)
|
user_profile = UserProfile.objects.get(user=request.user)
|
||||||
status_code = status.HTTP_200_OK
|
status_code = status.HTTP_200_OK
|
||||||
response = {
|
response = {
|
||||||
'success': 'true',
|
'success': 'True',
|
||||||
'status_code': status_code,
|
'status_code': status_code,
|
||||||
'message': 'User profile fetched successfully',
|
'message': 'User profile fetched successfully',
|
||||||
'data': {
|
'profile': {
|
||||||
'username': user_profile.username,
|
'username': user_profile.username,
|
||||||
'first_name': user_profile.first_name,
|
'first_name': user_profile.first_name,
|
||||||
'last_name': user_profile.last_name
|
'last_name': user_profile.last_name
|
||||||
@ -32,9 +32,9 @@ class UserProfileView(RetrieveAPIView):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
status_code = status.HTTP_400_BAD_REQUEST
|
status_code = status.HTTP_400_BAD_REQUEST
|
||||||
response = {
|
response = {
|
||||||
'success': 'false',
|
'success': 'False',
|
||||||
'status_code': status_code,
|
'status_code': status_code,
|
||||||
'message': 'User does not exist',
|
'message': 'User profile does not exist',
|
||||||
'error': str(e)
|
'error': str(e)
|
||||||
}
|
}
|
||||||
return Response(response, status=status_code)
|
return Response(response, status=status_code)
|
||||||
|
Loading…
Reference in New Issue
Block a user