veirfy email view and test

This commit is contained in:
Mateusz Sikora 2014-10-01 16:34:51 +02:00
parent de1fb3d81f
commit 08fcca9b48
3 changed files with 27 additions and 8 deletions

View File

@ -5,8 +5,7 @@ from .views import Register, VerifyEmail
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^$', Register.as_view(), name='rest_register'), url(r'^$', Register.as_view(), name='rest_register'),
url(r'^verify-email/(?P<activation_key>\w+)/$', VerifyEmail.as_view(), url(r'^verify-email/$', VerifyEmail.as_view(), name='verify_email'),
name='verify_email'),
url(r'^account-email-verification-sent/$', TemplateView.as_view(), url(r'^account-email-verification-sent/$', TemplateView.as_view(),
name='account_email_verification_sent'), name='account_email_verification_sent'),

View File

@ -3,7 +3,7 @@ from rest_framework.response import Response
from rest_framework.permissions import AllowAny from rest_framework.permissions import AllowAny
from rest_framework import status from rest_framework import status
from allauth.account.views import SignupView from allauth.account.views import SignupView, ConfirmEmailView
from allauth.account.utils import complete_signup from allauth.account.utils import complete_signup
from allauth.account import app_settings from allauth.account import app_settings
@ -40,5 +40,12 @@ class Register(APIView, SignupView):
return Response(self.form.errors, status=status.HTTP_400_BAD_REQUEST) return Response(self.form.errors, status=status.HTTP_400_BAD_REQUEST)
class VerifyEmail(APIView): class VerifyEmail(APIView, ConfirmEmailView):
pass
permission_classes = (AllowAny,)
def post(self, request, *args, **kwargs):
self.kwargs['key'] = self.request.DATA.get('key', '')
confirmation = self.get_object()
confirmation.confirm(self.request)
return Response({'message': 'ok'}, status=status.HTTP_200_OK)

View File

@ -153,6 +153,7 @@ class APITestCase1(TestCase, BaseAPITestCase):
self.register_url = reverse('rest_register') self.register_url = reverse('rest_register')
self.password_reset_url = reverse('rest_password_reset') self.password_reset_url = reverse('rest_password_reset')
self.user_url = reverse('rest_user_details') self.user_url = reverse('rest_user_details')
self.veirfy_email_url = reverse('verify_email')
setattr(settings, 'REST_PROFILE_MODULE', self.PROFILE_MODEL) setattr(settings, 'REST_PROFILE_MODULE', self.PROFILE_MODEL)
self.user_profile_model = None self.user_profile_model = None
@ -323,9 +324,11 @@ class APITestCase1(TestCase, BaseAPITestCase):
mail_count = len(mail.outbox) mail_count = len(mail.outbox)
# test empty payload # test empty payload
self.post(self.register_url, data={}, status_code=400) self.post(self.register_url, data={},
status_code=status.HTTP_400_BAD_REQUEST)
self.post(self.register_url, data=self.REGISTRATION_DATA_WITH_EMAIL, status_code=201) self.post(self.register_url, data=self.REGISTRATION_DATA_WITH_EMAIL,
status_code=status.HTTP_201_BAD_REQUEST)
self.assertEqual(User.objects.all().count(), user_count + 1) self.assertEqual(User.objects.all().count(), user_count + 1)
self.assertEqual(len(mail.outbox), mail_count + 1) self.assertEqual(len(mail.outbox), mail_count + 1)
new_user = get_user_model().objects.latest('id') new_user = get_user_model().objects.latest('id')
@ -336,4 +339,14 @@ class APITestCase1(TestCase, BaseAPITestCase):
"username": self.USERNAME, "username": self.USERNAME,
"password": self.PASS "password": self.PASS
} }
self.post(self.login_url, data=payload, status=status.HTTP_400_BAD_REQUEST) self.post(self.login_url, data=payload,
status=status.HTTP_400_BAD_REQUEST)
# veirfy email
email_confirmation = new_user.emailaddress_set.get(email=self.EMAIL)\
.emailconfirmation_set.last()
self.post(self.veirfy_email_url, data={"key": email_confirmation.key},
status_code=status.HTTP_200_OK)
# try to login again
self.post(self.login_url, data=payload, status_code=status.HTTP_200_OK)