class OpenGroupMemberCreationTests(APITestCase): @classmethod def setUpTestData(self): super(APITestCase, self).setUpTestData() # Routes self.members_url = "/group-member/" self.member_url = self.members_url + "%d/" # Public Group, open to anyone self.group = GroupFactory() self.group.is_private = False self.group.default_member_rank = 1 self.group.save() # Users already in group self.users = [UserFactory()] # Associated GroupMember self.group_member1 = GroupMember(user=self.users[0], group=self.group, perm_rank=Group.ADMINISTRATOR_RANK) # Testing user self.user = UserFactory() # Misc self.new_membership_data = {"group_id": self.group.id, "user_id": self.user.id} def test_create_not_authed(self): self.client.force_authenticate(user=None) response = self.client.post(self.members_url, self.new_membership_data) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) def test_create_not_for_self(self): # Attempt to add somebody else to a group self.client.force_authenticate(user=self.users[0]) response = self.client.post(self.members_url, self.new_membership_data) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_create_success(self): # Succesful attempt to join an open group self.client.force_authenticate(user=self.user) response = self.client.post(self.members_url, self.new_membership_data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.data["perm_rank"], self.group.default_member_rank)