Commit b4c9363992212812edef36aa8d84c9a45c217a54

Authored by Jailson Dias
1 parent f116c316

resolve #4

core/templates/index.html
@@ -36,6 +36,12 @@ @@ -36,6 +36,12 @@
36 <div class="row "> 36 <div class="row ">
37 <div class="col-lg-9 col-lg-offset-2"> 37 <div class="col-lg-9 col-lg-offset-2">
38 <div class="card"> 38 <div class="card">
  39 + {% if message %}
  40 + <div class="alert alert-danger">
  41 + {{message}}
  42 + </div>
  43 +
  44 + {% endif %}
39 <div class="card-content"> 45 <div class="card-content">
40 46
41 <div class="card-body"> 47 <div class="card-body">
1 -from django.test import TestCase 1 +from django.test import TestCase, Client
  2 +from django.core.urlresolvers import reverse
  3 +from rolepermissions.shortcuts import assign_role
  4 +from users.models import User
  5 +# from django.core import mail
2 6
3 -# Create your tests here. 7 +class LoginTestCase(TestCase):
  8 +
  9 + def setUp(self):
  10 + self.client = Client()
  11 +
  12 + self.user = User.objects.create_user(username = 'test', email = 'testing@amadeus.com', is_staff = True, is_active = True, password = 'testing')
  13 + assign_role(self.user, 'system_admin')
  14 +
  15 + self.url = reverse('core:home')
  16 +
  17 + def test_ok(self):
  18 + response = self.client.get(self.url)
  19 + self.assertEquals(response.status_code, 200)
  20 + self.assertTemplateUsed(response, 'index.html')
  21 + data = {'username': 'test', 'password': 'testing'}
  22 + response = self.client.post(self.url, data)
  23 + self.assertRedirects(response, reverse("app:index"))
  24 +
  25 + def test_not_ok(self):
  26 + response = self.client.get(self.url)
  27 + self.assertEquals(response.status_code, 200)
  28 + self.assertTemplateUsed(response, 'index.html')
  29 + data = {'username': 'test', 'password': 'senhaerrada'}
  30 + response = self.client.post(self.url, data)
  31 + self.assertTrue('message' in response.context)
  32 + self.assertEquals(response.context['message'], "Email ou senha incorretos!")
@@ -22,15 +22,17 @@ from django.shortcuts import redirect @@ -22,15 +22,17 @@ from django.shortcuts import redirect
22 from django.urls import reverse 22 from django.urls import reverse
23 23
24 def login(request): 24 def login(request):
  25 + context = {}
25 if request.POST: 26 if request.POST:
26 username = request.POST['username'] 27 username = request.POST['username']
27 password = request.POST['password'] 28 password = request.POST['password']
28 usuario = authenticate(username=username, password=password) 29 usuario = authenticate(username=username, password=password)
29 - print (dir(usuario))  
30 if usuario is not None: 30 if usuario is not None:
31 login_user(request, usuario) 31 login_user(request, usuario)
32 return redirect(reverse("app:index")) 32 return redirect(reverse("app:index"))
33 - return render(request,"index.html") 33 + else:
  34 + context["message"] = "Email ou senha incorretos!"
  35 + return render(request,"index.html",context)
34 36
35 37
36 # class LoginClass(LoginView): 38 # class LoginClass(LoginView):
courses/tests/test_views.py
@@ -12,7 +12,7 @@ class CourseViewTestCase(TestCase): @@ -12,7 +12,7 @@ class CourseViewTestCase(TestCase):
12 12
13 def setUp(self): 13 def setUp(self):
14 self.client = Client() 14 self.client = Client()
15 - 15 +
16 self.user = User.objects.create_user(username = 'test', email = 'testing@amadeus.com', is_staff = True, is_active = True, password = 'testing') 16 self.user = User.objects.create_user(username = 'test', email = 'testing@amadeus.com', is_staff = True, is_active = True, password = 'testing')
17 assign_role(self.user, 'system_admin') 17 assign_role(self.user, 'system_admin')
18 18
@@ -27,25 +27,25 @@ class CourseViewTestCase(TestCase): @@ -27,25 +27,25 @@ class CourseViewTestCase(TestCase):
27 27
28 def test_index(self): 28 def test_index(self):
29 self.client.login(username='test', password='testing') 29 self.client.login(username='test', password='testing')
30 -  
31 - url = reverse('app:course:manage')  
32 - 30 +
  31 + url = reverse('course:manage')
  32 +
