mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-12 21:30:39 +00:00
[tests] add web api test for libraries
This commit is contained in:
@@ -29,8 +29,13 @@ GROUPMSGS_URL = BASE_URL + u'/api2/group/msgs/'
|
|||||||
GROUPMSGS_NREPLY_URL = BASE_URL + u'/api2/new_replies/'
|
GROUPMSGS_NREPLY_URL = BASE_URL + u'/api2/new_replies/'
|
||||||
AVATAR_BASE_URL = BASE_URL + u'/api2/avatars/'
|
AVATAR_BASE_URL = BASE_URL + u'/api2/avatars/'
|
||||||
|
|
||||||
|
DEFAULT_LIBRARY_URL = BASE_URL + u'/api2/default-repo/'
|
||||||
|
LIBRARIES_URL = BASE_URL + u'/api2/repos/'
|
||||||
|
VIRTUAL_LIBRARIES_URL = BASE_URL + u'/api2/virtual-repos/'
|
||||||
|
|
||||||
STARREDFILES_URL = BASE_URL + u'/api2/starredfiles/'
|
STARREDFILES_URL = BASE_URL + u'/api2/starredfiles/'
|
||||||
|
|
||||||
|
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/'
|
||||||
MISC_LIST_EVENTS_URL = BASE_URL + u'/api2/events/'
|
MISC_LIST_EVENTS_URL = BASE_URL + u'/api2/events/'
|
||||||
|
|
||||||
|
224
tests/integration_api/library.py
Normal file
224
tests/integration_api/library.py
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
from integration_api import LIBRARIES_URL, DEFAULT_LIBRARY_URL
|
||||||
|
from integration_api import VIRTUAL_LIBRARIES_URL, get_authed_instance
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class LibraryApiTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.requests = get_authed_instance()
|
||||||
|
self.assertIsNotNone(self.requests)
|
||||||
|
|
||||||
|
def testGetDefaultLibraryApi(self):
|
||||||
|
res = self.requests.get(DEFAULT_LIBRARY_URL)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['repo_id'])
|
||||||
|
self.assertIsNotNone(json['exists'])
|
||||||
|
|
||||||
|
def testCreateDefaultLibraryApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['repo_id'])
|
||||||
|
self.assertEqual(res.json()['exists'], True)
|
||||||
|
res = self.requests.get(DEFAULT_LIBRARY_URL)
|
||||||
|
self.assertEqual(res.json()['exists'], True)
|
||||||
|
|
||||||
|
def testListLibrariesApi(self):
|
||||||
|
res = self.requests.get(LIBRARIES_URL)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
for repo in json:
|
||||||
|
self.assertIsNotNone(repo['permission'])
|
||||||
|
self.assertIsNotNone(repo['encrypted'])
|
||||||
|
self.assertIsNotNone(repo['mtime'])
|
||||||
|
self.assertIsNotNone(repo['owner'])
|
||||||
|
self.assertIsNotNone(repo['id'])
|
||||||
|
self.assertIsNotNone(repo['size'])
|
||||||
|
self.assertIsNotNone(repo['name'])
|
||||||
|
self.assertIsNotNone(repo['type'])
|
||||||
|
# self.assertIsNotNone(repo['virtual']) #allow null for pub-repo
|
||||||
|
self.assertIsNotNone(repo['desc'])
|
||||||
|
self.assertIsNotNone(repo['root'])
|
||||||
|
|
||||||
|
def testGetLibraryInfoApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
repo_url = LIBRARIES_URL + repo_id + u'/'
|
||||||
|
res = self.requests.get(repo_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
repo = res.json()
|
||||||
|
self.assertIsNotNone(repo)
|
||||||
|
self.assertIsNotNone(repo['encrypted'])
|
||||||
|
self.assertIsNotNone(repo['mtime'])
|
||||||
|
self.assertIsNotNone(repo['owner'])
|
||||||
|
self.assertIsNotNone(repo['id'])
|
||||||
|
self.assertIsNotNone(repo['size'])
|
||||||
|
self.assertIsNotNone(repo['name'])
|
||||||
|
self.assertIsNotNone(repo['root'])
|
||||||
|
self.assertIsNotNone(repo['desc'])
|
||||||
|
self.assertIsNotNone(repo['type'])
|
||||||
|
#self.assertIsNotNone(repo['password_need']) #allow null here
|
||||||
|
|
||||||
|
def testGetLibraryOwnerApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
repo_owner_url = LIBRARIES_URL + repo_id + u'/owner/'
|
||||||
|
res = self.requests.get(repo_owner_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['owner'])
|
||||||
|
|
||||||
|
def testGetLibraryHistoryApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
repo_history_url = LIBRARIES_URL + repo_id + u'/history/'
|
||||||
|
res = self.requests.get(repo_history_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['commits'])
|
||||||
|
for commit in json['commits']:
|
||||||
|
self.assertIsNotNone(commit['rev_file_size'])
|
||||||
|
#self.assertIsNotNone(commit['rev_file_id']) #allow null
|
||||||
|
self.assertIsNotNone(commit['ctime'])
|
||||||
|
self.assertIsNotNone(commit['creator_name'])
|
||||||
|
self.assertIsNotNone(commit['creator'])
|
||||||
|
self.assertIsNotNone(commit['root_id'])
|
||||||
|
#self.assertIsNotNone(commit['rev_renamed_old_path']) #allow null
|
||||||
|
#self.assertIsNotNone(commit['parent_id']) #allow null
|
||||||
|
self.assertIsNotNone(commit['new_merge'])
|
||||||
|
self.assertIsNotNone(commit['repo_id'])
|
||||||
|
self.assertIsNotNone(commit['desc'])
|
||||||
|
self.assertIsNotNone(commit['id'])
|
||||||
|
self.assertIsNotNone(commit['conflict'])
|
||||||
|
#self.assertIsNotNone(commit['second_parent_id']) #allow null
|
||||||
|
|
||||||
|
def testCreateLibraryApi(self):
|
||||||
|
data = { 'name': 'test' }
|
||||||
|
res = self.requests.post(LIBRARIES_URL, data=data)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['encrypted'])
|
||||||
|
self.assertIsNotNone(json['enc_version'])
|
||||||
|
self.assertIsNotNone(json['repo_id'])
|
||||||
|
self.assertIsNotNone(json['magic'])
|
||||||
|
self.assertIsNotNone(json['relay_id'])
|
||||||
|
self.assertIsNotNone(json['repo_version'])
|
||||||
|
self.assertIsNotNone(json['relay_addr'])
|
||||||
|
self.assertIsNotNone(json['token'])
|
||||||
|
self.assertIsNotNone(json['relay_port'])
|
||||||
|
self.assertIsNotNone(json['random_key'])
|
||||||
|
self.assertIsNotNone(json['email'])
|
||||||
|
self.assertIsNotNone(json['repo_name'])
|
||||||
|
|
||||||
|
def testRemoveLibraryApi(self):
|
||||||
|
data = { 'name': 'test' }
|
||||||
|
res = self.requests.post(LIBRARIES_URL, data=data)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
repo_url = LIBRARIES_URL + repo_id + u'/'
|
||||||
|
res = self.requests.delete(repo_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, '"success"')
|
||||||
|
|
||||||
|
def testCheckOrCreateSubLibraryApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
sub_repo_url = LIBRARIES_URL + repo_id + u'/dir/sub_repo/?p=\/&name=sub_lib'
|
||||||
|
res = self.requests.get(sub_repo_url)
|
||||||
|
json = res.json()
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['sub_repo_id'])
|
||||||
|
|
||||||
|
def testEncrptyOrDecrypyLibraryApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
repo_url = LIBRARIES_URL + repo_id + u'/'
|
||||||
|
data = { 'password': 'test' }
|
||||||
|
res = self.requests.post(repo_url, data)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, '"success"')
|
||||||
|
|
||||||
|
def testPublicizeLibraryApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
publicize_repo_url = LIBRARIES_URL + repo_id + u'/public/'
|
||||||
|
res = self.requests.post(publicize_repo_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertIsNotNone(res.json())
|
||||||
|
self.assertEqual(res.json()['success'], True)
|
||||||
|
|
||||||
|
def testDepublicizeLibraryApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
publicize_repo_url = LIBRARIES_URL + repo_id + u'/public/'
|
||||||
|
self.requests.post(publicize_repo_url)
|
||||||
|
res = self.requests.delete(publicize_repo_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertIsNotNone(res.json())
|
||||||
|
self.assertEqual(res.json()['success'], True)
|
||||||
|
|
||||||
|
def testFetchLibraryDownloadInfoApi(self):
|
||||||
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
|
repo_id = res.json()['repo_id']
|
||||||
|
download_info_repo_url = LIBRARIES_URL + repo_id + u'/download-info/'
|
||||||
|
res = self.requests.get(download_info_repo_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
#self.assertIsNotNone(json['applet_root']) #does it exist?
|
||||||
|
self.assertIsNotNone(json['relay_addr'])
|
||||||
|
self.assertIsNotNone(json['token'])
|
||||||
|
self.assertIsNotNone(json['repo_id'])
|
||||||
|
self.assertIsNotNone(json['relay_port'])
|
||||||
|
self.assertIsNotNone(json['encrypted'])
|
||||||
|
self.assertIsNotNone(json['repo_name'])
|
||||||
|
self.assertIsNotNone(json['relay_id'])
|
||||||
|
self.assertIsNotNone(json['email'])
|
||||||
|
|
||||||
|
def testListVirtualLibrariesApi(self):
|
||||||
|
res = self.requests.get(VIRTUAL_LIBRARIES_URL)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['virtual-repos'])
|
||||||
|
for repo in json['virtual-repos']:
|
||||||
|
self.assertIsNotNone(repo['virtual_perm'])
|
||||||
|
#self.assertIsNotNone(repo['store_id'])
|
||||||
|
self.assertIsNotNone(repo['worktree_invalid'])
|
||||||
|
self.assertIsNotNone(repo['encrypted'])
|
||||||
|
self.assertIsNotNone(repo['origin_repo_name'])
|
||||||
|
self.assertIsNotNone(repo['last_modify'])
|
||||||
|
self.assertIsNotNone(repo['no_local_history'])
|
||||||
|
self.assertIsNotNone(repo['head_branch'])
|
||||||
|
self.assertIsNotNone(repo['last_sync_time'])
|
||||||
|
self.assertIsNotNone(repo['id'])
|
||||||
|
self.assertIsNotNone(repo['size'])
|
||||||
|
#self.assertIsNotNone(repo['share_permission'])
|
||||||
|
self.assertIsNotNone(repo['worktree_changed'])
|
||||||
|
self.assertIsNotNone(repo['worktree_checktime'])
|
||||||
|
self.assertIsNotNone(repo['origin_path'])
|
||||||
|
self.assertEqual(repo['is_virtual'], True)
|
||||||
|
self.assertIsNotNone(repo['origin_repo_id'])
|
||||||
|
self.assertIsNotNone(repo['version'])
|
||||||
|
self.assertIsNotNone(repo['random_key'])
|
||||||
|
self.assertIsNotNone(repo['is_original_owner'])
|
||||||
|
self.assertIsNotNone(repo['shared_email'])
|
||||||
|
self.assertIsNotNone(repo['enc_version'])
|
||||||
|
self.assertIsNotNone(repo['head_cmmt_id'])
|
||||||
|
#self.assertIsNotNone(repo['desc'])
|
||||||
|
self.assertIsNotNone(repo['index_corrupted'])
|
||||||
|
#self.assertIsNotNone(repo['magic'])
|
||||||
|
self.assertIsNotNone(repo['name'])
|
||||||
|
#self.assertIsNotNone(repo['worktree'])
|
||||||
|
self.assertIsNotNone(repo['auto_sync'])
|
||||||
|
#self.assertIsNotNone(repo['relay_id'])
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(verbosity=2)
|
@@ -1,5 +1,5 @@
|
|||||||
from integration_api import MISC_LIST_EVENTS_URL, MISC_LIST_GROUP_AND_CONTACTS_URL
|
from integration_api import MISC_LIST_EVENTS_URL, MISC_LIST_GROUP_AND_CONTACTS_URL
|
||||||
from integration_api import get_authed_instance, IS_PRO
|
from integration_api import get_authed_instance, IS_PRO, MISC_SEARCH_URL
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class MiscApiTestCase(unittest.TestCase):
|
class MiscApiTestCase(unittest.TestCase):
|
||||||
@@ -20,6 +20,25 @@ class MiscApiTestCase(unittest.TestCase):
|
|||||||
self.assertIsNotNone(json['gmsgnum'])
|
self.assertIsNotNone(json['gmsgnum'])
|
||||||
self.assertIsNotNone(json['newreplies'])
|
self.assertIsNotNone(json['newreplies'])
|
||||||
|
|
||||||
|
def testSearchApi(self):
|
||||||
|
# if not pro, skip this
|
||||||
|
if (IS_PRO == False):
|
||||||
|
return
|
||||||
|
res = self.requests.get(MISC_SEARCH_URL + u'?q=*')
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['has_more'])
|
||||||
|
self.assertIsNotNone(json['total'])
|
||||||
|
self.assertIsNotNone(json['results'])
|
||||||
|
for result in json['results']:
|
||||||
|
self.assertIsNotNone(result['repo_id'])
|
||||||
|
self.assertIsNotNone(result['name'])
|
||||||
|
self.assertIsNotNone(result['old'])
|
||||||
|
self.assertIsNotNone(result['last_modified'])
|
||||||
|
self.assertIsNotNone(result['fullpath'])
|
||||||
|
self.assertIsNotNone(result['size'])
|
||||||
|
|
||||||
def testListEventsApi(self):
|
def testListEventsApi(self):
|
||||||
# if not pro, skip this
|
# if not pro, skip this
|
||||||
if (IS_PRO == False):
|
if (IS_PRO == False):
|
||||||
|
@@ -16,6 +16,7 @@ def suite():
|
|||||||
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.starredfiles import StarredFilesApiTestCase
|
from integration_api.starredfiles import StarredFilesApiTestCase
|
||||||
from integration_api.misc import MiscApiTestCase
|
from integration_api.misc import MiscApiTestCase
|
||||||
integration_api_suite = unittest.TestSuite((\
|
integration_api_suite = unittest.TestSuite((\
|
||||||
@@ -27,6 +28,7 @@ def suite():
|
|||||||
unittest.makeSuite(GroupMemeberApiTestCase),
|
unittest.makeSuite(GroupMemeberApiTestCase),
|
||||||
unittest.makeSuite(GroupMsgsApiTestCase),
|
unittest.makeSuite(GroupMsgsApiTestCase),
|
||||||
unittest.makeSuite(AvatarApiTestCase),
|
unittest.makeSuite(AvatarApiTestCase),
|
||||||
|
unittest.makeSuite(LibraryApiTestCase),
|
||||||
#unittest.makeSuite(StarredFilesApiTestCase),
|
#unittest.makeSuite(StarredFilesApiTestCase),
|
||||||
unittest.makeSuite(MiscApiTestCase),
|
unittest.makeSuite(MiscApiTestCase),
|
||||||
))
|
))
|
||||||
|
Reference in New Issue
Block a user