Completed
Pull Request — master (#16)
by
unknown
01:35
created

GroupFieldTests.test_create_not_authed()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 2
rs 10
1
import json
2
3
from django.core import mail
4
5
from rest_framework import status
6
from rest_framework.test import APITestCase
7
8
from sigma_core.models.user import User
9
from sigma_core.models.group import Group
10
from sigma_core.models.group_member import GroupMember
11
from sigma_core.models.group_field import GroupField
12
from sigma_core.models.validator import Validator
13
from sigma_core.tests.factories import UserFactory, AdminUserFactory, GroupFactory, GroupMemberFactory
14
15
16
class GroupFieldTests(APITestCase):
17
    fixtures = ['fixtures_prod.json']
18
    @classmethod
19
    def setUpTestData(self):
20
        super(APITestCase, self).setUpTestData()
21
22
        # Routes
23
        self.group_field_url = "/group-field/"
24
25
        # Group open to anyone
26
        self.group = GroupFactory()
27
        self.group.save()
28
29
        # Users already in group
30
        # User[0]: Not in Group
31
        # User[1]: Requested join, not accepted
32
        # User[2]: Group member
33
        # User[3]: Group admin
34
        self.users = [UserFactory(), UserFactory(), UserFactory(), UserFactory()]
35
        # Associated GroupMember
36
        self.group_member = [
37
                None,
38
                GroupMemberFactory(user=self.users[1], group=self.group, perm_rank=0),
39
                GroupMemberFactory(user=self.users[2], group=self.group, perm_rank=1),
40
                GroupMemberFactory(user=self.users[3], group=self.group, perm_rank=Group.ADMINISTRATOR_RANK)
41
            ]
42
43
        # Misc
44
        self.new_field_data = {"group": self.group.id,
45
            "name": "Example Group Field",
46
            "validator": Validator.VALIDATOR_NONE,
47
            "validator_values": {}}
48
49
    def test_imported_validators(self):
50
        self.assertTrue(Validator.objects.all().filter(html_name=Validator.VALIDATOR_NONE).exists())
51
52
    #################### TEST GROUP FIELD CREATION ########################
53
    def try_create(self, user):
54
        self.client.force_authenticate(user=user)
55
        resp = self.client.post(self.group_field_url, self.new_field_data)
56
        return resp.status_code
57
58
    def test_create_not_authed(self):
59
        self.assertEqual(self.try_create(None), status.HTTP_401_UNAUTHORIZED)
60
61
    def test_create_not_group_member(self):
62
        self.assertEqual(self.try_create(self.users[0]), status.HTTP_403_FORBIDDEN)
63
64
    def test_create_not_group_accepted(self):
65
        self.assertEqual(self.try_create(self.users[1]), status.HTTP_403_FORBIDDEN)
66
67
    def test_create_not_group_admin(self):
68
        self.assertEqual(self.try_create(self.users[2]), status.HTTP_403_FORBIDDEN)
69
70
    def test_create_ok(self):
71
        self.assertEqual(self.try_create(self.users[3]), status.HTTP_201_CREATED)
72