Completed
Pull Request — master (#16)
by
unknown
02:54
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
    @classmethod
18
    def setUpTestData(self):
19
        super(APITestCase, self).setUpTestData()
20
21
        # Routes
22
        self.group_field_url = "/group-field/"
23
24
        # Group open to anyone
25
        self.group = GroupFactory()
26
        self.group.save()
27
28
        # Users already in group
29
        # User[0]: Not in Group
30
        # User[1]: Requested join, not accepted
31
        # User[2]: Group member
32
        # User[3]: Group admin
33
        self.users = [UserFactory(), UserFactory(), UserFactory(), UserFactory()]
34
        # Associated GroupMember
35
        self.group_member = [
36
                None,
37
                GroupMember(user=self.users[1], group=self.group, perm_rank=0),
38
                GroupMember(user=self.users[2], group=self.group, perm_rank=1),
39
                GroupMember(user=self.users[3], group=self.group, perm_rank=Group.ADMINISTRATOR_RANK)
40
            ]
41
42
        # Misc
43
        self.new_field_data = {"group": self.group.id,
44
            "name": "Example Group Field",
45
            "validator": Validator.VALIDATOR_NONE,
46
            "validator_values": {}}
47
48
    #################### TEST GROUP FIELD CREATION ########################
49
    def try_create(self, user):
50
        self.client.force_authenticate(user=user)
51
        resp = self.client.post(self.group_field_url, self.new_field_data)
52
        return resp.status_code
53
54
    def test_create_not_authed(self):
55
        self.assertEqual(self.try_create(None), status.HTTP_401_UNAUTHORIZED)
56
57
    def test_create_not_group_member(self):
58
        self.assertEqual(self.try_create(self.users[0]), status.HTTP_403_FORBIDDEN)
59
60
    def test_create_not_group_accepted(self):
61
        self.assertEqual(self.try_create(self.users[1]), status.HTTP_403_FORBIDDEN)
62
63
    def test_create_not_group_admin(self):
64
        self.assertEqual(self.try_create(self.users[2]), status.HTTP_403_FORBIDDEN)
65
66
    def test_create_ok(self):
67
        self.assertEqual(self.try_create(self.users[3]), status.HTTP_201_CREATED)
68