33 response = self.client.get(url) 33 response = self.client.get(url)
34 34
35 self.assertEquals(response.status_code, 200) 35 self.assertEquals(response.status_code, 200)
36 self.assertTemplateUsed(response, 'course/index.html') 36 self.assertTemplateUsed(response, 'course/index.html')
37 37
38 def test_index_not_logged(self): 38 def test_index_not_logged(self):
39 - url = reverse('app:course:manage')  
40 - 39 + url = reverse('course:manage')
  40 +
41 response = self.client.get(url, follow = True) 41 response = self.client.get(url, follow = True)
42 42
43 - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200) 43 + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)
44 44
45 def test_create(self): 45 def test_create(self):
46 self.client.login(username='test', password='testing') 46 self.client.login(username='test', password='testing')
47 47
48 - url = reverse('app:course:create') 48 + url = reverse('course:create')
49 49
50 response = self.client.get(url) 50 response = self.client.get(url)
51 51
@@ -53,11 +53,11 @@ class CourseViewTestCase(TestCase): @@ -53,11 +53,11 @@ class CourseViewTestCase(TestCase):
53 self.assertTemplateUsed(response, 'course/create.html') 53 self.assertTemplateUsed(response, 'course/create.html')
54 54
55 def test_create_not_logged(self): 55 def test_create_not_logged(self):
56 - url = reverse('app:course:create')  
57 - 56 + url = reverse('course:create')
  57 +
58 response = self.client.get(url, follow = True) 58 response = self.client.get(url, follow = True)
59 59
60 - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200) 60 + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)
61 61
62 def test_create_no_permission(self): 62 def test_create_no_permission(self):
63 self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing') 63 self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing')
@@ -66,8 +66,8 @@ class CourseViewTestCase(TestCase): @@ -66,8 +66,8 @@ class CourseViewTestCase(TestCase):
66 66
67 self.client.login(username='student', password='testing') 67 self.client.login(username='student', password='testing')
68 68
69 - url = reverse('app:course:create')  
70 - 69 + url = reverse('course:create')
  70 +
71 response = self.client.get(url) 71 response = self.client.get(url)
72 72
73 self.assertEquals(response.status_code, 403) 73 self.assertEquals(response.status_code, 403)
@@ -76,7 +76,7 @@ class CourseViewTestCase(TestCase): @@ -76,7 +76,7 @@ class CourseViewTestCase(TestCase):
76 def test_update(self): 76 def test_update(self):
77 self.client.login(username = 'test', password = 'testing') 77 self.client.login(username = 'test', password = 'testing')
78 78
79 - url = reverse('app:course:update', kwargs = {'slug': self.course.slug}) 79 + url = reverse('course:update', kwargs = {'slug': self.course.slug})
80 80
81 response = self.client.get(url) 81 response = self.client.get(url)
82 82
@@ -84,11 +84,11 @@ class CourseViewTestCase(TestCase): @@ -84,11 +84,11 @@ class CourseViewTestCase(TestCase):
84 self.assertTemplateUsed(response, 'course/update.html') 84 self.assertTemplateUsed(response, 'course/update.html')
85 85
86 def test_update_not_logged(self): 86 def test_update_not_logged(self):
87 - url = reverse('app:course:update', kwargs = {'slug': self.course.slug})  
88 - 87 + url = reverse('course:update', kwargs = {'slug': self.course.slug})
  88 +
89 response = self.client.get(url, follow = True) 89 response = self.client.get(url, follow = True)
90 90
91 - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200) 91 + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)
92 92
93 def test_update_no_permission(self): 93 def test_update_no_permission(self):
94 self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing') 94 self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing')
@@ -97,8 +97,8 @@ class CourseViewTestCase(TestCase): @@ -97,8 +97,8 @@ class CourseViewTestCase(TestCase):
97 97
98 self.client.login(username='student', password='testing') 98 self.client.login(username='student', password='testing')
99 99
100 - url = reverse('app:course:update', kwargs = {'slug': self.course.slug})  
101 - 100 + url = reverse('course:update', kwargs = {'slug': self.course.slug})
  101 +
102 response = self.client.get(url) 102 response = self.client.get(url)
103 103
104 self.assertEquals(response.status_code, 403) 104 self.assertEquals(response.status_code, 403)
@@ -106,7 +106,7 @@ class CourseViewTestCase(TestCase): @@ -106,7 +106,7 @@ class CourseViewTestCase(TestCase):
106 def test_view(self): 106 def test_view(self):
107 self.client.login(username = 'test', password = 'testing') 107 self.client.login(username = 'test', password = 'testing')
108 108
109 - url = reverse('app:course:view', kwargs = {'slug': self.course.slug}) 109 + url = reverse('course:view', kwargs = {'slug': self.course.slug})
110 110
111 response = self.client.get(url) 111 response = self.client.get(url)
112 112
@@ -114,8 +114,8 @@ class CourseViewTestCase(TestCase): @@ -114,8 +114,8 @@ class CourseViewTestCase(TestCase):
114 self.assertTemplateUsed(response, 'course/view.html') 114 self.assertTemplateUsed(response, 'course/view.html')
115 115
116 def test_update_not_logged(self): 116 def test_update_not_logged(self):
117 - url = reverse('app:course:view', kwargs = {'slug': self.course.slug})  
118 - 117 + url = reverse('course:view', kwargs = {'slug': self.course.slug})
  118 +
