mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-06 01:12:03 +00:00
[tests] add the rest of web api test
This commit is contained in:
@@ -32,8 +32,13 @@ AVATAR_BASE_URL = BASE_URL + u'/api2/avatars/'
|
|||||||
DEFAULT_LIBRARY_URL = BASE_URL + u'/api2/default-repo/'
|
DEFAULT_LIBRARY_URL = BASE_URL + u'/api2/default-repo/'
|
||||||
LIBRARIES_URL = BASE_URL + u'/api2/repos/'
|
LIBRARIES_URL = BASE_URL + u'/api2/repos/'
|
||||||
VIRTUAL_LIBRARIES_URL = BASE_URL + u'/api2/virtual-repos/'
|
VIRTUAL_LIBRARIES_URL = BASE_URL + u'/api2/virtual-repos/'
|
||||||
|
|
||||||
STARREDFILES_URL = BASE_URL + u'/api2/starredfiles/'
|
STARREDFILES_URL = BASE_URL + u'/api2/starredfiles/'
|
||||||
|
SHARED_LINKS_URL = BASE_URL + u'/api2/shared-links/'
|
||||||
|
SHARED_LIBRARIES_URL = BASE_URL + u'/api2/shared-repos/'
|
||||||
|
BESHARED_LIBRARIES_URL = BASE_URL + u'/api2/beshared-repos/'
|
||||||
|
SHARED_FILES_URL = BASE_URL + u'/api2/shared-files/'
|
||||||
|
F_URL = BASE_URL + u'/api2/f/'
|
||||||
|
S_F_URL = BASE_URL + u'/api2/s/f/'
|
||||||
|
|
||||||
MISC_SEARCH_URL = BASE_URL + u'/api2/search/'
|
MISC_SEARCH_URL = BASE_URL + u'/api2/search/'
|
||||||
MISC_LIST_GROUP_AND_CONTACTS_URL = BASE_URL + u'/api2/groupandcontacts/'
|
MISC_LIST_GROUP_AND_CONTACTS_URL = BASE_URL + u'/api2/groupandcontacts/'
|
||||||
@@ -57,6 +62,10 @@ if (_token != None):
|
|||||||
else:
|
else:
|
||||||
_instance = None
|
_instance = None
|
||||||
|
|
||||||
|
_nuked_instance = requests.Session()
|
||||||
|
|
||||||
def get_authed_instance():
|
def get_authed_instance():
|
||||||
return _instance
|
return _instance
|
||||||
|
|
||||||
|
def get_anonymous_instance():
|
||||||
|
return _nuked_instance
|
||||||
|
@@ -7,7 +7,7 @@ ACCOUNT_PASSWORD = r'test_test'
|
|||||||
ACCOUNT_PASSWORD2 = r'test_test2'
|
ACCOUNT_PASSWORD2 = r'test_test2'
|
||||||
ACCOUNT_URL = ACCOUNTS_URL + ACCOUNT_USERNAME + u'/'
|
ACCOUNT_URL = ACCOUNTS_URL + ACCOUNT_USERNAME + u'/'
|
||||||
|
|
||||||
class AccountApiTestCase(unittest.TestCase):
|
class AccountsApiTestCase(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.requests = get_authed_instance()
|
self.requests = get_authed_instance()
|
@@ -2,7 +2,7 @@ from integration_api import LIBRARIES_URL, DEFAULT_LIBRARY_URL
|
|||||||
from integration_api import VIRTUAL_LIBRARIES_URL, get_authed_instance
|
from integration_api import VIRTUAL_LIBRARIES_URL, get_authed_instance
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class LibraryApiTestCase(unittest.TestCase):
|
class LibrariesApiTestCase(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.requests = get_authed_instance()
|
self.requests = get_authed_instance()
|
237
tests/integration_api/shares.py
Normal file
237
tests/integration_api/shares.py
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
from common.utils import randomword
|
||||||
|
from integration_api import SHARED_LINKS_URL, LIBRARIES_URL, \
|
||||||
|
DEFAULT_LIBRARY_URL, SHARED_LIBRARIES_URL, BESHARED_LIBRARIES_URL, \
|
||||||
|
USERNAME, SHARED_FILES_URL, GROUPS_URL, F_URL, S_F_URL, \
|
||||||
|
get_authed_instance, get_anonymous_instance
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class SharesApiTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.requests = get_authed_instance()
|
||||||
|
self.arequests = get_anonymous_instance()
|
||||||
|
self.assertIsNotNone(self.requests)
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
self.rid = res.json()['repo_id']
|
||||||
|
self.rurl = LIBRARIES_URL + str(self.rid) + u'/'
|
||||||
|
self.furl = self.rurl + u'file/'
|
||||||
|
self.durl = self.rurl + u'dir/'
|
||||||
|
self.gname = randomword(16)
|
||||||
|
data = { 'group_name': self.gname }
|
||||||
|
res = self.requests.put(GROUPS_URL, data=data)
|
||||||
|
self.gid = res.json()['group_id']
|
||||||
|
|
||||||
|
def testListFileSharedLinksApi(self):
|
||||||
|
res = self.requests.get(SHARED_LINKS_URL)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
for fileshare in json['fileshares']:
|
||||||
|
self.assertIsNotNone(fileshare['username'])
|
||||||
|
self.assertIsNotNone(fileshare['repo_id'])
|
||||||
|
#self.assertIsNotNone(fileshare['ctime'])
|
||||||
|
self.assertIsNotNone(fileshare['s_type'])
|
||||||
|
self.assertIsNotNone(fileshare['token'])
|
||||||
|
self.assertIsNotNone(fileshare['view_cnt'])
|
||||||
|
self.assertIsNotNone(fileshare['path'])
|
||||||
|
|
||||||
|
def testCreateFileSharedLinkApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_create_shared_link_f'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'f', 'p': '/test_create_shared_link_f' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
self.assertEqual(res.status_code, 201)
|
||||||
|
self.assertRegexpMatches(res.headers['Location'], \
|
||||||
|
r'http(.*)/f/(\w{10,10})/')
|
||||||
|
|
||||||
|
def testCreateDirectorySharedLinkApi(self):
|
||||||
|
data = { 'operation': 'mkdir' }
|
||||||
|
durl = self.durl + u'?p=/test_create_shared_link_d'
|
||||||
|
self.requests.post(durl, data=data)
|
||||||
|
self.requests.post(durl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'd', 'p': '/test_create_shared_link_d' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
self.assertEqual(res.status_code, 201)
|
||||||
|
self.assertRegexpMatches(res.headers['Location'], \
|
||||||
|
r'http(.*)/d/(\w{10,10})/')
|
||||||
|
|
||||||
|
def testRemoveSharedLinkApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_remove_shared_link_f'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'f', 'p': '/test_remove_shared_link_f' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
import re
|
||||||
|
t = re.match(r'http(.*)/f/(\w{10,10})/', res.headers['Location']).group(2)
|
||||||
|
fturl = SHARED_LINKS_URL + u'?t=' + t
|
||||||
|
res = self.requests.delete(fturl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, u'{}')
|
||||||
|
|
||||||
|
def testGetSharedFileUrlApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_visit_shared_link_f'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'f', 'p': '/test_visit_shared_link_f' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
import re
|
||||||
|
t = re.match(r'http(.*)/f/(\w{10,10})/', res.headers['Location']).group(2)
|
||||||
|
fdurl = F_URL + t + u'/'
|
||||||
|
res = self.requests.get(fdurl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/files/\w{8,8}/(.*)"')
|
||||||
|
|
||||||
|
def testGetSharedFileDetailApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_visitd_shared_link_f'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'f', 'p': '/test_visitd_shared_link_f' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
import re
|
||||||
|
t = re.match(r'http(.*)/f/(\w{10,10})/', res.headers['Location']).group(2)
|
||||||
|
fdurl = F_URL + t + u'/detail/'
|
||||||
|
res = self.requests.get(fdurl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['repo_id'])
|
||||||
|
self.assertIsNotNone(json['name'])
|
||||||
|
self.assertIsNotNone(json['size'])
|
||||||
|
self.assertIsNotNone(json['path'])
|
||||||
|
self.assertIsNotNone(json['type'])
|
||||||
|
self.assertIsNotNone(json['mtime'])
|
||||||
|
self.assertIsNotNone(json['id'])
|
||||||
|
|
||||||
|
def testGetPrivateSharedFileUrlApi(self):
|
||||||
|
if True: #todo: override this
|
||||||
|
return
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_visit_shared_link_sf'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'f', 'p': '/test_visit_shared_link_sf' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
import re
|
||||||
|
t = re.match(r'http(.*)/f/(\w{10,10})/', res.headers['Location']).group(2)
|
||||||
|
fdurl = S_F_URL + t + u'/'
|
||||||
|
res = self.requests.get(fdurl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/files/\w{8,8}/(.*)"')
|
||||||
|
|
||||||
|
def testGetPrivateSharedFileDetailApi(self):
|
||||||
|
if True: #todo: override this
|
||||||
|
return
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_visitd_shared_link_sf'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'f', 'p': '/test_visitd_shared_link_sf' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
import re
|
||||||
|
t = re.match(r'http(.*)/f/(\w{10,10})/', res.headers['Location']).group(2)
|
||||||
|
fdurl = S_F_URL + t + u'/detail/'
|
||||||
|
res = self.requests.get(fdurl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['repo_id'])
|
||||||
|
self.assertIsNotNone(json['name'])
|
||||||
|
self.assertIsNotNone(json['size'])
|
||||||
|
self.assertIsNotNone(json['path'])
|
||||||
|
self.assertIsNotNone(json['type'])
|
||||||
|
self.assertIsNotNone(json['mtime'])
|
||||||
|
self.assertIsNotNone(json['id'])
|
||||||
|
|
||||||
|
def testRemoveSharedFileApi(self):
|
||||||
|
if True: #todo: override this
|
||||||
|
return
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_remove_shared_file'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fsurl = self.furl + u'shared-link/'
|
||||||
|
data = { 'type': 'f', 'p': '/test_remove_shared_file' }
|
||||||
|
res = self.requests.put(fsurl, data=data)
|
||||||
|
import re
|
||||||
|
t = re.match(r'http(.*)/f/(\w{10,10})/', res.headers['Location']).group(2)
|
||||||
|
fturl = SHARED_FILES_URL + u'?t=' + t
|
||||||
|
res = self.requests.delete(fturl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, u'{}')
|
||||||
|
|
||||||
|
def testListSharedLibrariesApi(self):
|
||||||
|
res = self.requests.get(SHARED_LIBRARIES_URL)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
for repo in json:
|
||||||
|
self.assertIsNotNone(repo['repo_id'])
|
||||||
|
self.assertIsNotNone(repo['share_type'])
|
||||||
|
self.assertIsNotNone(repo['permission'])
|
||||||
|
self.assertIsNotNone(repo['encrypted'])
|
||||||
|
self.assertIsNotNone(repo['user'])
|
||||||
|
self.assertIsNotNone(repo['last_modified'])
|
||||||
|
self.assertIsNotNone(repo['repo_desc'])
|
||||||
|
self.assertIsNotNone(repo['group_id'])
|
||||||
|
self.assertIsNotNone(repo['repo_name'])
|
||||||
|
|
||||||
|
def testListBesharedLibrariesApi(self):
|
||||||
|
res = self.requests.get(BESHARED_LIBRARIES_URL)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
for repo in json:
|
||||||
|
self.assertIsNotNone(repo['user'])
|
||||||
|
self.assertIsNotNone(repo['repo_id'])
|
||||||
|
self.assertIsNotNone(repo['share_type'])
|
||||||
|
self.assertIsNotNone(repo['permission'])
|
||||||
|
self.assertIsNotNone(repo['encrypted'])
|
||||||
|
self.assertIsNotNone(repo['last_modified'])
|
||||||
|
self.assertIsNotNone(repo['repo_desc'])
|
||||||
|
self.assertIsNotNone(repo['group_id'])
|
||||||
|
self.assertIsNotNone(repo['repo_name'])
|
||||||
|
self.assertIsNotNone(repo['is_virtual'])
|
||||||
|
|
||||||
|
def testShareLibraryApi(self):
|
||||||
|
data = { 'share_type': 'group', 'user': USERNAME, 'group_id': self.gid , \
|
||||||
|
'permission': 'rw' }
|
||||||
|
slurl = SHARED_LIBRARIES_URL + str(self.rid) + u'/'
|
||||||
|
res = self.requests.put(slurl, params=data)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, u'"success"')
|
||||||
|
|
||||||
|
def testUnShareLibraryApi(self):
|
||||||
|
data = { 'share_type': 'group', 'user': USERNAME, 'group_id': self.gid , \
|
||||||
|
'permission': 'rw' }
|
||||||
|
slurl = SHARED_LIBRARIES_URL + str(self.rid) + u'/'
|
||||||
|
data = { 'share_type': 'group', 'user': USERNAME, 'group_id': self.gid }
|
||||||
|
self.requests.put(slurl, params=data)
|
||||||
|
res = self.requests.delete(slurl, params=data)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, u'"success"')
|
||||||
|
|
||||||
|
def testListSharedFilesApi(self):
|
||||||
|
res = self.requests.get(SHARED_FILES_URL)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['priv_share_in'])
|
||||||
|
self.assertIsNotNone(json['priv_share_out'])
|
||||||
|
|
||||||
|
for sfiles in zip(json['priv_share_in'], json['priv_share_out']):
|
||||||
|
for sfile in sfiles:
|
||||||
|
self.assertIsNotNone(sfile['s_type'])
|
||||||
|
self.assertIsNotNone(sfile['repo_id'])
|
||||||
|
self.assertIsNotNone(sfile['permission'])
|
||||||
|
self.assertIsNotNone(sfile['to_user'])
|
||||||
|
self.assertIsNotNone(sfile['token'])
|
||||||
|
self.assertIsNotNone(sfile['from_user'])
|
||||||
|
self.assertIsNotNone(sfile['path'])
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(verbosity=2)
|
@@ -9,32 +9,34 @@ def suite():
|
|||||||
|
|
||||||
from integration_api.ping import PingApiTestCase
|
from integration_api.ping import PingApiTestCase
|
||||||
from integration_api.authping import AuthPingApiTestCase
|
from integration_api.authping import AuthPingApiTestCase
|
||||||
from integration_api.account import AccountApiTestCase
|
from integration_api.accounts import AccountsApiTestCase
|
||||||
from integration_api.usermsgs import UserMsgsApiTestCase
|
from integration_api.usermsgs import UserMsgsApiTestCase
|
||||||
from integration_api.groups import GroupsApiTestCase
|
from integration_api.groups import GroupsApiTestCase
|
||||||
from integration_api.gmembers import GroupMemeberApiTestCase
|
from integration_api.gmembers import GroupMemeberApiTestCase
|
||||||
from integration_api.groupmsgs import GroupMsgsApiTestCase
|
from integration_api.groupmsgs import GroupMsgsApiTestCase
|
||||||
from integration_api.avatar import AvatarApiTestCase
|
from integration_api.avatar import AvatarApiTestCase
|
||||||
|
|
||||||
from integration_api.library import LibraryApiTestCase
|
from integration_api.libraries import LibrariesApiTestCase
|
||||||
from integration_api.files import FilesApiTestCase
|
from integration_api.files import FilesApiTestCase
|
||||||
from integration_api.starredfiles import StarredFilesApiTestCase
|
from integration_api.starredfiles import StarredFilesApiTestCase
|
||||||
from integration_api.directories import DirectoriesApiTestCase
|
from integration_api.directories import DirectoriesApiTestCase
|
||||||
|
from integration_api.shares import SharesApiTestCase
|
||||||
from integration_api.misc import MiscApiTestCase
|
from integration_api.misc import MiscApiTestCase
|
||||||
|
|
||||||
integration_api_suite = unittest.TestSuite((\
|
integration_api_suite = unittest.TestSuite((\
|
||||||
unittest.makeSuite(PingApiTestCase),
|
unittest.makeSuite(PingApiTestCase),
|
||||||
unittest.makeSuite(AuthPingApiTestCase),
|
unittest.makeSuite(AuthPingApiTestCase),
|
||||||
unittest.makeSuite(AccountApiTestCase),
|
unittest.makeSuite(AccountsApiTestCase),
|
||||||
unittest.makeSuite(UserMsgsApiTestCase),
|
unittest.makeSuite(UserMsgsApiTestCase),
|
||||||
unittest.makeSuite(GroupsApiTestCase),
|
unittest.makeSuite(GroupsApiTestCase),
|
||||||
unittest.makeSuite(GroupMemeberApiTestCase),
|
unittest.makeSuite(GroupMemeberApiTestCase),
|
||||||
unittest.makeSuite(GroupMsgsApiTestCase),
|
unittest.makeSuite(GroupMsgsApiTestCase),
|
||||||
unittest.makeSuite(AvatarApiTestCase),
|
unittest.makeSuite(AvatarApiTestCase),
|
||||||
unittest.makeSuite(LibraryApiTestCase),
|
unittest.makeSuite(LibrariesApiTestCase),
|
||||||
unittest.makeSuite(FilesApiTestCase),
|
unittest.makeSuite(FilesApiTestCase),
|
||||||
unittest.makeSuite(StarredFilesApiTestCase),
|
unittest.makeSuite(StarredFilesApiTestCase),
|
||||||
unittest.makeSuite(DirectoriesApiTestCase),
|
unittest.makeSuite(DirectoriesApiTestCase),
|
||||||
|
unittest.makeSuite(SharesApiTestCase),
|
||||||
unittest.makeSuite(MiscApiTestCase),
|
unittest.makeSuite(MiscApiTestCase),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user