2015-12-24 06:53:29 +00:00
|
|
|
import json
|
|
|
|
|
|
|
|
import seaserv
|
|
|
|
from seaserv import seafile_api
|
|
|
|
|
|
|
|
from seahub.test_utils import BaseTestCase
|
|
|
|
|
|
|
|
class BeSharedReposTest(BaseTestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.login_as(self.admin)
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
self.remove_repo()
|
|
|
|
|
|
|
|
def _prepare_repo_and_group(self):
|
|
|
|
# create repo for user
|
|
|
|
sub_repo_id = seafile_api.create_virtual_repo(self.repo.id,
|
|
|
|
self.folder,
|
|
|
|
self.repo.name, '',
|
|
|
|
self.user.username)
|
|
|
|
|
|
|
|
self.sub_repo_id = sub_repo_id
|
|
|
|
|
|
|
|
# create group for admin
|
|
|
|
admin_group_id = seaserv.ccnet_threaded_rpc.create_group('admin-group',
|
|
|
|
self.admin.email)
|
|
|
|
self.admin_group_id = admin_group_id
|
|
|
|
|
|
|
|
def test_can_list_personal_shared_repo(self):
|
|
|
|
self._prepare_repo_and_group()
|
|
|
|
|
|
|
|
# A user shares a folder to admin with permission 'rw'.
|
|
|
|
seafile_api.share_repo(self.sub_repo_id,
|
|
|
|
self.user.username,
|
|
|
|
self.admin.username,
|
|
|
|
'rw')
|
|
|
|
|
|
|
|
|
|
|
|
resp = self.client.get('/api2/beshared-repos/')
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
|
|
json_resp = json.loads(resp.content)
|
|
|
|
assert json_resp[0]['repo_id'] == self.sub_repo_id
|
|
|
|
assert json_resp[0]['share_type'] == 'personal'
|
|
|
|
|
|
|
|
def test_can_list_group_repo(self):
|
|
|
|
self._prepare_repo_and_group()
|
|
|
|
|
|
|
|
# A user shares a folder to admin group with permission 'rw'.
|
|
|
|
seafile_api.set_group_repo(self.sub_repo_id,
|
|
|
|
self.admin_group_id,
|
|
|
|
self.user.username,
|
|
|
|
'rw')
|
|
|
|
|
|
|
|
|
|
|
|
resp = self.client.get('/api2/beshared-repos/')
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
|
|
json_resp = json.loads(resp.content)
|
|
|
|
assert json_resp[0]['repo_id'] == self.sub_repo_id
|
|
|
|
assert json_resp[0]['share_type'] == 'group'
|
|
|
|
|
|
|
|
def test_can_list_public_repo(self):
|
|
|
|
self._prepare_repo_and_group()
|
|
|
|
|
|
|
|
# A user shares a folder to public with permission 'rw'.
|
|
|
|
seafile_api.add_inner_pub_repo(self.sub_repo_id, 'rw')
|
|
|
|
|
|
|
|
resp = self.client.get('/api2/beshared-repos/')
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
|
|
json_resp = json.loads(resp.content)
|
2019-09-11 03:46:43 +00:00
|
|
|
# assert json_resp[0]['repo_id'] == self.sub_repo_id
|
|
|
|
# assert json_resp[0]['share_type'] == 'public'
|
|
|
|
public_repo_success = False
|
|
|
|
for repo_info in json_resp:
|
|
|
|
if repo_info['repo_id'] == self.sub_repo_id and \
|
|
|
|
repo_info['share_type'] == 'public':
|
|
|
|
public_repo_success = True
|
|
|
|
assert public_repo_success
|