Skip to content
This repository was archived by the owner on Aug 13, 2019. It is now read-only.

Commit 7ac0fb2

Browse files
committed
Adds tests for password missmatch
1 parent 792440d commit 7ac0fb2

File tree

7 files changed

+99
-3
lines changed

7 files changed

+99
-3
lines changed

.idea/dataSources.xml

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/accounts/forms.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ class SignUpForm(UserCreationForm):
4242
}
4343
))
4444

45+
46+
4547
class Meta:
4648
model = User
4749
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )

apps/accounts/templates/accounts/account_activation_email.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
Hi {{ user.username }},
33
Please click on the link to confirm your registration,
44

5-
http://127.0.0.1:8000{% url 'accounts:activate' uidb64=uid token=token %}
5+
{{ protocol }}{{ domain}}{% url 'accounts:activate' uidb64=uid token=token %}
66
{% endautoescape %}

apps/accounts/tests.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,8 @@ def setUp(self):
307307
self.url = reverse('accounts:signup')
308308
self.response = self.client.get(self.url)
309309

310+
311+
310312
def test_csrf(self):
311313
"""Test for csrf token."""
312314
self.assertContains(self.response, 'csrfmiddlewaretoken')
@@ -324,3 +326,73 @@ def test_signup_view_is_rendered(self):
324326
"""Tests if `accounts/signup.html` and `base.html` is used."""
325327
self.assertTemplateUsed(self.response, 'accounts/signup.html')
326328
self.assertTemplateUsed(self.response, 'base.html')
329+
330+
# unable to link, need assistance
331+
def test_contains_login_link(self):
332+
"""Test if it contains `signup` link."""
333+
url = reverse('accounts:login')
334+
self.assertContains(self.response, f'href="{url}"')
335+
336+
337+
def test_form_inputs(self):
338+
"""The view must contain three inputs: csrf, username, first_name, last_name
339+
email, password1, password2"""
340+
self.assertContains(self.response, '<input', 7)
341+
self.assertContains(self.response, 'type="text"', 4)
342+
self.assertContains(self.response, 'type="password"', 2)
343+
344+
345+
346+
347+
class SignupPostTest(TestCase):
348+
"""Tests the login `POST` requests."""
349+
350+
def setUp(self):
351+
"""Set ups the user and url for this test."""
352+
self.url = reverse('accounts:signup')
353+
354+
def test_successfull_post_signup(self):
355+
data = {
356+
'username': 'testusername',
357+
'first_name': 'testfirstname',
358+
'last_name': 'testlastname',
359+
'email': '[email protected]',
360+
'password1': 'testpassword',
361+
'password2': 'testpassword',
362+
363+
}
364+
365+
response = self.client.post(self.url, data)
366+
367+
user = User.objects.get(username = data['username'])
368+
self.assertEqual(user.first_name, data['first_name'])
369+
self.assertEqual(user.last_name, data['last_name'])
370+
self.assertEqual(user.email, data['email'])
371+
self.assertFalse(user.is_active)
372+
self.assertTrue(user)
373+
374+
self.assertTemplateUsed(response, 'accounts/email_sent.html')
375+
self.assertTemplateUsed(response, 'base.html')
376+
self.assertEqual(response.status_code, 200)
377+
378+
def test_password_mismatch(self):
379+
380+
data = {
381+
'username': 'testusername1',
382+
'first_name': 'testfirstname',
383+
'last_name': 'testlastname',
384+
'email': '[email protected]',
385+
'password1': 'testpassword',
386+
'password2': 'testpassword1',
387+
388+
}
389+
390+
response = self.client.post(reverse('accounts:signup'), data)
391+
392+
error_messages = ["The two password fields didn't match."]
393+
self.assertFormError(response, 'form', 'password1', error_messages)
394+
self.assertFalse(User.objects.exists(username = data['username']))
395+
396+
self.assertTemplateUsed(response, 'accounts/signup.html')
397+
self.assertTemplateUsed(response, 'base.html')
398+
self.assertEqual(response.status_code, 200)

apps/accounts/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from django.conf.urls import url
2-
from .views import UserLoginView, logout_view, signup, activate as activate_view
2+
from .views import UserLoginView, logout_view, signup, activate as activate_view
33

44

55
urlpatterns = [
@@ -8,4 +8,5 @@
88
url(r'^logout/$', logout_view, name='logout'),
99
url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
1010
activate_view, name='activate'),
11+
1112
]

apps/accounts/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ def signup(request):
3939
mail_subject, message, to=[to_email]
4040
)
4141
email.send()
42-
return HttpResponse('Please confirm your email address to complete the registration')
42+
return render(request, 'accounts/email_sent.html', { 'email':user.email})
4343
else:
4444
form = SignUpForm()
4545
return render(request, 'accounts/signup.html', {'form': form})
4646

4747

48+
49+
4850
def activate(request, uidb64, token):
4951
try:
5052
uid = force_text(urlsafe_base64_decode(uidb64))

0 commit comments

Comments
 (0)