From d8ddeedf8a6ea4bd00e13590c9e8babd44ab0f62 Mon Sep 17 00:00:00 2001 From: musanaeem Date: Thu, 3 Nov 2022 15:08:12 +0500 Subject: [PATCH 1/3] Added Django Tests for register,login and bioview --- BioForm/api/tests.py | 3 -- BioForm/api/tests/__init__.py | 0 BioForm/api/tests/test_setup.py | 29 +++++++++++++++++++ BioForm/api/tests/test_urls.py | 22 ++++++++++++++ BioForm/api/tests/test_views.py | 51 +++++++++++++++++++++++++++++++++ BioForm/api/urls.py | 14 ++++----- BioForm/api/views.py | 8 ++++++ 7 files changed, 116 insertions(+), 11 deletions(-) delete mode 100644 BioForm/api/tests.py create mode 100644 BioForm/api/tests/__init__.py create mode 100644 BioForm/api/tests/test_setup.py create mode 100644 BioForm/api/tests/test_urls.py create mode 100644 BioForm/api/tests/test_views.py diff --git a/BioForm/api/tests.py b/BioForm/api/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/BioForm/api/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/BioForm/api/tests/__init__.py b/BioForm/api/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BioForm/api/tests/test_setup.py b/BioForm/api/tests/test_setup.py new file mode 100644 index 0000000..160efe5 --- /dev/null +++ b/BioForm/api/tests/test_setup.py @@ -0,0 +1,29 @@ +from rest_framework.test import APITestCase +from django.urls import reverse + +class TestSetup(APITestCase): + + def setUp(self): + self.register_url = reverse('register-api') + self.login_url = reverse('login-api') + self.bio_url = reverse('api-bio-view') + + self.user_data = { + 'email':"musa.naeem@arbisoft.com", + 'password':"kaneki", + 'username':"musanaeem", + 'date_of_birth': "1996-11-12", + } + + self.bio_data = { + 'name' : "Musa Naeem", + 'address' : "random Address", + 'description' : "description" + } + + return super().setUp() + + def tearDown(self): + + + return super().tearDown() \ No newline at end of file diff --git a/BioForm/api/tests/test_urls.py b/BioForm/api/tests/test_urls.py new file mode 100644 index 0000000..18beace --- /dev/null +++ b/BioForm/api/tests/test_urls.py @@ -0,0 +1,22 @@ +from django.test import SimpleTestCase +from django.urls import resolve, reverse +from .. import views + + +class TestUrls(SimpleTestCase): + + def test_login_url_is_resolved(self): + url = reverse('login-api') + self.assertEquals(resolve(url).func.view_class, views.LoginView) + + def test_register_url_is_resolved(self): + url = reverse('register-api') + self.assertEquals(resolve(url).func.view_class, views.RegisterView) + + def test_bio_url_is_resolved(self): + url = reverse('api-bio-view') + self.assertEquals(resolve(url).func.view_class, views.BioView) + + def test_blog_url_is_resolved(self): + url = reverse('api:apiblogview-list') + self.assertEquals(resolve(url).func.__name__, views.BlogViewSet.__name__) \ No newline at end of file diff --git a/BioForm/api/tests/test_views.py b/BioForm/api/tests/test_views.py new file mode 100644 index 0000000..daeb0e7 --- /dev/null +++ b/BioForm/api/tests/test_views.py @@ -0,0 +1,51 @@ +from .test_setup import TestSetup + +class TestViews(TestSetup): + + def test_user_can_be_registered(self): + response = self.client.post(self.register_url, self.user_data, format='json') + + self.assertEqual(response.data['email'], self.user_data['email']) + self.assertEqual(response.data['username'], self.user_data['username']) + self.assertEqual(response.data['date_of_birth'], self.user_data['date_of_birth']) + self.assertEqual(response.status_code, 200) + + def test_user_cannot_login_without_data(self): + response = self.client.post(self.login_url) + + self.assertEqual(response.status_code, 400) + + def test_user_can_login(self): + self.client.post(self.register_url, self.user_data, format='json') + response = self.client.post(self.login_url, self.user_data, format='json') + + self.assertEqual(response.status_code, 200) + + def authentication_user_and_add_bio(self): + self.test_user_can_login() + self.client.post(self.bio_url, self.bio_data, format='json') + + def test_bio_GET(self): + self.authentication_user_and_add_bio() + + response = self.client.get(self.bio_url) + + self.assertIn(response.status_code, [200, 404]) + self.assertEqual(response.data['name'], self.bio_data['name']) + self.assertEqual(response.data['address'], self.bio_data['address']) + self.assertEqual(response.data['description'], self.bio_data['description']) + + def test_bio_PATCH(self): + self.authentication_user_and_add_bio() + + response = self.client.patch(self.bio_url, {'name': "Musa Naeem Sahaf"}) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data['name'], "Musa Naeem Sahaf") + + + def test_bio_DELETE(self): + self.authentication_user_and_add_bio() + + response = self.client.delete(self.bio_url) + self.assertEqual(response.data['message'], "Deletion Successful!") \ No newline at end of file diff --git a/BioForm/api/urls.py b/BioForm/api/urls.py index fc9c3a8..1055844 100644 --- a/BioForm/api/urls.py +++ b/BioForm/api/urls.py @@ -1,19 +1,17 @@ -from django.urls import path +from django.urls import path, include from rest_framework.routers import DefaultRouter from . import views from .views import BlogViewSet -app_name = 'api' - router = DefaultRouter() -router.register('api/blog',BlogViewSet, basename='api-blog-view') +router.register(r'api/blog',BlogViewSet, basename='apiblogview') urlpatterns = [ - path('api/login/', views.LoginView.as_view()), - path('api/register/', views.RegisterView.as_view()), - path('api/logout/', views.LogoutView.as_view()), + path('api/login/', views.LoginView.as_view(), name='login-api'), + path('api/register/', views.RegisterView.as_view(), name='register-api'), + path('api/logout/', views.LogoutView.as_view(), name='logout-api'), path('api/bio/', views.BioView.as_view(), name='api-bio-view'), + path('', include((router.urls, 'api')), name='blogview'), ] -urlpatterns += router.urls diff --git a/BioForm/api/views.py b/BioForm/api/views.py index 5cfb41d..055fabe 100644 --- a/BioForm/api/views.py +++ b/BioForm/api/views.py @@ -21,6 +21,14 @@ def post(self, request): class LoginView(APIView): def post(self, request): + + if not request.data.get('email') or not request.data.get('password'): + return Response( + {'detail': 'Data not sent!', + 'status': '400'}, + status=status.HTTP_400_BAD_REQUEST + ) + email = request.data['email'] password = request.data['password'] From a524f28fe7fdd32a76fd4c1d0d02e301bd735205 Mon Sep 17 00:00:00 2001 From: musanaeem Date: Thu, 3 Nov 2022 15:12:39 +0500 Subject: [PATCH 2/3] added unauthenticated test --- BioForm/api/tests/test_views.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/BioForm/api/tests/test_views.py b/BioForm/api/tests/test_views.py index daeb0e7..a8d9593 100644 --- a/BioForm/api/tests/test_views.py +++ b/BioForm/api/tests/test_views.py @@ -25,6 +25,11 @@ def authentication_user_and_add_bio(self): self.test_user_can_login() self.client.post(self.bio_url, self.bio_data, format='json') + def test_bio_unauthenticated(self): + response = self.client.get(self.bio_url) + + self.assertEqual(response.status_code, 403) + def test_bio_GET(self): self.authentication_user_and_add_bio() From 5e5e164ecd69ffb8377cfc69d814fba9f8294bcc Mon Sep 17 00:00:00 2001 From: musanaeem Date: Thu, 3 Nov 2022 15:16:45 +0500 Subject: [PATCH 3/3] fixed blogview url name --- BioForm/api/tests/test_urls.py | 2 +- BioForm/api/urls.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/BioForm/api/tests/test_urls.py b/BioForm/api/tests/test_urls.py index 18beace..6d08a15 100644 --- a/BioForm/api/tests/test_urls.py +++ b/BioForm/api/tests/test_urls.py @@ -18,5 +18,5 @@ def test_bio_url_is_resolved(self): self.assertEquals(resolve(url).func.view_class, views.BioView) def test_blog_url_is_resolved(self): - url = reverse('api:apiblogview-list') + url = reverse('api:api-blog-view-list') self.assertEquals(resolve(url).func.__name__, views.BlogViewSet.__name__) \ No newline at end of file diff --git a/BioForm/api/urls.py b/BioForm/api/urls.py index 1055844..0cdfd87 100644 --- a/BioForm/api/urls.py +++ b/BioForm/api/urls.py @@ -4,7 +4,7 @@ from .views import BlogViewSet router = DefaultRouter() -router.register(r'api/blog',BlogViewSet, basename='apiblogview') +router.register(r'api/blog',BlogViewSet, basename='api-blog-view') urlpatterns = [ path('api/login/', views.LoginView.as_view(), name='login-api'), @@ -12,6 +12,6 @@ path('api/logout/', views.LogoutView.as_view(), name='logout-api'), path('api/bio/', views.BioView.as_view(), name='api-bio-view'), - path('', include((router.urls, 'api')), name='blogview'), + path('', include((router.urls, 'api'))), ]