119 response = self.client.get(url, follow = True) 119 response = self.client.get(url, follow = True)
120 120
121 - self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200)  
122 \ No newline at end of file 121 \ No newline at end of file
  122 + self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)
courses/views.py
@@ -15,7 +15,7 @@ from .models import Course, Module, Category @@ -15,7 +15,7 @@ from .models import Course, Module, Category
15 15
16 class IndexView(LoginRequiredMixin, generic.ListView): 16 class IndexView(LoginRequiredMixin, generic.ListView):
17 17
18 - login_url = '/' 18 + login_url = reverse_lazy("core:home")
19 redirect_field_name = 'next' 19 redirect_field_name = 'next'
20 queryset = Course.objects.all() 20 queryset = Course.objects.all()
21 template_name = 'course/index.html' 21 template_name = 'course/index.html'
@@ -31,7 +31,7 @@ class IndexView(LoginRequiredMixin, generic.ListView): @@ -31,7 +31,7 @@ class IndexView(LoginRequiredMixin, generic.ListView):
31 class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): 31 class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
32 32
33 allowed_roles = ['professor', 'system_admin'] 33 allowed_roles = ['professor', 'system_admin']
34 - login_url = '/' 34 + login_url = reverse_lazy("core:home")
35 redirect_field_name = 'next' 35 redirect_field_name = 'next'
36 template_name = 'course/create.html' 36 template_name = 'course/create.html'
37 form_class = CourseForm 37 form_class = CourseForm
@@ -52,7 +52,7 @@ class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): @@ -52,7 +52,7 @@ class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
52 class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): 52 class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
53 53
54 allowed_roles = ['professor', 'system_admin'] 54 allowed_roles = ['professor', 'system_admin']
55 - login_url = '/' 55 + login_url = reverse_lazy("core:home")
56 redirect_field_name = 'next' 56 redirect_field_name = 'next'
57 template_name = 'course/update.html' 57 template_name = 'course/update.html'
58 model = Course 58 model = Course
@@ -73,7 +73,7 @@ class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): @@ -73,7 +73,7 @@ class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
73 73
74 class View(LoginRequiredMixin, generic.DetailView): 74 class View(LoginRequiredMixin, generic.DetailView):
75 75
76 - login_url = '/' 76 + login_url = reverse_lazy("core:home")
77 redirect_field_name = 'next' 77 redirect_field_name = 'next'
78 model = Course 78 model = Course
79 context_object_name = 'course' 79 context_object_name = 'course'
@@ -82,7 +82,7 @@ class View(LoginRequiredMixin, generic.DetailView): @@ -82,7 +82,7 @@ class View(LoginRequiredMixin, generic.DetailView):
82 class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): 82 class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
83 83
84 allowed_roles = ['professor', 'system_admin'] 84 allowed_roles = ['professor', 'system_admin']
85 - login_url = '/' 85 + login_url = reverse_lazy("core:home")
86 redirect_field_name = 'next' 86 redirect_field_name = 'next'
87 model = Course 87 model = Course
88 template_name = 'course/delete.html' 88 template_name = 'course/delete.html'
@@ -95,7 +95,7 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): @@ -95,7 +95,7 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
95 95
96 class FilteredView(LoginRequiredMixin, generic.ListView): 96 class FilteredView(LoginRequiredMixin, generic.ListView):
97 97
98 - login_url = '/' 98 + login_url = reverse_lazy("core:home")
99 redirect_field_name = 'next' 99 redirect_field_name = 'next'
100 template_name = 'course/filtered.html' 100 template_name = 'course/filtered.html'
101 context_object_name = 'courses' 101 context_object_name = 'courses'
@@ -115,7 +115,7 @@ class FilteredView(LoginRequiredMixin, generic.ListView): @@ -115,7 +115,7 @@ class FilteredView(LoginRequiredMixin, generic.ListView):
115 115
116 class IndexCatView(LoginRequiredMixin, generic.ListView): 116 class IndexCatView(LoginRequiredMixin, generic.ListView):
117 117
118 - login_url = '/' 118 + login_url = reverse_lazy("core:home")
119 redirect_field_name = 'next' 119 redirect_field_name = 'next'
120 queryset = Category.objects.all() 120 queryset = Category.objects.all()
121 template_name = 'category/index.html' 121 template_name = 'category/index.html'
@@ -125,7 +125,7 @@ class IndexCatView(LoginRequiredMixin, generic.ListView): @@ -125,7 +125,7 @@ class IndexCatView(LoginRequiredMixin, generic.ListView):
125 class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): 125 class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
126 126
127 allowed_roles = ['professor', 'system_admin'] 127 allowed_roles = ['professor', 'system_admin']
128 - login_url = '/' 128 + login_url = reverse_lazy("core:home")
129 redirect_field_name = 'next' 129 redirect_field_name = 'next'
130 template_name = 'category/create.html' 130 template_name = 'category/create.html'
131 form_class = CategoryForm 131 form_class = CategoryForm
@@ -146,7 +146,7 @@ class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): @@ -146,7 +146,7 @@ class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
146 class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): 146 class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
147 147
148 allowed_roles = ['professor', 'system_admin'] 148 allowed_roles = ['professor', 'system_admin']
149 - login_url = '/' 149 + login_url = reverse_lazy("core:home")
150 redirect_field_name = 'next' 150 redirect_field_name = 'next'
151 template_name = 'category/update.html' 151 template_name = 'category/update.html'
152 model = Category 152 model = Category
@@ -166,7 +166,7 @@ class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): @@ -166,7 +166,7 @@ class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
166 return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine) 166 return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
167 167
168 class ViewCat(LoginRequiredMixin, generic.DetailView): 168 class ViewCat(LoginRequiredMixin, generic.DetailView):
169 - login_url = '/' 169 + login_url = reverse_lazy("core:home")
170 redirect_field_name = 'next' 170 redirect_field_name = 'next'
171 model = Category 171 model = Category
172 template_name = 'category/view.html' 172 template_name = 'category/view.html'
@@ -175,7 +175,7 @@ class ViewCat(LoginRequiredMixin, generic.DetailView): @@ -175,7 +175,7 @@ class ViewCat(LoginRequiredMixin, generic.DetailView):
175 class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): 175 class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
176 176
177 allowed_roles = ['professor', 'system_admin'] 177 allowed_roles = ['professor', 'system_admin']
178 - login_url = '/' 178 + login_url = reverse_lazy("core:home")
179 redirect_field_name = 'next' 179 redirect_field_name = 'next'
180 model = Category 180 model = Category
181 template_name = 'category/delete.html' 181 template_name = 'category/delete.html'
@@ -188,7 +188,7 @@ class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): @@ -188,7 +188,7 @@ class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
188 188
189 class ModulesView(LoginRequiredMixin, generic.ListView): 189 class ModulesView(LoginRequiredMixin, generic.ListView):
190 190
191 - login_url = '/' 191 + login_url = reverse_lazy("core:home")
192 redirect_field_name = 'next' 192 redirect_field_name = 'next'
193 template_name = 'module/index.html' 193 template_name = 'module/index.html'
194 context_object_name = 'modules' 194 context_object_name = 'modules'
@@ -208,7 +208,7 @@ class ModulesView(LoginRequiredMixin, generic.ListView): @@ -208,7 +208,7 @@ class ModulesView(LoginRequiredMixin, generic.ListView):
208 class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): 208 class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
209 209
210 allowed_roles = ['professor', 'system_admin'] 210 allowed_roles = ['professor', 'system_admin']
211 - login_url = '/' 211 + login_url = reverse_lazy("core:home")
212 redirect_field_name = 'next' 212 redirect_field_name = 'next'
213 template_name = 'module/create.html' 213 template_name = 'module/create.html'
214 form_class = ModuleForm 214 form_class = ModuleForm
@@ -241,7 +241,7 @@ class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView): @@ -241,7 +241,7 @@ class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
241 class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): 241 class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
242 242
243 allowed_roles = ['professor', 'system_admin'] 243 allowed_roles = ['professor', 'system_admin']
244 - login_url = '/' 244 + login_url = reverse_lazy("core:home")
245 redirect_field_name = 'next' 245 redirect_field_name = 'next'
246 template_name = 'module/update.html' 246 template_name = 'module/update.html'
247 model = Module 247 model = Module
@@ -272,7 +272,7 @@ class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): @@ -272,7 +272,7 @@ class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
272 class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): 272 class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
273 273
274 allowed_roles = ['professor', 'system_admin'] 274 allowed_roles = ['professor', 'system_admin']
275 - login_url = '/' 275 + login_url = reverse_lazy("core:home")
276 redirect_field_name = 'next' 276 redirect_field_name = 'next'
277 model = Module 277 model = Module
278 template_name = 'module/delete.html' 278 template_name = 'module/delete.html'