2019-11-02 05:16:49 +00:00
|
|
|
import json
|
|
|
|
import logging
|
2024-05-31 02:15:23 +00:00
|
|
|
from mock import patch
|
2019-11-02 05:16:49 +00:00
|
|
|
|
2020-07-27 06:59:18 +00:00
|
|
|
from django.urls import reverse
|
2019-11-02 05:16:49 +00:00
|
|
|
|
|
|
|
from seahub.test_utils import BaseTestCase
|
|
|
|
from tests.common.utils import randstring
|
|
|
|
from seahub.institutions.models import Institution
|
2024-05-31 02:15:23 +00:00
|
|
|
|
2019-11-02 05:16:49 +00:00
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
class InstitutionsTest(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')
|
2024-05-31 02:15:23 +00:00
|
|
|
def test_can_get(self, mock_is_pro_version):
|
|
|
|
|
|
|
|
mock_is_pro_version.return_value = True
|
|
|
|
|
2019-11-02 05:16:49 +00:00
|
|
|
self.login_as(self.admin)
|
|
|
|
inst = self._add_institution('int1')
|
|
|
|
url = reverse('api-v2.1-admin-institutions')
|
|
|
|
resp = self.client.get(url)
|
|
|
|
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
|
|
json_resp = json.loads(resp.content)
|
|
|
|
assert json_resp['institution_list'][0]['name'] == 'int1'
|
|
|
|
assert json_resp['total_count'] == 1
|
|
|
|
|
|
|
|
inst.delete()
|
|
|
|
|
2024-05-31 02:58:54 +00:00
|
|
|
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
2024-05-31 02:15:23 +00:00
|
|
|
def test_no_permission(self, mock_is_pro_version):
|
|
|
|
|
|
|
|
mock_is_pro_version.return_value = True
|
|
|
|
|
2019-12-16 10:31:29 +00:00
|
|
|
self.logout()
|
|
|
|
self.login_as(self.admin_no_other_permission)
|
|
|
|
inst = self._add_institution('int1')
|
|
|
|
url = reverse('api-v2.1-admin-institutions')
|
|
|
|
resp = self.client.get(url)
|
|
|
|
|
|
|
|
self.assertEqual(403, resp.status_code)
|
|
|
|
inst.delete()
|
|
|
|
|
2024-05-31 02:58:54 +00:00
|
|
|
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
2024-05-31 02:15:23 +00:00
|
|
|
def test_can_create(self, mock_is_pro_version):
|
|
|
|
|
|
|
|
mock_is_pro_version.return_value = True
|
|
|
|
|
2019-11-02 05:16:49 +00:00
|
|
|
self.login_as(self.admin)
|
|
|
|
url = reverse('api-v2.1-admin-institutions')
|
|
|
|
|
|
|
|
institution_name = randstring(10)
|
|
|
|
|
|
|
|
data = {
|
|
|
|
'name': institution_name,
|
|
|
|
}
|
|
|
|
resp = self.client.post(url, data)
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
|
|
json_resp = json.loads(resp.content)
|
|
|
|
assert json_resp['name'] == institution_name
|
|
|
|
|
|
|
|
self._delete_institution(institution_name)
|
|
|
|
|
|
|
|
|
|
|
|
class InstitutionTest(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')
|
2024-05-31 02:15:23 +00:00
|
|
|
def test_can_get(self, mock_is_pro_version):
|
|
|
|
|
|
|
|
mock_is_pro_version.return_value = True
|
|
|
|
|
2019-11-02 05:16:49 +00:00
|
|
|
self.login_as(self.admin)
|
|
|
|
institution_name = randstring(10)
|
|
|
|
inst = self._add_institution(institution_name)
|
|
|
|
url = reverse('api-v2.1-admin-institution', args=[inst.id])
|
|
|
|
resp = self.client.get(url)
|
|
|
|
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
|
|
json_resp = json.loads(resp.content)
|
|
|
|
assert json_resp['id'] == inst.id
|
|
|
|
assert json_resp['name'] == institution_name
|
|
|
|
|
|
|
|
inst.delete()
|
|
|
|
|
2024-05-31 02:58:54 +00:00
|
|
|
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
2024-05-31 02:15:23 +00:00
|
|
|
def test_can_update(self, mock_is_pro_version):
|
|
|
|
|
|
|
|
mock_is_pro_version.return_value = True
|
|
|
|
|
2019-11-02 05:16:49 +00:00
|
|
|
self.login_as(self.admin)
|
|
|
|
institution_name = randstring(10)
|
|
|
|
inst = self._add_institution(institution_name)
|
|
|
|
url = reverse('api-v2.1-admin-institution', args=[inst.id])
|
|
|
|
|
|
|
|
data = 'quota=1024'
|
|
|
|
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['quota_total'] == 1024 * 1000 * 1000
|
|
|
|
|
|
|
|
inst.delete()
|
|
|
|
|
2024-05-31 02:58:54 +00:00
|
|
|
@patch('seahub.api2.permissions.IsProVersion.has_permission')
|
2024-05-31 02:15:23 +00:00
|
|
|
def test_can_delete(self, mock_is_pro_version):
|
|
|
|
|
|
|
|
mock_is_pro_version.return_value = True
|
2019-11-02 05:16:49 +00:00
|
|
|
|
|
|
|
self.login_as(self.admin)
|
|
|
|
institution_name = randstring(10)
|
|
|
|
inst = self._add_institution(institution_name)
|
|
|
|
url = reverse('api-v2.1-admin-institution', args=[inst.id])
|
|
|
|
resp = self.client.delete(url)
|
|
|
|
|
|
|
|
self.assertEqual(200, resp.status_code)
|