Tests and group uniqueness

This commit is contained in:
Ludovic Stephan 2017-08-17 15:10:46 +02:00
parent 64a979a4ac
commit 0b1641a002
3 changed files with 59 additions and 14 deletions

View file

@ -28,10 +28,8 @@ class SubscriptionTest(TestCase):
created_by=cls.root,
created_at=timezone.now(),
description="Ceci est un test",
beginning_date=timezone.now()
+ timedelta(days=30),
ending_date=timezone.now()
+ timedelta(days=31),
beginning_date=timezone.now() + timedelta(days=30),
ending_date=timezone.now() + timedelta(days=31),
)
cls.groupsub = GroupSubscription.objects.create(
content_object=cls.event,
@ -55,4 +53,4 @@ class SubscriptionTest(TestCase):
def test_all_subs(self):
self.assertSetEqual(set(self.event.get_all_subscribers()),
{self.user_true, self.user_group_true})
{self.user_true, self.user_group_true})

View file

@ -12,7 +12,7 @@ def create_groups_for_event(sender, **kwargs):
event, created = kwargs["instance"], kwargs["created"]
if created:
orgas = EventGroup.objects.create(
name="orga",
name="{}_orgas".format(event.slug),
event=event
)
@ -22,7 +22,7 @@ def create_groups_for_event(sender, **kwargs):
assign_perm(perm.codename, orgas, event)
EventGroup.objects.create(
name="participants",
name="{}_participants".format(event.slug),
event=event,
)

View file

@ -1,10 +1,13 @@
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Permission
from django.core.exceptions import ValidationError
from django.test import TestCase
from datetime import timedelta
from django.utils import timezone
from .models import Event, ActivityTemplate, Activity, Place, \
from .models import Event, EventGroup, ActivityTemplate, Activity, Place, \
ActivityTag
from guardian.shortcuts import assign_perm
User = get_user_model()
@ -24,10 +27,8 @@ class ActivityInheritanceTest(TestCase):
created_by=cls.erkan,
created_at=timezone.now(),
description="La nuit c'est lol",
beginning_date=timezone.now()
+ timedelta(days=30),
ending_date=timezone.now()
+ timedelta(days=31),
beginning_date=timezone.now() + timedelta(days=30),
ending_date=timezone.now() + timedelta(days=31),
)
cls.loge = Place.objects.create(name="Loge 45")
cls.aqua = Place.objects.create(name="Aquarium")
@ -47,8 +48,7 @@ class ActivityInheritanceTest(TestCase):
self.real_act = Activity.objects.create(
parent=self.template_act,
event=self.event,
beginning=timezone.now()
+ timedelta(days=30),
beginning=timezone.now() + timedelta(days=30),
end=timezone.now()
+ timedelta(days=30)
+ timedelta(hours=2),
@ -155,3 +155,50 @@ class ActivityTagColorTest(TestCase):
)
with self.assertRaises(ValidationError):
self.tag.full_clean()
class EventPermissionTest(TestCase):
@classmethod
def setUpTestData(cls):
cls.user_perm = User.objects.create(username="userperm")
cls.user_noperm = User.objects.create(username="usernoperm")
cls.user_groupperm = User.objects.create(username="usergroupperm")
cls.user_groupnoperm = User.objects.create(username="usergroupnoperm")
cls.root = User.objects.create_superuser(
username="root",
email="toto@toto.io",
password="toto"
)
cls.event = Event.objects.create(
title="Hackathon",
slug="django",
created_by=cls.root,
description="Le code c'est cool",
beginning_date=timezone.now(),
ending_date=timezone.now() + timedelta(days=1),
)
def test_event_groups(self):
groups = EventGroup.objects.filter(
event=self.event
)
self.assertEqual(groups.count(), 2)
def test_individual_perms(self):
assign_perm("event_add_place", self.user_perm, self.event)
self.assertTrue(self.user_perm.has_perm("event_add_place", self.event))
self.assertFalse(self.user_noperm.has_perm("event_add_place",
self.event))
def test_group_perms(self):
orgas = EventGroup.objects.get(
name="{}_orgas".format(self.event.slug),
)
self.user_groupperm.groups.add(orgas)
for perm in Permission.objects.filter(
content_type=ContentType.objects.get_for_model(Event),
codename__contains="event_"):
self.assertTrue(self.user_groupperm.has_perm(perm.codename,
self.event))
self.assertFalse(self.user_groupnoperm.has_perm(perm.codename,
self.event))