Completed
Pull Request — master (#24)
by
unknown
52s
created

ClusterVisibilityTests.test_get_same_cluster()   A

Complexity

Conditions 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 6
rs 9.4285
1
from rest_framework import status
2
from rest_framework.test import APITestCase, force_authenticate
3
4
from sigma_core.models.group import Group
5
from sigma_core.models.cluster import Cluster
6
from sigma_core.serializers.group import GroupSerializer
7
from sigma_core.serializers.cluster import BasicClusterSerializer
8
from sigma_core.tests.factories import UserFactory, GroupFactory, GroupMemberFactory, ClusterFactory, AdminUserFactory
9
10
11
def reload(obj):
12
    return obj.__class__.objects.get(pk=obj.pk)
13
14
15
class ClusterVisibilityTests(APITestCase):
16
    @classmethod
17
    def setUpTestData(self):
18
        super().setUpTestData()
19
20
        # Test situation
21
        # Cluster1:
22
        #   User1.1
23
        #       -> Group0
24
        #       -> Group1
25
        #   User1.2
26
        #       -> Group0
27
        #
28
        # Cluster2:
29
        #   User2.1:
30
        #       -> Group1
31
        # AdminUser
32
33
        # Clusters
34
        self.clusters = ClusterFactory.create_batch(2)
35
36
        # Users
37
        self.c1_users = UserFactory.create_batch(2)
38
        for user in self.c1_users:
39
            user.clusters.add(self.clusters[0])
40
            user.save()
41
        GroupMemberFactory(user=self.c1_users[0], group=self.clusters[0], perm_rank=1)
42
        GroupMemberFactory(user=self.c1_users[1], group=self.clusters[0], perm_rank=1)
43
        self.c2_users  = UserFactory.create_batch(1)
44
        for user in self.c2_users:
45
            user.clusters.add(self.clusters[1])
46
            user.save()
47
        GroupMemberFactory(user=self.c2_users[0], group=self.clusters[1], perm_rank=1)
48
49
        self.admin = AdminUserFactory()
50
51
        # Create groups
52
        self.groups = GroupFactory.create_batch(2)
53
        # Group0
54
        GroupMemberFactory(user=self.c1_users[0], group=self.groups[0], perm_rank=1)
55
        GroupMemberFactory(user=self.c1_users[1], group=self.groups[0], perm_rank=1)
56
        # Group1
57
        GroupMemberFactory(user=self.c1_users[0], group=self.groups[1], perm_rank=1)
58
        GroupMemberFactory(user=self.c2_users[0], group=self.groups[1], perm_rank=1)
59
60
        # Routes
61
        self.user_route = "/user/%d/"
62
63
    def test_get_other_cluster_not_visible_user(self):
64
        # Diff cluster, no common group
65
        self.client.force_authenticate(user=self.c2_users[0])
66
        response = self.client.get(self.user_route % self.c1_users[1].id)
67
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
68
69
    def test_get_other_cluster_one_mship_visible(self):
70
        # Diff cluster, common group
71
        self.client.force_authenticate(user=self.c2_users[0])
72
        response = self.client.get(self.user_route % self.c1_users[0].id)
73
        self.assertEqual(response.status_code, status.HTTP_200_OK)
74
        self.assertEqual(len(response.data.get('memberships')), 1) # One common Group
75
        self.assertEqual(response.data.get('memberships')[0].get('group').get('id'), self.groups[1].id)
76
77
    def test_get_same_cluster(self):
78
        # Same cluster, one group
79
        self.client.force_authenticate(user=self.c1_users[0])
80
        response = self.client.get(self.user_route % self.c1_users[1].id)
81
        self.assertEqual(response.status_code, status.HTTP_200_OK)
82
        self.assertEqual(len(response.data.get('memberships')), 2) # Same cluster, see everything
83