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.serializers import UserLoginSerializer from rest_framework import serializers 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) 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) 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)