mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-10 11:21:29 +00:00
[tests] add web api test for files
This commit is contained in:
180
tests/integration_api/files.py
Normal file
180
tests/integration_api/files.py
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
from integration_api import DEFAULT_LIBRARY_URL, get_authed_instance
|
||||||
|
from integration_api import LIBRARIES_URL
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class FilesApiTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.requests = get_authed_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/'
|
||||||
|
|
||||||
|
def testCreateFileApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test.c'
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
self.assertEqual(res.status_code, 201)
|
||||||
|
self.assertEqual(res.text, '"success"')
|
||||||
|
|
||||||
|
def testRenameFileApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test2.c'
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
data = { 'operation': 'rename', 'newname': 'test.c' }
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)"')
|
||||||
|
|
||||||
|
def testRemoveFileApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test2.c'
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
res = self.requests.delete(furl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, '"success"')
|
||||||
|
|
||||||
|
def testMoveFileApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test2.c'
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
#todo: create another repo here, and use is as dst_repo
|
||||||
|
data = { 'operation': 'move', 'dst_repo': self.rid, 'dst_dir': '/'}
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, '"success"')
|
||||||
|
|
||||||
|
def testCopyFileApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test2.c'
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
#todo: create another repo here, and use is as dst_repo
|
||||||
|
fopurl = self.rurl + u'fileops/copy/?p=/'
|
||||||
|
data = { 'file_names': 'test2.c', 'dst_repo': self.rid, 'dst_dir': '/'}
|
||||||
|
res = self.requests.post(fopurl, data=data)
|
||||||
|
self.assertEqual(res.text, '"success"')
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertEqual(res.text, '"success"')
|
||||||
|
|
||||||
|
def testDownloadFileApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test.c'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
res = self.requests.get(furl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/test.c"')
|
||||||
|
|
||||||
|
def testDownloadFileFromHistoryApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + '?p=/test.c'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fhurl = self.furl + u'history/?p=/test.c'
|
||||||
|
res = self.requests.get(fhurl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
commit_id = json['commits'][0]['id']
|
||||||
|
self.assertIsNotNone(commit_id)
|
||||||
|
fcurl = self.furl + u'revision/?p=/test.c&commit_id=' + commit_id
|
||||||
|
res = self.requests.get(fcurl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/test.c"')
|
||||||
|
|
||||||
|
def testGetFileDetailApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + '?p=/test.c'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fdurl = self.furl + u'detail/?p=/test.c'
|
||||||
|
res = self.requests.get(fdurl)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
json = res.json()
|
||||||
|
self.assertIsNotNone(json)
|
||||||
|
self.assertIsNotNone(json['id'])
|
||||||
|
self.assertIsNotNone(json['mtime'])
|
||||||
|
self.assertIsNotNone(json['type'])
|
||||||
|
self.assertIsNotNone(json['name'])
|
||||||
|
self.assertIsNotNone(json['size'])
|
||||||
|
|
||||||
|
def testGetFileHistoryApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + '?p=/test.c'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
fhurl = self.furl + u'history/?p=/test.c'
|
||||||
|
res = self.requests.get(fhurl)
|
||||||
|
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 testGetUploadLinkApi(self):
|
||||||
|
upload_url = self.rurl + u'upload-link/'
|
||||||
|
res = self.requests.get(upload_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/upload-api/\w{8,8}"')
|
||||||
|
|
||||||
|
def testGetUpdatainkApi(self):
|
||||||
|
update_url = self.rurl + u'update-link/'
|
||||||
|
res = self.requests.get(update_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/update-api/\w{8,8}"')
|
||||||
|
|
||||||
|
def testUploadApi(self):
|
||||||
|
furl = self.furl + u'?p=/test_upload.c'
|
||||||
|
res = self.requests.delete(furl)
|
||||||
|
upload_url = self.rurl + u'upload-link/'
|
||||||
|
res = self.requests.get(upload_url)
|
||||||
|
import re
|
||||||
|
upload_api_url = re.match(r'"(.*)"', res.text).group(1)
|
||||||
|
#target_file must contains its parent dir path
|
||||||
|
files = { 'file': ('test_upload'+'.c', 'int main(){return0;}\n'), \
|
||||||
|
'parent_dir': '/' }
|
||||||
|
res = self.requests.post(upload_api_url, files=files)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'\w{40,40}')
|
||||||
|
|
||||||
|
def testUpdateApi(self):
|
||||||
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + u'?p=/test_update.c'
|
||||||
|
res = self.requests.post(furl, data=data)
|
||||||
|
# call update-link
|
||||||
|
update_url = self.rurl + u'update-link/'
|
||||||
|
res = self.requests.get(update_url)
|
||||||
|
import re
|
||||||
|
update_api_url = re.match(r'"(.*)"', res.text).group(1)
|
||||||
|
#target_file must contains its parent dir path
|
||||||
|
files = { 'file': ('test_update.c', 'int main(){return0;}\n'), \
|
||||||
|
'target_file': '/test_update.c' }
|
||||||
|
res = self.requests.post(update_api_url, files=files)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'\w{40,40}')
|
||||||
|
|
||||||
|
def testGetUploadBlocksLinkApi(self):
|
||||||
|
upload_blks_url = self.rurl + u'upload-blks-link/'
|
||||||
|
res = self.requests.get(upload_blks_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/upload-blks-api/\w{8,8}"')
|
||||||
|
|
||||||
|
def testGetUpdateBlocksLinkApi(self):
|
||||||
|
update_blks_url = self.rurl + u'update-blks-link/'
|
||||||
|
res = self.requests.get(update_blks_url)
|
||||||
|
self.assertEqual(res.status_code, 200)
|
||||||
|
self.assertRegexpMatches(res.text, r'"http(.*)/update-blks-api/\w{8,8}"')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(verbosity=2)
|
@@ -128,12 +128,11 @@ class LibraryApiTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(res.text, '"success"')
|
self.assertEqual(res.text, '"success"')
|
||||||
|
|
||||||
def testCheckOrCreateSubLibraryApi(self):
|
def testCheckOrCreateSubLibraryApi(self):
|
||||||
if True: #broken
|
|
||||||
return
|
|
||||||
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
res = self.requests.post(DEFAULT_LIBRARY_URL)
|
||||||
repo_id = res.json()['repo_id']
|
repo_id = res.json()['repo_id']
|
||||||
sub_repo_url = LIBRARIES_URL + repo_id + u'/dir/sub_repo/?p=\/&name=sub_lib'
|
params = { 'p': '/', 'name': 'sub_lib' }
|
||||||
res = self.requests.get(sub_repo_url)
|
sub_repo_url = LIBRARIES_URL + repo_id + u'/dir/sub_repo/'
|
||||||
|
res = self.requests.get(sub_repo_url, params=params)
|
||||||
json = res.json()
|
json = res.json()
|
||||||
self.assertEqual(res.status_code, 200)
|
self.assertEqual(res.status_code, 200)
|
||||||
self.assertIsNotNone(json)
|
self.assertIsNotNone(json)
|
||||||
@@ -198,7 +197,7 @@ class LibraryApiTestCase(unittest.TestCase):
|
|||||||
self.assertIsNotNone(repo['origin_repo_name'])
|
self.assertIsNotNone(repo['origin_repo_name'])
|
||||||
self.assertIsNotNone(repo['last_modify'])
|
self.assertIsNotNone(repo['last_modify'])
|
||||||
self.assertIsNotNone(repo['no_local_history'])
|
self.assertIsNotNone(repo['no_local_history'])
|
||||||
self.assertIsNotNone(repo['head_branch'])
|
#self.assertIsNotNone(repo['head_branch'])
|
||||||
self.assertIsNotNone(repo['last_sync_time'])
|
self.assertIsNotNone(repo['last_sync_time'])
|
||||||
self.assertIsNotNone(repo['id'])
|
self.assertIsNotNone(repo['id'])
|
||||||
self.assertIsNotNone(repo['size'])
|
self.assertIsNotNone(repo['size'])
|
||||||
@@ -209,9 +208,9 @@ class LibraryApiTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(repo['is_virtual'], True)
|
self.assertEqual(repo['is_virtual'], True)
|
||||||
self.assertIsNotNone(repo['origin_repo_id'])
|
self.assertIsNotNone(repo['origin_repo_id'])
|
||||||
self.assertIsNotNone(repo['version'])
|
self.assertIsNotNone(repo['version'])
|
||||||
self.assertIsNotNone(repo['random_key'])
|
#self.assertIsNotNone(repo['random_key'])
|
||||||
self.assertIsNotNone(repo['is_original_owner'])
|
self.assertIsNotNone(repo['is_original_owner'])
|
||||||
self.assertIsNotNone(repo['shared_email'])
|
#self.assertIsNotNone(repo['shared_email'])
|
||||||
self.assertIsNotNone(repo['enc_version'])
|
self.assertIsNotNone(repo['enc_version'])
|
||||||
self.assertIsNotNone(repo['head_cmmt_id'])
|
self.assertIsNotNone(repo['head_cmmt_id'])
|
||||||
#self.assertIsNotNone(repo['desc'])
|
#self.assertIsNotNone(repo['desc'])
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
from integration_api import STARREDFILES_URL, get_authed_instance
|
from integration_api import STARREDFILES_URL, get_authed_instance
|
||||||
|
from integration_api import DEFAULT_LIBRARY_URL, LIBRARIES_URL
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class StarredFilesApiTestCase(unittest.TestCase):
|
class StarredFilesApiTestCase(unittest.TestCase):
|
||||||
@@ -6,27 +7,35 @@ class StarredFilesApiTestCase(unittest.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.requests = get_authed_instance()
|
self.requests = get_authed_instance()
|
||||||
self.assertIsNotNone(self.requests)
|
self.assertIsNotNone(self.requests)
|
||||||
#todo upload file and star a file here
|
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/'
|
||||||
|
|
||||||
def testListStarredFilesApi(self):
|
def testListStarredFilesApi(self):
|
||||||
res = self.requests.get(STARREDFILES_URL)
|
res = self.requests.get(STARREDFILES_URL)
|
||||||
self.assertEqual(res.status_code, 200)
|
self.assertEqual(res.status_code, 200)
|
||||||
json = res.json()
|
json = res.json()
|
||||||
self.assertIsNotNone(json)
|
self.assertIsNotNone(json)
|
||||||
self.assertEqual(len(json), 0)
|
|
||||||
|
|
||||||
def testStarFileApi(self):
|
def testStarFileApi(self):
|
||||||
data = { 'repo_id': '', 'p': '' }
|
data = { 'operation': 'create' }
|
||||||
|
furl = self.furl + '?p=/test.c'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
data = { 'repo_id': self.rid, 'p': '/test.c' }
|
||||||
res = self.requests.post(STARREDFILES_URL, data=data)
|
res = self.requests.post(STARREDFILES_URL, data=data)
|
||||||
self.assertEqual(res.status_code, 201)
|
self.assertEqual(res.status_code, 201)
|
||||||
self.assertEqual(res.text, u'"success"')
|
self.assertEqual(res.text, u'"success"')
|
||||||
|
|
||||||
def testUnStarFileApi(self):
|
def testUnStarFileApi(self):
|
||||||
data = { 'repo_id': '', 'p': '' }
|
data = { 'operation': 'create' }
|
||||||
res = self.requests.delete(STARREDFILES_URL, data=data)
|
furl = self.furl + '?p=/test.c'
|
||||||
|
self.requests.post(furl, data=data)
|
||||||
|
data = { 'repo_id': self.rid, 'p': '/test.c' }
|
||||||
|
res = self.requests.post(STARREDFILES_URL, data=data)
|
||||||
|
res = self.requests.delete(STARREDFILES_URL, params=data)
|
||||||
self.assertEqual(res.status_code, 200)
|
self.assertEqual(res.status_code, 200)
|
||||||
self.assertEqual(res.text, u'"success"')
|
self.assertEqual(res.text, u'"success"')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main(verbosity=2)
|
unittest.main(verbosity=2)
|
||||||
|
@@ -17,6 +17,7 @@ def suite():
|
|||||||
from integration_api.avatar import AvatarApiTestCase
|
from integration_api.avatar import AvatarApiTestCase
|
||||||
|
|
||||||
from integration_api.library import LibraryApiTestCase
|
from integration_api.library import LibraryApiTestCase
|
||||||
|
from integration_api.files import FilesApiTestCase
|
||||||
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((\
|
||||||
@@ -29,7 +30,8 @@ def suite():
|
|||||||
unittest.makeSuite(GroupMsgsApiTestCase),
|
unittest.makeSuite(GroupMsgsApiTestCase),
|
||||||
unittest.makeSuite(AvatarApiTestCase),
|
unittest.makeSuite(AvatarApiTestCase),
|
||||||
unittest.makeSuite(LibraryApiTestCase),
|
unittest.makeSuite(LibraryApiTestCase),
|
||||||
#unittest.makeSuite(StarredFilesApiTestCase),
|
unittest.makeSuite(FilesApiTestCase),
|
||||||
|
unittest.makeSuite(StarredFilesApiTestCase),
|
||||||
unittest.makeSuite(MiscApiTestCase),
|
unittest.makeSuite(MiscApiTestCase),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user