From 52afabc1e1db91c73e536ac82281f420680c055c Mon Sep 17 00:00:00 2001 From: Chris Li <c58li@uwaterloo.ca> Date: Thu, 9 Mar 2023 02:52:35 -0500 Subject: [PATCH] Add coverage package for test report. --- core/tests/test_auth.py | 39 +++++++++++++++++++++++++ core/tests/test_password.py | 57 +++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 3 files changed, 97 insertions(+) create mode 100644 core/tests/test_password.py diff --git a/core/tests/test_auth.py b/core/tests/test_auth.py index 4637c80..2920c63 100644 --- a/core/tests/test_auth.py +++ b/core/tests/test_auth.py @@ -128,3 +128,42 @@ class AuthTests(APITestCase): } response = self.client.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_validate_token_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) + + url = "/api/auth/validate-token" + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data['valid'], 'true') + + def test_validate_token_invalid(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[:-1] + "1") + token.user.is_active = True + token.user.save() + + url = "/api/auth/validate-token" + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data['valid'], 'false') + + def test_varify_user_and_activate_default(self): + username = "xjhmlcy" + email = "xjhmlcy123@gmail.com" + password = "abcdefg123" + token, token_key = self.add_test_person(username, email, password) + token.user.is_active = False + token.user.save() + + url = f"/api/auth/activate/{token.digest}" + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertTrue(User.objects.get().is_active) \ No newline at end of file diff --git a/core/tests/test_password.py b/core/tests/test_password.py new file mode 100644 index 0000000..64683d0 --- /dev/null +++ b/core/tests/test_password.py @@ -0,0 +1,57 @@ +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 PasswordTests(APITestCase): + + """ + Test suite for Password + """ + 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_password_change_default(self): + username = "xjhmlcy" + email = "xjhmlcy123@gmail.com" + old_password = "abcdefg123" + new_password = "abcdefg123456" + token, token_key = self.add_test_person(username, email, old_password) + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + url = "/api/change-password" + data = { + "old_password": old_password, + "new_password": new_password + } + response = self.client.patch(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + url = "/api/auth/login" + data = { + "username": email, + "password": new_password + } + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_password_change_wrong_old_password(self): + username = "xjhmlcy" + email = "xjhmlcy123@gmail.com" + old_password = "abcdefg123" + new_password = "abcdefg123456" + token, token_key = self.add_test_person(username, email, old_password) + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + url = "/api/change-password" + data = { + "old_password": old_password + "123", + "new_password": new_password + } + response = self.client.patch(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + diff --git a/requirements.txt b/requirements.txt index faa0622..369acab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +coverage==6.3.2 Django==4.1 django_countries==7.5 django_extensions==3.2.1 -- GitLab