Commit 64fecf9f049149d90ff306c9cea4bb65e1d994e2

Authored by Jailson Dias
1 parent ca4dcc0a

Test remember password #8

amadeus/settings.py
... ... @@ -144,6 +144,7 @@ MEDIA_URL = '/uploads/'
144 144 LOGIN_REDIRECT_URL = 'app:index'
145 145 LOGIN_URL = 'core:home'
146 146 AUTH_USER_MODEL = 'users.User'
  147 +
147 148 AUTHENTICATION_BACKENDS = [
148 149 'django.contrib.auth.backends.ModelBackend',
149 150 ]
... ... @@ -153,7 +154,12 @@ LOGS_URL = 'logs/'
153 154 #https://github.com/squ1b3r/Djaneiro
154 155  
155 156  
  157 +# E-mail
  158 +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
  159 +DEFAULT_FROM_EMAIL = 'admin@admin.com'
  160 +
  161 +
156 162 try:
157 163 from .local_settings import *
158 164 except ImportError:
159   - pass
160 165 \ No newline at end of file
  166 + pass
... ...
core/templates/index.html
... ... @@ -17,7 +17,7 @@
17 17 <div class="col-lg-9 col-lg-offset-2">
18 18 <div class="card">
19 19 {% if message %}
20   - <div class="alert alert-danger">
  20 + <div class="alert alert-danger fade in">
21 21 {{message}}
22 22 </div>
23 23  
... ...
core/templates/remember_password.html
... ... @@ -10,20 +10,29 @@
10 10 <div class="row ">
11 11 <div class="col-lg-9 col-lg-offset-2">
12 12 <div class="card">
  13 + {% if success %}
  14 + <div class="alert alert-success fade in">
  15 + {{success}}
  16 + </div>
  17 + {% elif danger %}
  18 + <div class="alert alert-danger fade in">
  19 + {{danger}}
  20 + </div>
  21 + {% endif %}
13 22 <div class="card-content">
14   -
15 23 <div class="card-body">
16   - <form class="form-group ">
  24 + <form class="form-group " method="post" action="">
  25 + {% csrf_token %}
17 26 <div class="form-group">
18 27 <label for="inputEmail" class="control-label label-static"> {% trans 'E-mail' %}</label>
19   - <input type="email" class="form-control" id="inputEmail" placeholder="Email">
  28 + <input name="email" type="email" class="form-control" id="inputEmail" placeholder="Email" {% if email %}value="{{email}}"{% endif %}>
20 29 </div>
21 30 <div class="form-group">
22 31 <label for="inputRegistration" class=" control-label"> {% trans 'Registration' %} </label>
23   - <input type="text" class="form-control" id="inputRegistration" placeholder="Registration">
  32 + <input name="registration" type="text" class="form-control" id="inputRegistration" placeholder="Registration" {% if registration %}value="{{registration}}"{% endif %}>
24 33 </div>
25 34 <div class="col-lg-offset-4 col-lg-4">
26   - <button class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Send' %}</button>
  35 + <button type="submite" class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Send' %}</button>
27 36  
28 37 </div>
29 38  
... ...
core/tests.py
... ... @@ -2,7 +2,7 @@ from django.test import TestCase, Client
2 2 from django.core.urlresolvers import reverse
3 3 from rolepermissions.shortcuts import assign_role
4 4 from users.models import User
5   -# from django.core import mail
  5 +from django.core import mail
6 6  
7 7 class LoginTestCase(TestCase):
8 8  
... ... @@ -10,10 +10,10 @@ class LoginTestCase(TestCase):
10 10 self.client = Client()
11 11  
12 12 self.user = User.objects.create_user(
13   - username = 'test',
14   - email = 'testing@amadeus.com',
15   - is_staff = True,
16   - is_active = True,
  13 + username = 'test',
  14 + email = 'testing@amadeus.com',
  15 + is_staff = True,
  16 + is_active = True,
17 17 password = 'testing'
18 18 )
19 19 assign_role(self.user, 'system_admin')
... ... @@ -38,7 +38,7 @@ class LoginTestCase(TestCase):
38 38 # self.assertEquals(response.context['message'], "Email ou senha incorretos!")
39 39  
40 40 class RegisterUserTestCase(TestCase):
41   -
  41 +
