SMART-2 Merge pull request 'backend' (#2) from backend into develop
Reviewed-on: #2
This commit is contained in:
commit
518945c78d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -20,7 +20,7 @@ class UserSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
fields = ('first_name', 'last_name', 'phone_number')
|
||||
fields = ('first_name', 'last_name')
|
||||
|
||||
|
||||
class UserRegistrationSerializer(serializers.ModelSerializer):
|
||||
@ -40,8 +40,7 @@ class UserRegistrationSerializer(serializers.ModelSerializer):
|
||||
UserProfile.objects.create(
|
||||
user=user,
|
||||
first_name=profile_data['first_name'],
|
||||
last_name=profile_data['last_name'],
|
||||
phone_number=profile_data['phone_number'],
|
||||
last_name=profile_data['last_name']
|
||||
)
|
||||
return user
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
from rest_framework import serializers
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APITestCase, APIClient
|
||||
|
||||
from smartpicasso.app.user.models import User
|
||||
from smartpicasso.app.user.models import User, UserManager
|
||||
from smartpicasso.app.user.serializers import UserLoginSerializer, UserRegistrationSerializer
|
||||
|
||||
|
||||
class UserApiTest(APITestCase):
|
||||
@ -29,3 +31,57 @@ class UserTest(TestCase):
|
||||
email = 'test@test.com'
|
||||
user = User.objects.create_user(email=email, password='test')
|
||||
self.assertEqual(str(user), email)
|
||||
|
||||
|
||||
class UserLoginSerializerTest(TestCase):
|
||||
serializer = UserLoginSerializer()
|
||||
|
||||
def test_validate_wrong_credentials(self):
|
||||
data = {'email': 'test@test.com', 'password': '123'}
|
||||
self.assertRaises(serializers.ValidationError, self.serializer.validate, data)
|
||||
|
||||
def test_validate_success(self):
|
||||
User.objects.create_user(email='test@test.com', password='test')
|
||||
data = {'email': 'test@test.com', 'password': 'test'}
|
||||
result = self.serializer.validate(data)
|
||||
self.assertEqual(result['email'], 'test@test.com')
|
||||
self.assertIn('token', result)
|
||||
|
||||
|
||||
class UserRegistrationSerializerTest(TestCase):
|
||||
serializer = UserRegistrationSerializer()
|
||||
|
||||
def test_create(self):
|
||||
profile = {"first_name": "test", "last_name": "test"}
|
||||
user = self.serializer.create({"email": "test@test.com", "password": "test", "profile": profile})
|
||||
|
||||
self.assertNotEqual(user, None)
|
||||
self.assertEqual(user.email, "test@test.com")
|
||||
|
||||
|
||||
class UserManagerTest(TestCase):
|
||||
manager = User.objects
|
||||
|
||||
def test_create_user_none_email(self):
|
||||
email = None
|
||||
self.assertRaises(ValueError, self.manager.create_user, email)
|
||||
|
||||
def test_create_user(self):
|
||||
user = self.manager.create_user("test@test.pl", "test")
|
||||
self.assertNotEqual(user, None)
|
||||
self.assertEqual(user.email, "test@test.pl")
|
||||
self.assertEqual(user.is_active, True)
|
||||
self.assertEqual(user.is_superuser, False)
|
||||
self.assertEqual(user.is_staff, False)
|
||||
|
||||
def test_create_superuser_none_password(self):
|
||||
password = None
|
||||
self.assertRaises(TypeError, self.manager.create_superuser, "super@test.pl", password)
|
||||
|
||||
def test_create_superuser(self):
|
||||
user = self.manager.create_superuser("super@test.pl", "test")
|
||||
self.assertNotEqual(user, None)
|
||||
self.assertEqual(user.email, "super@test.pl")
|
||||
self.assertEqual(user.is_active, True)
|
||||
self.assertEqual(user.is_superuser, True)
|
||||
self.assertEqual(user.is_staff, True)
|
||||
|
@ -4,8 +4,9 @@
|
||||
|
||||
from django.conf.urls import url
|
||||
|
||||
from smartpicasso.app.user.views import UserLoginView
|
||||
from smartpicasso.app.user.views import UserLoginView, UserRegistrationView
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^authenticate', UserLoginView.as_view(), name='authenticate')
|
||||
url(r'^authenticate', UserLoginView.as_view(), name='authenticate'),
|
||||
url(r'^register', UserRegistrationView.as_view(), name='register')
|
||||
]
|
||||
|
@ -1,9 +1,9 @@
|
||||
from rest_framework import status
|
||||
from rest_framework.generics import RetrieveAPIView
|
||||
from rest_framework.generics import RetrieveAPIView, CreateAPIView
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.response import Response
|
||||
|
||||
from smartpicasso.app.user.serializers import UserLoginSerializer
|
||||
from smartpicasso.app.user.serializers import UserLoginSerializer, UserRegistrationSerializer
|
||||
|
||||
|
||||
class UserLoginView(RetrieveAPIView):
|
||||
@ -25,3 +25,24 @@ class UserLoginView(RetrieveAPIView):
|
||||
status_code = status.HTTP_200_OK
|
||||
|
||||
return Response(response, status=status_code)
|
||||
|
||||
|
||||
class UserRegistrationView(CreateAPIView):
|
||||
"""
|
||||
View for user registration
|
||||
"""
|
||||
permission_classes = (AllowAny,)
|
||||
serializer_class = UserRegistrationSerializer
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save()
|
||||
status_code = status.HTTP_201_CREATED
|
||||
response = {
|
||||
'success': 'True',
|
||||
'status_code': status_code,
|
||||
'message': 'User registered successfully'
|
||||
}
|
||||
|
||||
return Response(response, status=status_code)
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.1.3 on 2020-12-01 21:54
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
atomic = False
|
||||
|
||||
dependencies = [
|
||||
('user_profile', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='userprofile',
|
||||
name='phone_number',
|
||||
),
|
||||
]
|
Binary file not shown.
Binary file not shown.
@ -15,7 +15,6 @@ class UserProfile(models.Model):
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
|
||||
first_name = models.CharField(max_length=50, unique=False)
|
||||
last_name = models.CharField(max_length=50, unique=False)
|
||||
phone_number = models.CharField(max_length=10, unique=False, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user