mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-08 18:30:53 +00:00
Repo invitation (#4264)
* add fake url * add SharedRepoInvitation model * add indexes * rm indexes * update Manager * add SharedRepoInvitations * add is_repo_admin * add try * fix path * update * add SharedRepoInvitation * add share in signup * rm InvitePeople icon * add inviter_name * add share invite dialog * add shared_queryset.delete * fix spell * rename to RepoShare * rename to RepoShare in py * add handleKeyDown * update error msg * add unittest * fix * add logger
This commit is contained in:
107
tests/api/endpoints/test_repo_share_invitations.py
Normal file
107
tests/api/endpoints/test_repo_share_invitations.py
Normal file
@@ -0,0 +1,107 @@
|
||||
import json
|
||||
from mock import patch
|
||||
|
||||
from django.test import override_settings
|
||||
from post_office.models import Email
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from seahub.base.accounts import UserPermissions
|
||||
from seahub.invitations.models import Invitation, RepoShareInvitation
|
||||
from seahub.test_utils import BaseTestCase
|
||||
from seahub.api2.permissions import CanInviteGuest
|
||||
|
||||
|
||||
class RepoShareInvitationsTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.login_as(self.user)
|
||||
self.username = self.user.username
|
||||
self.repo_id = self.repo.id
|
||||
self.url = reverse(
|
||||
'api-v2.1-repo-share-invitations', args=[self.repo_id])
|
||||
|
||||
@patch.object(CanInviteGuest, 'has_permission')
|
||||
@patch.object(UserPermissions, 'can_invite_guest')
|
||||
def test_can_list(self, mock_can_invite_guest, mock_has_permission):
|
||||
|
||||
mock_can_invite_guest.return_val = True
|
||||
mock_has_permission.return_val = True
|
||||
|
||||
invitation_obj_1 = Invitation.objects.add(
|
||||
inviter=self.username, accepter='1@qq.com')
|
||||
invitation_obj_2 = Invitation.objects.add(
|
||||
inviter=self.username, accepter='1@qq.com')
|
||||
|
||||
RepoShareInvitation.objects.add(invitation_obj_1, self.repo_id, '/', 'r')
|
||||
RepoShareInvitation.objects.add(invitation_obj_2, self.repo_id, '/', 'rw')
|
||||
|
||||
resp = self.client.get(self.url + '?path=/')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp.get('repo_share_invitation_list')) == 2
|
||||
|
||||
|
||||
class RepoShareInvitationsBatchTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.login_as(self.user)
|
||||
self.username = self.user.username
|
||||
self.repo_id = self.repo.id
|
||||
self.url = reverse(
|
||||
'api-v2.1-repo-share-invitations-batch', args=[self.repo_id])
|
||||
|
||||
@patch.object(CanInviteGuest, 'has_permission')
|
||||
@patch.object(UserPermissions, 'can_invite_guest')
|
||||
def test_can_add_with_batch(self, mock_can_invite_guest, mock_has_permission):
|
||||
|
||||
mock_can_invite_guest.return_val = True
|
||||
mock_has_permission.return_val = True
|
||||
|
||||
data = json.dumps({
|
||||
'type': 'guest',
|
||||
'accepters': ['1@qq.com', '2@qq.com'],
|
||||
'path': '/',
|
||||
'permission': 'r',
|
||||
})
|
||||
resp = self.client.post(self.url, data, 'application/json')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
json_resp = json.loads(resp.content)
|
||||
assert self.username == json_resp['success'][0]['inviter']
|
||||
assert '1@qq.com' == json_resp['success'][0]['accepter']
|
||||
assert '2@qq.com' == json_resp['success'][1]['accepter']
|
||||
assert json_resp['success'][0]['expire_time'] is not None
|
||||
|
||||
@patch.object(CanInviteGuest, 'has_permission')
|
||||
@patch.object(UserPermissions, 'can_invite_guest')
|
||||
def test_with_invalid_path(self, mock_can_invite_guest, mock_has_permission):
|
||||
|
||||
mock_can_invite_guest.return_val = True
|
||||
mock_has_permission.return_val = True
|
||||
|
||||
data = json.dumps({
|
||||
'type': 'guest',
|
||||
'accepters': ['1@qq.com', '2@qq.com'],
|
||||
'path': '/invalid_path',
|
||||
'permission': 'r',
|
||||
})
|
||||
resp = self.client.post(self.url, data, 'application/json')
|
||||
self.assertEqual(404, resp.status_code)
|
||||
|
||||
@patch.object(CanInviteGuest, 'has_permission')
|
||||
@patch.object(UserPermissions, 'can_invite_guest')
|
||||
def test_with_invalid_user(self, mock_can_invite_guest, mock_has_permission):
|
||||
|
||||
mock_can_invite_guest.return_val = True
|
||||
mock_has_permission.return_val = True
|
||||
|
||||
self.logout()
|
||||
self.login_as(self.admin)
|
||||
|
||||
data = json.dumps({
|
||||
'type': 'guest',
|
||||
'accepters': ['1@qq.com', '2@qq.com'],
|
||||
'path': '/',
|
||||
'permission': 'r',
|
||||
})
|
||||
resp = self.client.post(self.url, data, 'application/json')
|
||||
self.assertEqual(403, resp.status_code)
|
||||
self.logout
|
Reference in New Issue
Block a user