1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-07-13 06:55:59 +00:00
seahub/tests/api/endpoints/admin/test_institution_users.py

134 lines
4.1 KiB
Python
Raw Normal View History

import json
import logging
from mock import patch
2020-07-27 06:59:18 +00:00
from django.urls import reverse
from seahub.test_utils import BaseTestCase
from seahub.institutions.models import Institution
from seahub.profile.models import Profile
logger = logging.getLogger(__name__)
class AdminInstitutionUsersTest(BaseTestCase):
def setUp(self):
pass
def _add_institution(self, name=''):
return Institution.objects.create(name=name)
def _delete_institution(self, name=''):
try:
institution = Institution.objects.get(name=name)
institution.delete()
except Exception as e:
logger.error(e)
2024-05-31 02:58:54 +00:00
@patch('seahub.api2.permissions.IsProVersion.has_permission')
def test_can_get(self, mock_is_pro_version):
mock_is_pro_version.return_value = True
self.login_as(self.admin)
inst = self._add_institution('int1')
url = reverse('api-v2.1-admin-institution-users', args=[inst.id])
resp = self.client.get(url)
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert type(json_resp['user_list']) is list
inst.delete()
2024-05-31 02:58:54 +00:00
@patch('seahub.api2.permissions.IsProVersion.has_permission')
def test_no_permission(self, mock_is_pro_version):
mock_is_pro_version.return_value = True
self.logout()
self.login_as(self.admin_no_other_permission)
inst = self._add_institution('int1')
url = reverse('api-v2.1-admin-institution-users', args=[inst.id])
resp = self.client.get(url)
self.assertEqual(403, resp.status_code)
2024-05-31 02:58:54 +00:00
@patch('seahub.api2.permissions.IsProVersion.has_permission')
def test_can_create(self, mock_is_pro_version):
mock_is_pro_version.return_value = True
self.login_as(self.admin)
inst = self._add_institution('int1')
url = reverse('api-v2.1-admin-institution-users', args=[inst.id])
data = {
'email': 'invalid_email_string',
}
resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert type(json_resp['success']) is list
assert type(json_resp['failed']) is list
class AdminInstitutionUserTest(BaseTestCase):
def setUp(self):
pass
def _add_institution(self, name=''):
return Institution.objects.create(name=name)
def _delete_institution(self, name=''):
try:
institution = Institution.objects.get(name=name)
institution.delete()
except Exception as e:
logger.error(e)
def _add_user_in_institution(self, email, inst_name):
profile = Profile.objects.get_profile_by_user(email)
if not profile:
profile = Profile.objects.add_or_update(username=email, institution=inst_name)
else:
profile.institution = inst_name
profile.save()
2024-05-31 02:58:54 +00:00
@patch('seahub.api2.permissions.IsProVersion.has_permission')
def test_can_update(self, mock_is_pro_version):
mock_is_pro_version.return_value = True
self.login_as(self.admin)
inst = self._add_institution('int1')
self._add_user_in_institution(self.user.email, inst.name)
url = reverse('api-v2.1-admin-institution-user', args=[inst.id, self.user.email])
data = 'is_institution_admin=True'
resp = self.client.put(url, data, 'application/x-www-form-urlencoded')
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert json_resp['is_institution_admin'] is True
inst.delete()
2024-05-31 02:58:54 +00:00
@patch('seahub.api2.permissions.IsProVersion.has_permission')
def test_can_delete(self, mock_is_pro_version):
mock_is_pro_version.return_value = True
self.login_as(self.admin)
inst = self._add_institution('int1')
self._add_user_in_institution(self.user.email, inst.name)
url = reverse('api-v2.1-admin-institution-user', args=[inst.id, self.user.email])
resp = self.client.delete(url)
self.assertEqual(200, resp.status_code)
inst.delete()