Skip to content

Commit 36d481e

Browse files
committed
Fix tests
1 parent 74dea49 commit 36d481e

File tree

3 files changed

+26
-31
lines changed

3 files changed

+26
-31
lines changed

drfpasswordless/serializers.py

+9-18
Original file line numberDiff line numberDiff line change
@@ -107,24 +107,21 @@ def alias_type(self):
107107
raise NotImplementedError
108108

109109
def validate(self, attrs):
110-
alias = attrs.get(self.alias_type)
111110

112-
if alias:
111+
msg = _('There was a problem with your request.')
112+
113+
if self.alias_type:
113114
# Get request.user
114115
# Get their specified valid endpoint
115116
# Validate
116117

117-
request = self.context.get("request")
118+
request = self.context["request"]
118119
if request and hasattr(request, "user"):
119120
user = request.user
120-
user = user.refresh_from_db()
121-
122121
if user:
123122
if not user.is_active:
124123
# If valid, return attrs so we can create a token in our logic controller
125124
msg = _('User account is disabled.')
126-
print(msg)
127-
log.debug(msg)
128125

129126
else:
130127
if hasattr(user, self.alias_type):
@@ -136,28 +133,20 @@ def validate(self, attrs):
136133
return attrs
137134
else:
138135
msg = _('This user doesn\'t have an %s.' % self.alias_type)
139-
print(msg)
140-
log.debug(msg)
141136
raise serializers.ValidationError(msg)
142-
else:
143-
msg = _('There was a problem with your request.')
144-
print(msg)
145-
log.debug(msg)
146137
raise serializers.ValidationError(msg)
147138
else:
148139
msg = _('Missing %s.') % self.alias_type
149-
print(msg)
150-
log.debug(msg)
151140
raise serializers.ValidationError(msg)
152141

153142

154-
class EmailVerificationSerializer(AbstractBaseAliasAuthenticationSerializer):
143+
class EmailVerificationSerializer(AbstractBaseAliasVerificationSerializer):
155144
@property
156145
def alias_type(self):
157146
return 'email'
158147

159148

160-
class MobileVerificationSerializer(AbstractBaseAliasAuthenticationSerializer):
149+
class MobileVerificationSerializer(AbstractBaseAliasVerificationSerializer):
161150
@property
162151
def alias_type(self):
163152
return 'mobile'
@@ -232,10 +221,12 @@ class CallbackTokenVerificationSerializer(AbstractBaseCallbackTokenSerializer):
232221

233222
def validate(self, attrs):
234223
try:
224+
print(self.context)
225+
user_id = self.context.get("user_id")
235226
callback_token = attrs.get('token', None)
236227

237228
token = CallbackToken.objects.get(key=callback_token, is_active=True)
238-
user = User.objects.get(pk=self.context.get("user_id"))
229+
user = User.objects.get(pk=user_id)
239230

240231
if token.user == user:
241232
# Check that the token.user is the request.user

