2020-12-01 19:25:25 +01:00
|
|
|
from django.test import TestCase
|
2020-12-01 19:02:07 +01:00
|
|
|
from django.urls import reverse
|
|
|
|
from rest_framework import status
|
2020-12-01 19:25:25 +01:00
|
|
|
from rest_framework.test import APITestCase, APIClient
|
|
|
|
|
|
|
|
from smartpicasso.app.user.models import User
|
2020-12-01 23:25:45 +01:00
|
|
|
from smartpicasso.app.user.serializers import UserLoginSerializer
|
|
|
|
from rest_framework import serializers
|
2020-11-30 22:10:22 +01:00
|
|
|
|
2020-12-01 19:02:07 +01:00
|
|
|
|
|
|
|
class UserApiTest(APITestCase):
|
|
|
|
client = APIClient()
|
|
|
|
|
|
|
|
def test_login_when_user_non_exist(self):
|
|
|
|
url = reverse('authenticate')
|
|
|
|
response = self.client.post(url, {'email': 'non-exist', 'password': '123'}, format='json')
|
|
|
|
assert response.status_code == 400
|
|
|
|
|
|
|
|
def test_login_when_user_exist(self):
|
|
|
|
User.objects.create_user(email='test@test.com', password='test')
|
|
|
|
url = reverse('authenticate')
|
|
|
|
response = self.client.post(url, {'email': 'test@test.com', 'password': 'test'}, format='json')
|
|
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
self.assertEqual(response.data['success'], 'True')
|
|
|
|
self.assertIn('token', response.data)
|
2020-12-01 19:25:25 +01:00
|
|
|
|
|
|
|
|
|
|
|
class UserTest(TestCase):
|
|
|
|
|
|
|
|
def test_user_str(self):
|
|
|
|
email = 'test@test.com'
|
|
|
|
user = User.objects.create_user(email=email, password='test')
|
|
|
|
self.assertEqual(str(user), email)
|
2020-12-01 23:25:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
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)
|