Commit 7b31e9ed8f007e3f3fb65dd25c4d8bb51c9cf105
1 parent
10aca292
Exists in
master
and in
2 other branches
added tests and modified category view to pass some of them
Showing
3 changed files
with
73 additions
and
1 deletions
Show diff stats
| @@ -0,0 +1,66 @@ | @@ -0,0 +1,66 @@ | ||
| 1 | +from django.test import TestCase, Client, override_settings | ||
| 2 | +from django.core.urlresolvers import resolve | ||
| 3 | +from reports.views import ReportView | ||
| 4 | +from subjects.models import Subject, Tag | ||
| 5 | +from users.models import User | ||
| 6 | +from topics.models import Topic, Resource | ||
| 7 | +from chat.models import Conversation, TalkMessages | ||
| 8 | +from categories.models import Category | ||
| 9 | +from datetime import datetime | ||
| 10 | +from log.models import Log | ||
| 11 | +from django.db.models import Q | ||
| 12 | +from django.http import HttpResponse, JsonResponse | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +class RedirectingRulesTest(TestCase): | ||
| 16 | + | ||
| 17 | + def setUp(self): | ||
| 18 | + self.c = Client() | ||
| 19 | + self.student = User.objects.create(username = "student01", email= "student01@amadeus.br") | ||
| 20 | + self.student.set_password("amadeus") #because of the hash function used | ||
| 21 | + self.student.save() | ||
| 22 | + if self.c.login(email="student01@amadeus.br", password="amadeus"): | ||
| 23 | + print("student01 logged in") | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + self.student02 = User.objects.create(username= "student02", email = "student02@amadeus.br") | ||
| 27 | + self.student02.set_password("amadeus") | ||
| 28 | + self.student02.save() | ||
| 29 | + c1 = Category.objects.create(name ="test category", visible = True) | ||
| 30 | + c1.coordinators.add(self.student02) | ||
| 31 | + c1.save() | ||
| 32 | + | ||
| 33 | + | ||
| 34 | + @override_settings(STATICFILES_STORAGE = None) # added decorator | ||
| 35 | + def test_admin_connection(self): | ||
| 36 | + admin = User.objects.create_superuser(username="admin" ,email="admin@amadeus.br", password="amadeus") | ||
| 37 | + admin.save() | ||
| 38 | + self.c.logout() | ||
| 39 | + if self.c.login(email="admin@amadeus.br", password="amadeus"): | ||
| 40 | + print("admin logged in") | ||
| 41 | + | ||
| 42 | + response = self.c.get('/dashboards/general/') | ||
| 43 | + self.assertEqual(response.status_code, 200) | ||
| 44 | + | ||
| 45 | + @override_settings(STATICFILES_STORAGE = None) # added decorator | ||
| 46 | + def test_admin_dashboard_redirect(self): | ||
| 47 | + #as student 01 is already logged in | ||
| 48 | + response = self.c.get('/dashboards/general/') | ||
| 49 | + self.assertEqual(response.status_code, 302) | ||
| 50 | + | ||
| 51 | + @override_settings(STATICFILES_STORAGE = None) # added decorator | ||
| 52 | + def test_category_redirect(self): | ||
| 53 | + response = self.c.get('/dashboards/categories/') | ||
| 54 | + self.assertEqual(response.status_code, 302) | ||
| 55 | + print("a user which is not a coordinator is any category was redirected") | ||
| 56 | + | ||
| 57 | + @override_settings(STATICFILES_STORAGE = None) # added decorator | ||
| 58 | + def test_category_connection(self): | ||
| 59 | + self.c.logout() | ||
| 60 | + if self.c.login(email="student02@amadeus.br", password="amadeus"): | ||
| 61 | + print("student 02 logged in") | ||
| 62 | + | ||
| 63 | + response = self.c.get('/dashboards/categories/') | ||
| 64 | + | ||
| 65 | + self.assertEqual(response.status_code, 200) | ||
| 66 | + print("coordinator is accessing category dashboard") | ||
| 0 | \ No newline at end of file | 67 | \ No newline at end of file |
dashboards/views.py
| @@ -24,6 +24,8 @@ from log.mixins import LogMixin | @@ -24,6 +24,8 @@ from log.mixins import LogMixin | ||
| 24 | from log.decorators import log_decorator_ajax | 24 | from log.decorators import log_decorator_ajax |
| 25 | from log.models import Log | 25 | from log.models import Log |
| 26 | 26 | ||
| 27 | +from amadeus.permissions import has_category_permissions | ||
| 28 | + | ||
| 27 | 29 | ||
| 28 | class GeneralView(LogMixin, generic.TemplateView): | 30 | class GeneralView(LogMixin, generic.TemplateView): |
| 29 | template_name = "dashboards/general.html" | 31 | template_name = "dashboards/general.html" |
| @@ -77,7 +79,11 @@ class CategoryView(LogMixin, generic.TemplateView): | @@ -77,7 +79,11 @@ class CategoryView(LogMixin, generic.TemplateView): | ||
| 77 | log_context = {} | 79 | log_context = {} |
| 78 | 80 | ||
| 79 | def dispatch(self, request, *args, **kwargs): | 81 | def dispatch(self, request, *args, **kwargs): |
| 80 | - return super(CategoryView, self).dispatch(request, *args, **kwargs) | 82 | + if Category.objects.filter(coordinators__id = self.request.user.id).exists() or self.request.user.is_staff: |
| 83 | + return super(CategoryView, self).dispatch(request, *args, **kwargs) | ||
| 84 | + else: | ||
| 85 | + return redirect('users:login') | ||
| 86 | + | ||
| 81 | 87 | ||
| 82 | def get_context_data(self, **kwargs): | 88 | def get_context_data(self, **kwargs): |
| 83 | context = {} | 89 | context = {} |