drfpasswordless/views.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from rest_framework import parsers, renderers, status
33
from rest_framework.authtoken.models import Token
44
from rest_framework.response import Response
5+
from rest_framework.permissions import IsAuthenticated
56
from rest_framework.views import APIView
67
from .settings import api_settings
78
from .serializers import (EmailAuthSerializer,
@@ -65,10 +66,8 @@ def post(self, request, *args, **kwargs):
6566
else:
6667
status_code = status.HTTP_400_BAD_REQUEST
6768
response_detail = self.failure_response
68-
log.debug("FAIL")
6969
return Response({'detail': response_detail}, status=status_code)
7070
else:
71-
log.debug(serializer.error_messages)
7271
return Response(serializer.error_messages, status=status.HTTP_400_BAD_REQUEST)
7372

7473

@@ -101,6 +100,7 @@ class ObtainMobileCallbackToken(AbstractBaseObtainCallbackToken):
101100

102101

103102
class ObtainEmailVerificationCallbackToken(AbstractBaseObtainCallbackToken):
103+
permission_classes = (IsAuthenticated,)
104104
serializer_class = EmailVerificationSerializer
105105
send_action = send_email_with_callback_token
106106
success_response = "A verification token has been sent to your email."
@@ -117,6 +117,7 @@ class ObtainEmailVerificationCallbackToken(AbstractBaseObtainCallbackToken):
117117

118118

119119
class ObtainMobileVerificationCallbackToken(AbstractBaseObtainCallbackToken):
120+
permission_classes = (IsAuthenticated,)
120121
serializer_class = MobileVerificationSerializer
121122
send_action = send_sms_with_callback_token
122123
success_response = "We texted you a verification code."
@@ -180,7 +181,7 @@ class VerifyAliasFromCallbackToken(APIView):
180181
serializer_class = CallbackTokenVerificationSerializer
181182

182183
def post(self, request, *args, **kwargs):
183-
serializer = self.serializer_class(data=request.data, context={'user_id', self.request.user.id})
184+
serializer = self.serializer_class(data=request.data, context={'user_id': self.request.user.id})
184185
if serializer.is_valid(raise_exception=True):
185186

186187
return Response({'detail': 'Alias verified.'}, status=status.HTTP_200_OK)

tests/test_verification.py

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from rest_framework import status
22
from rest_framework.authtoken.models import Token
33
from rest_framework.test import APITestCase
4-
54
from django.contrib.auth import get_user_model
65
from drfpasswordless.settings import api_settings, DEFAULTS
76
from drfpasswordless.utils import CallbackToken
@@ -25,6 +24,7 @@ def setUp(self):
2524

2625
def test_email_unverified_to_verified_and_back(self):
2726
email = 'aaron@example.com'
27+
email2 = 'aaron2@example.com'
2828
data = {'email': email}
2929

3030
# create a new user
@@ -49,17 +49,18 @@ def test_email_unverified_to_verified_and_back(self):
4949
self.assertEqual(getattr(user, self.email_verified_field_name), True)
5050

5151
# Change email, should result in flag changing to false
52-
setattr(user, self.email_field_name, 'aaron2@example.com')
52+
setattr(user, self.email_field_name, email2)
5353
user.save()
5454
user.refresh_from_db()
5555
self.assertEqual(getattr(user, self.email_verified_field_name), False)
5656

5757
# Verify
58-
callback_response = self.client.post(self.verify_url)
59-
self.assertEqual(callback_response.status_code, status.HTTP_200_OK)
58+
self.client.force_login(user)
59+
verify_response = self.client.post(self.verify_url)
60+
self.assertEqual(verify_response.status_code, status.HTTP_200_OK)
6061

6162
# Refresh User
62-
user = User.objects.get(**{self.email_field_name: email})
63+
user = User.objects.get(**{self.email_field_name: email2})
6364
self.assertNotEqual(user, None)
6465
self.assertNotEqual(getattr(user, self.email_field_name), None)
6566
self.assertEqual(getattr(user, self.email_verified_field_name), False)
@@ -70,7 +71,7 @@ def test_email_unverified_to_verified_and_back(self):
7071
self.assertEqual(verify_callback_response.status_code, status.HTTP_200_OK)
7172

7273
# Refresh User
73-
user = User.objects.get(**{self.email_field_name: email})
74+
user = User.objects.get(**{self.email_field_name: email2})
7475
self.assertNotEqual(user, None)
7576
self.assertNotEqual(getattr(user, self.email_field_name), None)
7677
self.assertEqual(getattr(user, self.email_verified_field_name), True)
@@ -98,6 +99,7 @@ def setUp(self):
9899

99100
def test_mobile_unverified_to_verified_and_back(self):
100101
mobile = '+15551234567'
102+
mobile2 = '+15557654321'
101103
data = {'mobile': mobile}
102104

103105
# create a new user
@@ -128,11 +130,12 @@ def test_mobile_unverified_to_verified_and_back(self):
128130
self.assertEqual(getattr(user, self.mobile_verified_field_name), False)
129131

130132
# Verify
131-
callback_response = self.client.post(self.verify_url)
132-
self.assertEqual(callback_response.status_code, status.HTTP_200_OK)
133+
self.client.force_login(user)
134+
verify_response = self.client.post(self.verify_url)
135+
self.assertEqual(verify_response.status_code, status.HTTP_200_OK)
133136

134137
# Refresh User
135-
user = User.objects.get(**{self.mobile_field_name: mobile})
138+
user = User.objects.get(**{self.mobile_field_name: mobile2})
136139
self.assertNotEqual(user, None)
137140
self.assertNotEqual(getattr(user, self.mobile_field_name), None)
138141
self.assertEqual(getattr(user, self.mobile_verified_field_name), False)
@@ -143,7 +146,7 @@ def test_mobile_unverified_to_verified_and_back(self):
143146
self.assertEqual(verify_callback_response.status_code, status.HTTP_200_OK)
144147

145148
# Refresh User
146-
user = User.objects.get(**{self.mobile_field_name: mobile})
149+
user = User.objects.get(**{self.mobile_field_name: mobile2})
147150
self.assertNotEqual(user, None)
148151
self.assertNotEqual(getattr(user, self.mobile_field_name), None)
149152
self.assertEqual(getattr(user, self.mobile_verified_field_name), True)

0 commit comments

Comments
 (0)