1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-06 17:33:18 +00:00

update file api

1. return checked file name when creat a new file
2. update test
This commit is contained in:
lian
2016-06-20 18:18:34 +08:00
parent 8dba980b2e
commit 8de5551991
3 changed files with 83 additions and 1 deletions

View File

@@ -154,7 +154,8 @@ class FileView(APIView):
error_msg = 'Internal Server Error' error_msg = 'Internal Server Error'
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
file_info = self.get_file_info(username, repo_id, path) new_file_path = posixpath.join(parent_dir, new_file_name)
file_info = self.get_file_info(username, repo_id, new_file_path)
return Response(file_info) return Response(file_info)
if operation == 'rename': if operation == 'rename':

View File

@@ -8,6 +8,7 @@ from seaserv import seafile_api
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from seahub.test_utils import BaseTestCase from seahub.test_utils import BaseTestCase
from seahub.utils import check_filename_with_rename
from tests.common.utils import randstring from tests.common.utils import randstring
@@ -100,6 +101,22 @@ class DirViewTest(BaseTestCase):
# check new folder has been created # check new folder has been created
assert new_name == self.get_lib_folder_name(self.repo_id) assert new_name == self.get_lib_folder_name(self.repo_id)
def test_can_create_same_name_folder(self):
self.login_as(self.user)
folder_name = os.path.basename(self.folder_path.rstrip('/'))
new_name = check_filename_with_rename(self.repo_id, '/', folder_name)
# create file
data = {'operation': 'mkdir',}
resp = self.client.post(self.url + '?p=' + self.folder_path, data)
json_resp = json.loads(resp.content)
self.assertEqual(200, resp.status_code)
# check new folder has been created
assert new_name == json_resp['obj_name']
def test_create_folder_with_invalid_repo_perm(self): def test_create_folder_with_invalid_repo_perm(self):
# login as admin, then create dir in user's repo # login as admin, then create dir in user's repo
@@ -156,6 +173,31 @@ class DirViewTest(BaseTestCase):
# check old file has been renamed to new_name # check old file has been renamed to new_name
assert new_name == self.get_lib_folder_name(self.repo_id) assert new_name == self.get_lib_folder_name(self.repo_id)
def test_can_rename_folder_with_same_name(self):
self.login_as(self.user)
# check old folder exist
assert self.folder_name == self.get_lib_folder_name(self.repo_id)
# create a new folder
new_name = randstring(6)
data = {'operation': 'mkdir',}
resp = self.client.post(self.url + '?p=/' + new_name, data)
self.assertEqual(200, resp.status_code)
# rename new folder with the same name of old folder
old_folder_name = self.folder_name
checked_name = check_filename_with_rename(self.repo_id,
'/', old_folder_name)
data = {'operation': 'rename', 'newname': checked_name}
resp = self.client.post(self.url + '?p=/' + new_name, data)
self.assertEqual(200, resp.status_code)
# check old file has been renamed to new_name
json_resp = json.loads(resp.content)
print old_folder_name, new_name, checked_name
assert checked_name == json_resp['obj_name']
def test_rename_folder_with_invalid_repo_perm(self): def test_rename_folder_with_invalid_repo_perm(self):
# login as admin, then rename dir in user's repo # login as admin, then rename dir in user's repo

View File

@@ -8,6 +8,7 @@ from seaserv import seafile_api
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from seahub.test_utils import BaseTestCase from seahub.test_utils import BaseTestCase
from seahub.utils import check_filename_with_rename
from tests.common.utils import randstring from tests.common.utils import randstring
@@ -101,6 +102,21 @@ class FileViewTest(BaseTestCase):
# check new file in repo # check new file in repo
assert new_name == self.get_lib_file_name(self.repo_id) assert new_name == self.get_lib_file_name(self.repo_id)
def test_can_create_same_name_file(self):
self.login_as(self.user)
file_name = os.path.basename(self.file_path.rstrip('/'))
new_name = check_filename_with_rename(self.repo_id, '/', file_name)
data = {'operation': 'create',}
# create file
resp = self.client.post(self.url + '?p=' + self.file_path, data)
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
# check new folder has been created
assert new_name == json_resp['obj_name']
def test_create_file_with_invalid_repo_perm(self): def test_create_file_with_invalid_repo_perm(self):
# login as admin, then create file in user's repo # login as admin, then create file in user's repo
@@ -154,6 +170,29 @@ class FileViewTest(BaseTestCase):
# check old file has been renamed to new_name # check old file has been renamed to new_name
assert new_name == self.get_lib_file_name(self.repo_id) assert new_name == self.get_lib_file_name(self.repo_id)
def test_can_rename_file_with_same_name(self):
self.login_as(self.user)
# check old file exist
assert self.file_name == self.get_lib_file_name(self.repo_id)
# create a new file
new_name = randstring(6)
data = {'operation': 'create',}
resp = self.client.post(self.url + '?p=/' + new_name, data)
self.assertEqual(200, resp.status_code)
# rename new file with the same of the old file
old_file_name = self.file_name
checked_name = check_filename_with_rename(self.repo_id,
'/', old_file_name)
data = {'operation': 'rename', 'newname': checked_name}
resp = self.client.post(self.url + '?p=/' + new_name, data)
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert checked_name == json_resp['obj_name']
def test_rename_file_with_invalid_repo_perm(self): def test_rename_file_with_invalid_repo_perm(self):
# login as admin, then rename file in user's repo # login as admin, then rename file in user's repo