42 42 def setUp(self):
43 43 self.client = Client()
44 44 self.url = reverse('core:register')
... ... @@ -59,3 +59,35 @@ class RegisterUserTestCase(TestCase):
59 59 self.assertRedirects(response, 'http://localhost%s' % reverse('core:home'))
60 60 self.assertEqual(response.status_code, 302)
61 61 self.assertEqual(User.objects.count(), 1)
  62 +
  63 +class RememberPasswordTestCase(TestCase):
  64 +
  65 + def setUp(self):
  66 + self.client = Client()
  67 + self.url = reverse('core:remember_password')
  68 +
  69 + def test_remember_password_ok(self):
  70 + response = self.client.get(self.url)
  71 + self.assertEquals(response.status_code, 200)
  72 + self.assertTemplateUsed(response, 'remember_password.html')
  73 + data = {'email': 'fulano@fulano.com', 'registration': '0124578964226'}
  74 + response = self.client.post(self.url, data)
  75 + self.assertEquals(response.status_code, 200)
  76 + self.assertEquals(len(mail.outbox), 1)
  77 + self.assertTrue('success' in response.context)
  78 + self.assertTrue('danger' not in response.context)
  79 +
  80 + def test_remember_password_error(self):
  81 + data = {'email': 'fulano@fulano.com','registration':''}
  82 + response = self.client.post(self.url, data)
  83 + self.assertEquals(response.status_code, 200)
  84 + self.assertEquals(len(mail.outbox), 0)
  85 + self.assertTrue('success' not in response.context)
  86 + self.assertTrue('danger' in response.context)
  87 +
  88 + data = {'email': '', 'registration': '0124578964226'}
  89 + response = self.client.post(self.url, data)
  90 + self.assertEquals(response.status_code, 200)
  91 + self.assertEquals(len(mail.outbox), 0)
  92 + self.assertTrue('success' not in response.context)
  93 + self.assertTrue('danger' in response.context)
... ...
core/views.py
1   -from rolepermissions.shortcuts import assign_role
2 1 from django.utils.translation import ugettext_lazy as _
3 2 from django.core.urlresolvers import reverse_lazy, reverse
4 3 from django.contrib.auth import authenticate, login as login_user
5   -from .decorators import log_decorator
6 4 from django.contrib import messages
7 5 from django.shortcuts import render, redirect
8 6 from django.views.generic import CreateView
9 7 from django.http import HttpResponse
10   -from .forms import RegisterUserForm
  8 +from django.core.mail import send_mail,BadHeaderError
  9 +from django.conf import settings
  10 +
  11 +from rolepermissions.shortcuts import assign_role
  12 +
  13 +from .forms import RegisterUserForm
  14 +from .decorators import log_decorator
  15 +
11 16 from users.models import User
12 17  
13 18 def index(request):
... ... @@ -28,7 +33,7 @@ class RegisterUser(CreateView):
28 33 assign_role(form.instance, 'student')
29 34  
30 35 messages.success(self.request, _('User successfully registered!'))
31   -
  36 +
32 37 return super(RegisterUser, self).form_valid(form)
33 38  
34 39 def create_account(request):
... ... @@ -36,7 +41,25 @@ def create_account(request):
36 41  
37 42  
38 43 def remember_password(request):
39   - return render(request, "remember_password.html")
  44 + context = {}
  45 + if request.POST:
  46 + email = request.POST['email']
  47 + registration = request.POST['registration']
  48 + if email and registration:
  49 + subject = _('Recover your password')
  50 + message = _('Hello %s, \nRecover your password to use your account.\nNumber of registration: %s\nLink for recuver password.\n\nRespectfully,\nTeam Amadeus.' % (request.user,registration))
  51 + try:
  52 + send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [email],fail_silently=False)
  53 + context['success'] = 'Email successfully sent'
  54 + except BadHeaderError:
  55 + context['email'] = email
  56 + context['registration'] = registration
  57 + context['danger'] = 'E-mail does not send'
  58 + else:
  59 + context['email'] = email
  60 + context['registration'] = registration
  61 + context['danger'] = 'E-mail does not send'
  62 + return render(request, "remember_password.html",context)
40 63  
41 64 @log_decorator('Entrou no sistema')
42 65 def login(request):
... ...