mirror of
https://github.com/haiwen/seahub.git
synced 2025-06-25 22:54:07 +00:00
169 lines
6.7 KiB
Python
169 lines
6.7 KiB
Python
#coding: UTF-8
|
|
|
|
import random
|
|
import re
|
|
from urllib import urlencode, quote
|
|
|
|
from apitestbase import ApiTestCase, DEFAULT_LIBRARY_URL, apiurl
|
|
|
|
DEFAULT_REPO_URL = '/api2/default-repo/'
|
|
REPO_URL = '/api2/repos/%s/'
|
|
|
|
class FilesApiTestCase(ApiTestCase):
|
|
def setUp(self):
|
|
res = self.post(apiurl(DEFAULT_REPO_URL)).json()
|
|
self.repo_id = res['repo_id']
|
|
self.repo_url = apiurl(REPO_URL % self.repo_id)
|
|
self.file_url = self.repo_url + u'file/'
|
|
|
|
def create_file(self):
|
|
data = {'operation': 'create'}
|
|
name = '文件%s.txt' % random.randint(1, 10000)
|
|
query = '?p=/%s' % quote(name)
|
|
furl = self.file_url + query
|
|
res = self.post(furl, data=data, expected=201)
|
|
self.assertEqual(res.text, '"success"')
|
|
return name, furl
|
|
|
|
def test_create_file(self):
|
|
self.create_file()
|
|
|
|
# def test_rename_file(self):
|
|
# name, furl = self.create_file()
|
|
# data = {
|
|
# 'operation': 'rename',
|
|
# 'newname': name + str(random.randint(1, 10000)),
|
|
# }
|
|
# res = self.post(furl, data=data)
|
|
# self.assertRegexpMatches(res.text, r'"http(.*)"')
|
|
|
|
# def test_remove_file(self):
|
|
# _, furl = self.create_file()
|
|
# res = self.delete(furl)
|
|
# self.assertEqual(res.text, '"success"')
|
|
|
|
# def test_move_file(self):
|
|
# _, furl = self.create_file()
|
|
# # TODO: create another repo here, and use it as dst_repo
|
|
# data = {
|
|
# 'operation': 'move',
|
|
# 'dst_repo': self.repo_id,
|
|
# 'dst_dir': '/'
|
|
# }
|
|
# res = self.post(furl, data=data)
|
|
# self.assertEqual(res.text, '"success"')
|
|
|
|
# def test_copy_file(self):
|
|
# fname, _ = self.create_file()
|
|
# # TODO: create another repo here, and use it as dst_repo
|
|
# fopurl = self.repo_url + u'fileops/copy/?p=/'
|
|
# data = {
|
|
# 'file_names': fname,
|
|
# 'dst_repo': self.repo_id,
|
|
# 'dst_dir': '/'
|
|
# }
|
|
# res = self.post(fopurl, data=data)
|
|
# self.assertEqual(res.text, '"success"')
|
|
|
|
# def test_download_file(self):
|
|
# fname, furl = self.create_file()
|
|
# res = self.get(furl)
|
|
# self.assertRegexpMatches(res.text, '"http(.*)/%s"' % quote(fname))
|
|
|
|
# def test_download_file_from_history(self):
|
|
# fname, _ = self.create_file()
|
|
# file_history_url = self.file_url + u'history/?p=/%s' % quote(fname)
|
|
# res = self.get(file_history_url).json()
|
|
# commit_id = res['commits'][0]['id']
|
|
# self.assertEqual(len(commit_id), 40)
|
|
# data = {
|
|
# 'p': fname,
|
|
# 'commit_id': commit_id,
|
|
# }
|
|
# query = '?' + urlencode(data)
|
|
# res = self.get(self.file_url + query)
|
|
# self.assertEqual(res.status_code, 200)
|
|
# self.assertRegexpMatches(res.text, r'"http(.*)/%s"' % quote(fname))
|
|
|
|
# def test_get_file_detail(self):
|
|
# fname, _ = self.create_file()
|
|
# fdurl = self.file_url + u'detail/?p=/%s' % quote(fname)
|
|
# detail = self.get(fdurl).json()
|
|
# self.assertIsNotNone(detail)
|
|
# self.assertIsNotNone(detail['id'])
|
|
# self.assertIsNotNone(detail['mtime'])
|
|
# self.assertIsNotNone(detail['type'])
|
|
# self.assertIsNotNone(detail['name'])
|
|
# self.assertIsNotNone(detail['size'])
|
|
|
|
# def test_get_file_history(self):
|
|
# self.create_file()
|
|
# fhurl = self.file_url + u'history/?p=/test.c'
|
|
# history = self.get(fhurl).json()
|
|
# for commit in history['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 test_get_upload_link(self):
|
|
# upload_url = self.repo_url + u'upload-link/'
|
|
# res = self.get(upload_url)
|
|
# self.assertRegexpMatches(res.text, r'"http(.*)/upload-api/\w{8,8}"')
|
|
|
|
# def test_get_update_link(self):
|
|
# update_url = self.repo_url + u'update-link/'
|
|
# res = self.get(update_url)
|
|
# self.assertEqual(res.status_code, 200)
|
|
# self.assertRegexpMatches(res.text, r'"http(.*)/update-api/\w{8,8}"')
|
|
|
|
# def test_upload(self):
|
|
# furl = self.file_url + u'?p=/test_upload.c'
|
|
# res = self.delete(furl)
|
|
# upload_url = self.repo_url + u'upload-link/'
|
|
# res = self.get(upload_url)
|
|
# 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.post(upload_api_url, files=files)
|
|
# self.assertEqual(res.status_code, 200)
|
|
# self.assertRegexpMatches(res.text, r'\w{40,40}')
|
|
|
|
# def test_update(self):
|
|
# data = { 'operation': 'create' }
|
|
# furl = self.file_url + u'?p=/test_update.c'
|
|
# res = self.post(furl, data=data)
|
|
# # call update-link
|
|
# update_url = self.repo_url + u'update-link/'
|
|
# res = self.get(update_url)
|
|
# 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.post(update_api_url, files=files)
|
|
# self.assertEqual(res.status_code, 200)
|
|
# self.assertRegexpMatches(res.text, r'\w{40,40}')
|
|
|
|
# def test_get_upload_blocks_link(self):
|
|
# upload_blks_url = self.repo_url + u'upload-blks-link/'
|
|
# res = self.get(upload_blks_url)
|
|
# self.assertEqual(res.status_code, 200)
|
|
# self.assertRegexpMatches(res.text, r'"http(.*)/upload-blks-api/\w{8,8}"')
|
|
|
|
# def test_get_update_blocks_link(self):
|
|
# update_blks_url = self.repo_url + u'update-blks-link/'
|
|
# res = self.get(update_blks_url)
|
|
# self.assertEqual(res.status_code, 200)
|
|
# self.assertRegexpMatches(res.text, r'"http(.*)/update-blks-api/\w{8,8}"')
|