Skip to content

Commit 9869317

Browse files
39 - Testing User API
1 parent 9737e34 commit 9869317

File tree

5 files changed

+138
-5
lines changed

5 files changed

+138
-5
lines changed

src/accounts/admin.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from django.contrib import admin
22

3-
# Register your models here.
3+
# Register your models here.

src/accounts/api/test_user_api.py

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
from django.urls import reverse
2+
from rest_framework import status
3+
from rest_framework.reverse import reverse as api_reverse
4+
from rest_framework.test import APITestCase
5+
6+
7+
from django.contrib.auth import get_user_model
8+
9+
User = get_user_model()
10+
11+
12+
class UserAPITestCase(APITestCase):
13+
def setUp(self):
14+
user = User.objects.create(username='cfe', email='hello@cfe.com')
15+
user.set_password("yeahhhcfe")
16+
user.save()
17+
18+
def test_created_user(self):
19+
qs = User.objects.filter(username='cfe')
20+
self.assertEqual(qs.count(), 1)
21+
22+
def test_register_user_api_fail(self):
23+
url = api_reverse('api-auth:register')
24+
data = {
25+
'username': 'cfe.doe',
26+
'email': 'cfe.doe@gmail.com',
27+
'password': 'learncode',
28+
}
29+
response = self.client.post(url, data, format='json')
30+
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) # 400
31+
self.assertEqual(response.data['password2'][0], 'This field is required.')
32+
33+
def test_register_user_api(self):
34+
url = api_reverse('api-auth:register')
35+
data = {
36+
'username': 'cfe.doe',
37+
'email': 'cfe.doe@gmail.com',
38+
'password': 'learncode',
39+
'password2': 'learncode'
40+
}
41+
response = self.client.post(url, data, format='json')
42+
self.assertEqual(response.status_code, status.HTTP_201_CREATED) # 400
43+
token_len = len(response.data.get("token", 0))
44+
self.assertGreater(token_len, 0)
45+
46+
47+
def test_login_user_api(self):
48+
url = api_reverse('api-auth:login')
49+
data = {
50+
'username': 'cfe',
51+
'password': 'yeahhhcfe',
52+
}
53+
response = self.client.post(url, data, format='json')
54+
self.assertEqual(response.status_code, status.HTTP_200_OK) # 400
55+
token = response.data.get("token", 0)
56+
token_len = 0
57+
if token != 0:
58+
token_len = len(token)
59+
self.assertGreater(token_len, 0)
60+
61+
62+
63+
def test_login_user_api_fail(self):
64+
url = api_reverse('api-auth:login')
65+
data = {
66+
'username': 'cfe.abc', # does not exist
67+
'password': 'yeahhhcfe',
68+
}
69+
response = self.client.post(url, data, format='json')
70+
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) # 400
71+
token = response.data.get("token", 0)
72+
token_len = 0
73+
if token != 0:
74+
token_len = len(token)
75+
self.assertEqual(token_len, 0)
76+
77+
def test_token_login_api(self):
78+
url = api_reverse('api-auth:login')
79+
data = {
80+
'username': 'cfe',
81+
'password': 'yeahhhcfe',
82+
}
83+
response = self.client.post(url, data, format='json')
84+
self.assertEqual(response.status_code, status.HTTP_200_OK) # 400
85+
token = response.data.get("token", None)
86+
self.client.credentials(HTTP_AUTHORIZATION='JWT ' + token)
87+
response2 = self.client.post(url, data, format='json')
88+
self.assertEqual(response2.status_code, status.HTTP_403_FORBIDDEN)
89+
90+
91+
def test_token_register_api(self):
92+
url = api_reverse('api-auth:login')
93+
data = {
94+
'username': 'cfe',
95+
'password': 'yeahhhcfe',
96+
}
97+
response = self.client.post(url, data, format='json')
98+
self.assertEqual(response.status_code, status.HTTP_200_OK) # 400
99+
token = response.data.get("token", None)
100+
self.client.credentials(HTTP_AUTHORIZATION='JWT ' + token)
101+
102+
url2 = api_reverse('api-auth:register')
103+
data2 = {
104+
'username': 'cfe.doe',
105+
'email': 'cfe.doe@gmail.com',
106+
'password': 'learncode',
107+
'password2': 'learncode'
108+
}
109+
response = self.client.post(url2, data2, format='json')
110+
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) # 403
111+
112+
113+
114+
115+
116+

src/accounts/api/urls.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
from .views import AuthAPIView, RegisterAPIView
88
urlpatterns = [
9-
url(r'^$', AuthAPIView.as_view()),
10-
url(r'^register/$', RegisterAPIView.as_view()),
9+
url(r'^$', AuthAPIView.as_view(), name='login'),
10+
url(r'^register/$', RegisterAPIView.as_view(), name='register'),
1111
url(r'^jwt/$', obtain_jwt_token),
1212
url(r'^jwt/refresh/$', refresh_jwt_token),
1313
]

src/cfeapi/urls.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
urlpatterns = [
2828
url(r'^admin/', admin.site.urls),
29-
url(r'^api/auth/', include('accounts.api.urls')),
29+
url(r'^api/auth/', include('accounts.api.urls', namespace='api-auth')),
3030
url(r'^api/user/', include('accounts.api.user.urls', namespace='api-user')),
3131
url(r'^api/status/', include('status.api.urls', namespace='api-status')),
3232
url(r'^api/updates/', include('updates.api.urls')),

src/status/tests.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
11
from django.test import TestCase
22

3-
# Create your tests here.
3+
from django.contrib.auth import get_user_model
4+
5+
from .models import Status
6+
User = get_user_model()
7+
8+
9+
class StatusTestCase(TestCase):
10+
def setUp(self):
11+
user = User.objects.create(username='cfe', email='hello@cfe.com')
12+
user.set_password("yeahhhcfe")
13+
user.save()
14+
15+
def test_creating_status(self):
16+
user = User.objects.get(username='cfe')
17+
obj = Status.objects.create(user=user, content='Some cool new content')
18+
self.assertEqual(obj.id, 1)
19+
qs = Status.objects.all()
20+
self.assertEqual(qs.count(), 1)

0 commit comments

Comments
 (0)