1
0
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:
Chilledheart
2014-08-28 11:35:19 +08:00
committed by lins05
parent ba84dc87b3
commit 878f9dfc5b
4 changed files with 251 additions and 1 deletions

View File

@@ -29,8 +29,13 @@ GROUPMSGS_URL = BASE_URL + u'/api2/group/msgs/'
GROUPMSGS_NREPLY_URL = BASE_URL + u'/api2/new_replies/'
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/'
MISC_SEARCH_URL = BASE_URL + u'/api2/search/'
MISC_LIST_GROUP_AND_CONTACTS_URL = BASE_URL + u'/api2/groupandcontacts/'
MISC_LIST_EVENTS_URL = BASE_URL + u'/api2/events/'

View 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)

View File

@@ -1,5 +1,5 @@
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
class MiscApiTestCase(unittest.TestCase):
@@ -20,6 +20,25 @@ class MiscApiTestCase(unittest.TestCase):
self.assertIsNotNone(json['gmsgnum'])
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):
# if not pro, skip this
if (IS_PRO == False):

View File

@@ -16,6 +16,7 @@ def suite():
from integration_api.groupmsgs import GroupMsgsApiTestCase
from integration_api.avatar import AvatarApiTestCase
from integration_api.library import LibraryApiTestCase
from integration_api.starredfiles import StarredFilesApiTestCase
from integration_api.misc import MiscApiTestCase
integration_api_suite = unittest.TestSuite((\
@@ -27,6 +28,7 @@ def suite():
unittest.makeSuite(GroupMemeberApiTestCase),
unittest.makeSuite(GroupMsgsApiTestCase),
unittest.makeSuite(AvatarApiTestCase),
unittest.makeSuite(LibraryApiTestCase),
#unittest.makeSuite(StarredFilesApiTestCase),
unittest.makeSuite(MiscApiTestCase),
))