From f33d756308f49a9213ee22c3d7226fb78c45409f Mon Sep 17 00:00:00 2001 From: zhengxie Date: Thu, 25 Jun 2015 13:25:09 +0800 Subject: [PATCH] Add test cases for issue 1283, https://github.com/haiwen/seafile/issues/1283 --- seahub/test_utils.py | 5 ++ tests/seahub/share/views/test_shared_links.py | 64 +++++++++++++++++++ tests/seahub/views/test_shared_file.py | 25 ++++++++ 3 files changed, 94 insertions(+) create mode 100644 tests/seahub/share/views/test_shared_links.py diff --git a/seahub/test_utils.py b/seahub/test_utils.py index 9ad004edfb..287a33ce88 100644 --- a/seahub/test_utils.py +++ b/seahub/test_utils.py @@ -1,3 +1,4 @@ +import os from uuid import uuid4 from exam.decorators import fixture @@ -63,3 +64,7 @@ class Fixtures(Exam): def create_folder(self, **kwargs): seafile_api.post_dir(**kwargs) return kwargs['parent_dir'] + kwargs['dirname'] + + def remove_folder(self): + seafile_api.del_file(self.repo.id, os.path.dirname(self.folder), + os.path.basename(self.folder), self.user.username) diff --git a/tests/seahub/share/views/test_shared_links.py b/tests/seahub/share/views/test_shared_links.py new file mode 100644 index 0000000000..c98cc1c1e0 --- /dev/null +++ b/tests/seahub/share/views/test_shared_links.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +import os + +from django.test import TestCase +from django.core.urlresolvers import reverse +import requests + +from seahub.share.models import FileShare +from seahub.test_utils import Fixtures + +class ListSharedLinksTest(TestCase, Fixtures): + def setUp(self): + share_file_info = { + 'username': 'test@test.com', + 'repo_id': self.repo.id, + 'path': self.file, + 'password': None, + 'expire_date': None, + } + self.fs = FileShare.objects.create_file_link(**share_file_info) + + def tearDown(self): + self.remove_repo() + + def login(self): + self.client.post( + reverse('auth_login'), {'username': self.user.username, + 'password': 'secret'} + ) + + def test_can_render(self): + self.login() + + resp = self.client.get(reverse('list_shared_links')) + self.assertEqual(200, resp.status_code) + self.assertTemplateUsed(resp, 'share/links.html') + + def test_can_render_when_parent_dir_of_link_is_removed(self): + """Issue https://github.com/haiwen/seafile/issues/1283 + """ + # create a file in a folder + self.create_file(repo_id=self.repo.id, + parent_dir=self.folder, + filename='file.txt', + username=self.user.username) + # share that file + share_file_info = { + 'username': self.user.username, + 'repo_id': self.repo.id, + 'path': os.path.join(self.folder, 'file.txt'), + 'password': None, + 'expire_date': None, + } + fs = FileShare.objects.create_file_link(**share_file_info) + + self.login() + + resp = self.client.get(reverse('list_shared_links')) + self.assertEqual(200, resp.status_code) + + # then delete parent folder, see whether it raises error + self.remove_folder() + resp = self.client.get(reverse('list_shared_links')) + self.assertEqual(200, resp.status_code) diff --git a/tests/seahub/views/test_shared_file.py b/tests/seahub/views/test_shared_file.py index 6607c2f449..22bba7cd91 100644 --- a/tests/seahub/views/test_shared_file.py +++ b/tests/seahub/views/test_shared_file.py @@ -57,6 +57,31 @@ class SharedFileTest(TestCase, Fixtures): self.assertEqual(302, resp.status_code) assert '8082/files/' in resp.get('location') + def test_can_render_when_remove_parent_dir(self): + """Issue https://github.com/haiwen/seafile/issues/1283 + """ + # create a file in a folder + self.create_file(repo_id=self.repo.id, + parent_dir=self.folder, + filename='file.txt', + username=self.user.username) + # share that file + share_file_info = { + 'username': self.user.username, + 'repo_id': self.repo.id, + 'path': os.path.join(self.folder, 'file.txt'), + 'password': None, + 'expire_date': None, + } + fs = FileShare.objects.create_file_link(**share_file_info) + resp = self.client.get(reverse('view_shared_file', args=[fs.token])) + self.assertEqual(200, resp.status_code) + + # then delete parent folder, see whether it raises error + self.remove_folder() + resp = self.client.get(reverse('view_shared_file', args=[fs.token])) + self.assertEqual(200, resp.status_code) + class FileViaSharedDirTest(TestCase, Fixtures): def setUp(self):