def test_get_with_no_access(self): """Testing the GET <URL> API without access to invite-only group""" group = self.create_review_group(name='priv-group', invite_only=True) rsp = self.api_get(get_review_group_user_list_url(group.name), expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def test_get_with_no_access(self): """Testing the GET groups/<name>/users/ API without access to invite-only group """ group = self.create_review_group(name="priv-group", invite_only=True) rsp = self.apiGet(get_review_group_user_list_url(group.name), expected_status=403) self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], PERMISSION_DENIED.code)
def test_create_user_with_no_access(self, local_site=None): """Testing the POST groups/<name>/users/ API with Permission Denied""" group = self.create_review_group() user = User.objects.get(pk=1) rsp = self.apiPost(get_review_group_user_list_url( group.name, local_site), {'username': user.username}, expected_status=403) self.assertEqual(rsp['stat'], 'fail')
def test_post_with_no_access(self, local_site=None): """Testing the POST groups/<name>/users/ API with Permission Denied""" group = self.create_review_group() user = User.objects.get(pk=1) rsp = self.apiPost( get_review_group_user_list_url(group.name, local_site), {"username": user.username}, expected_status=403 ) self.assertEqual(rsp["stat"], "fail")
def setup_basic_post_test(self, user, with_local_site, local_site_name, post_valid_data): group = self.create_review_group(with_local_site=with_local_site) if post_valid_data: post_data = {"username": "******"} else: post_data = {} return (get_review_group_user_list_url(group.name, local_site_name), user_item_mimetype, post_data, [group])
def test_post_with_no_access(self, local_site=None): """Testing the POST <URL> API with Permission Denied""" group = self.create_review_group() user = User.objects.get(pk=1) rsp = self.api_post( get_review_group_user_list_url(group.name, local_site), {'username': user.username}, expected_status=403) self.assertEqual(rsp['stat'], 'fail')
def setup_basic_get_test(self, user, with_local_site, local_site_name, populate_items): group = self.create_review_group(with_local_site=with_local_site) if populate_items: items = [User.objects.get(username="******"), User.objects.get(username="******")] group.users = items else: items = [] return (get_review_group_user_list_url(group.name, local_site_name), user_list_mimetype, items)
def test_post_with_invalid_user(self): """Testing the POST groups/<name>/users/ API with invalid user""" self._login_user(admin=True) group = self.create_review_group() rsp = self.apiPost(get_review_group_user_list_url(group.name), {"username": "******"}, expected_status=400) self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], INVALID_USER.code) self.assertEqual(group.users.count(), 0)
def test_post_with_self(self): """Testing the POST <URL> API with the requesting user""" group = self.create_review_group() self.assertFalse(self.user.is_superuser) rsp = self.api_post(get_review_group_user_list_url(group.name), {'username': self.user.username}, expected_mimetype=review_group_user_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(group.users.count(), 1)
def test_get(self, local_site=None): """Testing the GET groups/<name>/users/ API""" group = self.create_review_group( with_local_site=(local_site is not None)) group.users.add(User.objects.get(username='******')) group.users.add(User.objects.get(username='******')) rsp = self.apiGet( get_review_group_user_list_url(group.name, local_site), expected_mimetype=user_list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(len(rsp['users']), 2)
def test_get_users(self, local_site=None): """Testing the GET groups/<name>/users/ API""" group = self.create_review_group( with_local_site=(local_site is not None)) group.users.add(User.objects.get(username='******')) group.users.add(User.objects.get(username='******')) rsp = self.apiGet(get_review_group_user_list_url( group.name, local_site), expected_mimetype=user_list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(len(rsp['users']), 2)
def test_post_with_self(self): """Testing the POST <URL> API with the requesting user""" group = self.create_review_group() self.assertFalse(self.user.is_superuser) rsp = self.api_post( get_review_group_user_list_url(group.name), {'username': self.user.username}, expected_mimetype=review_group_user_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(group.users.count(), 1)
def test_create_user_with_invalid_user(self): """Testing the POST groups/<name>/users/ API with invalid user""" self._login_user(admin=True) group = self.create_review_group() rsp = self.apiPost(get_review_group_user_list_url(group.name), {'username': '******'}, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_USER.code) self.assertEqual(group.users.count(), 0)
def test_post_with_self_and_private_group(self): """Testing the POST <URL> API with the requesting user and private group """ group = self.create_review_group(invite_only=True) self.assertFalse(group.is_accessible_by(self.user)) rsp = self.api_post(get_review_group_user_list_url(group.name), {'username': self.user.username}, expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(group.users.count(), 0)
def setup_basic_post_test(self, user, with_local_site, local_site_name, post_valid_data): group = self.create_review_group(with_local_site=with_local_site) if post_valid_data: post_data = { 'username': '******', } else: post_data = {} return (get_review_group_user_list_url(group.name, local_site_name), review_group_user_item_mimetype, post_data, [group])
def test_post_with_self_and_private_group(self): """Testing the POST groups/<name>/users/ API with the requesting user and private group """ group = self.create_review_group(invite_only=True) self.assertFalse(group.is_accessible_by(self.user)) rsp = self.api_post( get_review_group_user_list_url(group.name), {'username': self.user.username}, expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(group.users.count(), 0)
def test_post_with_invalid_user(self): """Testing the POST groups/<name>/users/ API with invalid user""" self._login_user(admin=True) group = self.create_review_group() rsp = self.api_post( get_review_group_user_list_url(group.name), {'username': '******'}, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_USER.code) self.assertEqual(group.users.count(), 0)
def test_create_user(self, local_site=None): """Testing the POST groups/<name>/users/ API""" self._login_user(admin=True, local_site=local_site) group = self.create_review_group( with_local_site=(local_site is not None)) user = User.objects.get(pk=1) rsp = self.apiPost(get_review_group_user_list_url( group.name, local_site), {'username': user.username}, expected_mimetype=user_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(group.users.count(), 1) self.assertEqual(group.users.get().username, user.username)
def setup_basic_get_test(self, user, with_local_site, local_site_name, populate_items): group = self.create_review_group(with_local_site=with_local_site) if populate_items: items = [ User.objects.get(username='******'), User.objects.get(username='******'), ] group.users = items else: items = [] return (get_review_group_user_list_url(group.name, local_site_name), review_group_user_list_mimetype, items)
def test_post(self, local_site=None): """Testing the POST groups/<name>/users/ API""" self._login_user(admin=True, local_site=local_site) group = self.create_review_group( with_local_site=(local_site is not None)) user = User.objects.get(pk=1) rsp = self.apiPost( get_review_group_user_list_url(group.name, local_site), {'username': user.username}, expected_mimetype=user_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(group.users.count(), 1) self.assertEqual(group.users.get().username, user.username)
def test_post_with_self_and_unjoined_site(self): """Testing the POST <URL> API with the requesting user on an unjoined local site """ self.assertFalse(self.user.is_superuser) group = self.create_review_group(with_local_site=True) self.assertEqual(group.users.count(), 0) rsp = self.api_post(get_review_group_user_list_url( group.name, self.local_site_name), {'username': self.user.username}, expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(group.users.count(), 0)
def test_post_with_self_and_unjoined_site(self): """Testing the POST groups/<name>/users/ API with the requesting user on an unjoined local site """ self.assertFalse(self.user.is_superuser) group = self.create_review_group(with_local_site=True) self.assertEqual(group.users.count(), 0) rsp = self.api_post( get_review_group_user_list_url(group.name, self.local_site_name), {'username': self.user.username}, expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(group.users.count(), 0)
def test_get_multiple_groups(self): """Testing GET <URL> API with a user in multiple groups""" doc = User.objects.get(username='******') groups = [ self.create_review_group('group1'), self.create_review_group('group2'), ] for group in groups: group.users.add(doc) rsp = self.api_get(get_review_group_user_list_url(groups[0].name), expected_mimetype=review_group_user_list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(rsp['total_results'], 1) self.compare_item(rsp['users'][0], doc)
def test_post_with_self_and_site(self): """Testing the POST <URL> API with the requesting user on a local site """ self.assertFalse(self.user.is_superuser) local_site = self.get_local_site(name=self.local_site_name) local_site.users.add(self.user) group = self.create_review_group(with_local_site=True) self.assertEqual(group.users.count(), 0) rsp = self.api_post( get_review_group_user_list_url(group.name, self.local_site_name), {'username': self.user.username}, expected_mimetype=review_group_user_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(group.users.count(), 1)
def test_get_multiple_groups(self): """Testing GET <URL> API with a user in multiple groups""" doc = User.objects.get(username='******') groups = [ self.create_review_group('group1'), self.create_review_group('group2'), ] for group in groups: group.users.add(doc) rsp = self.api_get( get_review_group_user_list_url(groups[0].name), expected_mimetype=review_group_user_list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(rsp['total_results'], 1) self.compare_item(rsp['users'][0], doc)
def test_post_with_self_and_site(self): """Testing the POST <URL> API with the requesting user on a local site """ self.assertFalse(self.user.is_superuser) local_site = self.get_local_site(name=self.local_site_name) local_site.users.add(self.user) group = self.create_review_group(with_local_site=True) self.assertEqual(group.users.count(), 0) rsp = self.api_post(get_review_group_user_list_url( group.name, self.local_site_name), {'username': self.user.username}, expected_mimetype=review_group_user_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(group.users.count(), 1)
def setup_http_not_allowed_item_test(self, user): return get_review_group_user_list_url('my-group')