diff --git a/core/tests.py b/core/tests.py deleted file mode 100644 index 10cbc14cc3ad6d17b3f45744b488bf50888cf87f..0000000000000000000000000000000000000000 --- a/core/tests.py +++ /dev/null @@ -1,33 +0,0 @@ -from django.contrib.auth.models import User -from rest_framework.test import APIClient -from rest_framework.test import APITestCase -from rest_framework import status - -from .models.profile import Profile - - -class ProfileTestCase(APITestCase): - - """ - Test suite for Contact - """ - def setUp(self): - self.client = APIClient() - self.data = { - "username": "xjhmlcy", - "email": "xjhmlcy@gmail.com", - "password": "abcdefg123" - } - self.url = "/api/auth/register" - - def test_create_contact(self): - ''' - test ContactViewSet create method - ''' - data = self.data - response = self.client.post(self.url, data) - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(User.objects.count(), 1) - self.assertEqual(Profile.objects.count(), 1) - self.assertEqual(User.objects.get().username, "xjhmlcy") - self.assertEqual(Profile.objects.get().user.email, "xjhmlcy@gmail.com") diff --git a/core/tests/__init__.py b/core/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/core/tests/test_auth.py b/core/tests/test_auth.py new file mode 100644 index 0000000000000000000000000000000000000000..4637c809a422aa68820a53b70fc6ef446f984d51 --- /dev/null +++ b/core/tests/test_auth.py @@ -0,0 +1,130 @@ +from django.contrib.auth.models import User +from rest_framework.test import APITestCase +from rest_framework import status +from knox.models import AuthToken + +from core.models.profile import Profile + + +class AuthTests(APITestCase): + + """ + Test suite for Auth + """ + def add_test_person(self, username, email, password): + user = User.objects.create_user(username=username, email=email, password=password) + return AuthToken.objects.create(user) + + def test_register_default(self): + url = "/api/auth/register" + data = { + "username": "xjhmlcy", + "email": "xjhmlcy@gmail.com", + "password": "abcdefg123" + } + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(User.objects.count(), 1) + self.assertEqual(Profile.objects.count(), 1) + self.assertEqual(User.objects.get().username, data["username"]) + self.assertEqual(Profile.objects.get().user.email, data["email"]) + self.assertFalse(User.objects.get().is_active) + + def test_register_exist_email(self): + url = "/api/auth/register" + data1 = { + "username": "xjhmlcy", + "email": "xjhmlcy@gmail.com", + "password": "abcdefg123" + } + data2 = { + "username": "xjhmlcy_1", + "email": "xjhmlcy@gmail.com", + "password": "abcdefg123" + } + response = self.client.post(url, data1, format='json') + response = self.client.post(url, data2, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(User.objects.count(), 1) + self.assertEqual(Profile.objects.count(), 1) + self.assertEqual(User.objects.get().username, data1["username"]) + self.assertEqual(Profile.objects.get().user.email, data1["email"]) + + def test_register_exist_username(self): + url = "/api/auth/register" + data1 = { + "username": "xjhmlcy", + "email": "xjhmlcy@gmail.com", + "password": "abcdefg123" + } + data2 = { + "username": "xjhmlcy", + "email": "xjhmlcy123@gmail.com", + "password": "abcdefg123" + } + response = self.client.post(url, data1, format='json') + response = self.client.post(url, data2, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(User.objects.count(), 1) + self.assertEqual(Profile.objects.count(), 1) + self.assertEqual(User.objects.get().username, data1["username"]) + self.assertEqual(Profile.objects.get().user.email, data1["email"]) + + def test_login_default_by_username(self): + username = "xjhmlcy" + email = "xjhmlcy123@gmail.com" + password = "abcdefg123" + token, token_key = self.add_test_person(username, email, password) + + url = "/api/auth/login" + data = { + "username": username, + "password": password + } + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertIsNotNone(response.data.get('user', None)) + self.assertEqual(response.data['user'].get('id', None), token.user.id) + self.assertEqual(response.data['user'].get('username', None), token.user.username) + self.assertEqual(response.data['user'].get('email', None), token.user.email) + + def test_login_default_by_email(self): + username = "xjhmlcy" + email = "xjhmlcy123@gmail.com" + password = "abcdefg123" + token, token_key = self.add_test_person(username, email, password) + + url = "/api/auth/login" + data = { + "username": email, + "password": password + } + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertIsNotNone(response.data.get('user', None)) + self.assertEqual(response.data['user'].get('id', None), token.user.id) + self.assertEqual(response.data['user'].get('username', None), token.user.username) + self.assertEqual(response.data['user'].get('email', None), token.user.email) + + def test_login_wrong_password(self): + username = "xjhmlcy" + email = "xjhmlcy123@gmail.com" + password = "abcdefg123" + token, token_key = self.add_test_person(username, email, password) + + url = "/api/auth/login" + data = { + "username": email, + "password": password + "456" + } + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_login_no_username(self): + url = "/api/auth/login" + data = { + "username": '123456', + "password": "12345678" + } + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) diff --git a/core/tests/test_coupon.py b/core/tests/test_coupon.py new file mode 100644 index 0000000000000000000000000000000000000000..ee9ae5688de3794917e97e2bbf5555115b375159 --- /dev/null +++ b/core/tests/test_coupon.py @@ -0,0 +1,38 @@ +from django.contrib.auth.models import User +from rest_framework.test import APITestCase +from rest_framework import status +from knox.models import AuthToken + +from core.models.coupon import Coupon, CouponCategory + + +class CouponTests(APITestCase): + + """ + Test suite for Coupon + """ + def add_test_person(self, username, email, password): + user = User.objects.create_user(username=username, email=email, password=password) + return AuthToken.objects.create(user) + + def add_test_coupon(self): + coupon_category = CouponCategory.objects.create(category='sports', sub_category='sneakers') + coupon = Coupon.objects.create(store='Apple', start_date='2022-12-31', expire_date='2023-12-31') + coupon.categories.add(coupon_category) + coupon.save() + + def test_register_default(self): + username = "xjhmlcy" + email = "xjhmlcy123@gmail.com" + password = "abcdefg123" + token, token_key = self.add_test_person(username, email, password) + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + self.add_test_coupon() + + url = "/api/coupon" + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(Coupon.objects.count(), 1) + self.assertEqual(CouponCategory.objects.count(), 1) + self.assertEqual(response.data[0].get('store', None), 'Apple') diff --git a/core/tests/test_profile.py b/core/tests/test_profile.py new file mode 100644 index 0000000000000000000000000000000000000000..72778d5d61be07e28ff06972ab607469c0eaa54e --- /dev/null +++ b/core/tests/test_profile.py @@ -0,0 +1,91 @@ +from django.contrib.auth.models import User +from rest_framework.test import APITestCase +from rest_framework import status +from knox.models import AuthToken + +from core.models.profile import Profile + + +class ProfileTests(APITestCase): + + """ + Test suite for Profile + """ + def add_test_person(self): + user = User(username='xjhmlcy', email='xjhmlcy@gmail.com', password='abcdefg123') + user.save() + return AuthToken.objects.create(user) + + def test_retrive_profile(self): + token, token_key = self.add_test_person() + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + url = "http://localhost:8000/api/profile" + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertIsNotNone(response.data.get('user', None)) + self.assertEqual(response.data['user'].get('username'), token.user.username) + self.assertEqual(response.data['user'].get('email'), token.user.email) + self.assertEqual(response.data.get('bio'), '') + self.assertEqual(response.data.get('birthday'), None) + self.assertEqual(response.data.get('country'), '') + self.assertEqual(response.data.get('city'), '') + self.assertEqual(response.data.get('affiliation'), '') + self.assertEqual(response.data.get('photo'), 'http://testserver/media/https%3A/static.productionready.io/images/smiley-cyrus.jpg') + + def test_update_profile(self): + token, token_key = self.add_test_person() + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + url = "http://localhost:8000/api/profile" + data = { + 'bio': 'Hello, world!', + 'birthday': '2000-03-09', + 'country': 'CA', + 'city': 'Waterloo', + 'affiliation': 'University of Waterloo' + } + response = self.client.patch(url, data) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertIsNotNone(response.data.get('user', None)) + self.assertEqual(response.data['user'].get('username'), token.user.username) + self.assertEqual(response.data['user'].get('email'), token.user.email) + self.assertEqual(response.data.get('bio'), data['bio']) + self.assertEqual(response.data.get('birthday'), str(data['birthday'])) + self.assertEqual(response.data.get('country'), data['country']) + self.assertEqual(response.data.get('city'), data['city']) + self.assertEqual(response.data.get('affiliation'), data['affiliation']) + self.assertEqual(response.data.get('photo'), 'http://testserver/media/https%3A/static.productionready.io/images/smiley-cyrus.jpg') + + def test_update_username(self): + token, token_key = self.add_test_person() + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + url = "http://localhost:8000/api/profile" + data = { + 'user': { + 'username': 'apple' + } + } + response = self.client.patch(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertIsNotNone(User.objects.get(username=data['user']['username'])) + self.assertIsNotNone(response.data.get('user', None)) + self.assertEqual(response.data['user'].get('username', None), data['user']['username']) + + def test_update_email(self): + token, token_key = self.add_test_person() + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + url = "http://localhost:8000/api/profile" + data = { + 'user': { + 'email': 'apple@gmail.com' + } + } + response = self.client.patch(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertIsNotNone(User.objects.get(email=data['user']['email'])) + self.assertFalse(User.objects.get(email=data['user']['email']).is_active) + self.assertIsNotNone(response.data.get('user', None)) + self.assertEqual(response.data['user'].get('email', None), data['user']['email'])