mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-22 16:56:57 +00:00
[tests] Added a few tests
This commit is contained in:
parent
8993da33d7
commit
7295e14c7d
50
seahub/test_utils.py
Normal file
50
seahub/test_utils.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
from uuid import uuid4
|
||||||
|
|
||||||
|
from exam.decorators import fixture
|
||||||
|
from exam.cases import Exam
|
||||||
|
from seaserv import seafile_api, ccnet_threaded_rpc
|
||||||
|
|
||||||
|
from seahub.base.accounts import User
|
||||||
|
|
||||||
|
class Fixtures(Exam):
|
||||||
|
|
||||||
|
@fixture
|
||||||
|
def user(self):
|
||||||
|
return self.create_user('test@test.com')
|
||||||
|
|
||||||
|
@fixture
|
||||||
|
def repo(self):
|
||||||
|
r = seafile_api.get_repo(self.create_repo())
|
||||||
|
return r
|
||||||
|
|
||||||
|
@fixture
|
||||||
|
def file(self):
|
||||||
|
return self.create_file(repo_id=self.repo.id,
|
||||||
|
parent_dir='/',
|
||||||
|
filename='test.txt',
|
||||||
|
username='test@test.com')
|
||||||
|
|
||||||
|
def create_user(self, email=None, **kwargs):
|
||||||
|
if not email:
|
||||||
|
email = uuid4().hex + '@test.com'
|
||||||
|
|
||||||
|
kwargs.setdefault('email', email)
|
||||||
|
kwargs.setdefault('is_staff', False)
|
||||||
|
kwargs.setdefault('is_active', True)
|
||||||
|
|
||||||
|
return User.objects.create_user(password='secret', **kwargs)
|
||||||
|
|
||||||
|
def remove_user(self, email):
|
||||||
|
ccnet_threaded_rpc.remove_emailuser(email)
|
||||||
|
|
||||||
|
def create_repo(self, **kwargs):
|
||||||
|
repo_id = seafile_api.create_repo('test-repo', '',
|
||||||
|
'test@test.com', None)
|
||||||
|
return repo_id
|
||||||
|
|
||||||
|
def remove_repo(self):
|
||||||
|
return seafile_api.remove_repo(self.repo.id)
|
||||||
|
|
||||||
|
def create_file(self, **kwargs):
|
||||||
|
seafile_api.post_empty_file(**kwargs)
|
||||||
|
return kwargs['parent_dir'] + kwargs['filename']
|
@ -1,3 +1,4 @@
|
|||||||
|
exam==0.10.5
|
||||||
splinter==0.7.2
|
splinter==0.7.2
|
||||||
requests==2.3.0
|
requests==2.3.0
|
||||||
pytest==2.7.0
|
pytest==2.7.0
|
||||||
|
0
tests/seahub/views/__init__.py
Normal file
0
tests/seahub/views/__init__.py
Normal file
124
tests/seahub/views/test_file.py
Normal file
124
tests/seahub/views/test_file.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
from seahub.share.models import FileShare, PrivateFileDirShare
|
||||||
|
from seahub.test_utils import Fixtures
|
||||||
|
|
||||||
|
|
||||||
|
class SharedFileTest(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 test_can_render(self):
|
||||||
|
resp = self.client.get(reverse('view_shared_file', args=[self.fs.token]))
|
||||||
|
self.assertEqual(200, resp.status_code)
|
||||||
|
self.assertTemplateUsed(resp, 'shared_file_view.html')
|
||||||
|
self.assertContains(resp, self.file)
|
||||||
|
|
||||||
|
dl_url_param = '?p=%s&dl=1' % self.file
|
||||||
|
self.assertContains(resp, dl_url_param)
|
||||||
|
|
||||||
|
def test_can_download(self):
|
||||||
|
dl_url = reverse('view_shared_file', args=[self.fs.token]) + \
|
||||||
|
'?p=%s&dl=1' % self.file
|
||||||
|
resp = self.client.get(dl_url)
|
||||||
|
self.assertEqual(302, resp.status_code)
|
||||||
|
assert '8082/files/' in resp.get('location')
|
||||||
|
|
||||||
|
def test_can_view_raw(self):
|
||||||
|
dl_url = reverse('view_shared_file', args=[self.fs.token]) + \
|
||||||
|
'?p=%s&raw=1' % self.file
|
||||||
|
resp = self.client.get(dl_url)
|
||||||
|
self.assertEqual(302, resp.status_code)
|
||||||
|
assert '8082/files/' in resp.get('location')
|
||||||
|
|
||||||
|
|
||||||
|
class FileViaSharedDirTest(TestCase, Fixtures):
|
||||||
|
def setUp(self):
|
||||||
|
share_file_info = {
|
||||||
|
'username': 'test@test.com',
|
||||||
|
'repo_id': self.repo.id,
|
||||||
|
'path': '/',
|
||||||
|
'password': None,
|
||||||
|
'expire_date': None,
|
||||||
|
}
|
||||||
|
self.fs = FileShare.objects.create_file_link(**share_file_info)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.remove_repo()
|
||||||
|
|
||||||
|
def test_can_render(self):
|
||||||
|
resp = self.client.get(
|
||||||
|
reverse('view_file_via_shared_dir', args=[self.fs.token]) + \
|
||||||
|
'?p=%s' % self.file
|
||||||
|
)
|
||||||
|
self.assertEqual(200, resp.status_code)
|
||||||
|
self.assertTemplateUsed(resp, 'shared_file_view.html')
|
||||||
|
self.assertContains(resp, self.file)
|
||||||
|
|
||||||
|
dl_url_param = '?p=%s&dl=1' % self.file
|
||||||
|
self.assertContains(resp, dl_url_param)
|
||||||
|
|
||||||
|
def test_can_download(self):
|
||||||
|
dl_url = reverse('view_file_via_shared_dir', args=[self.fs.token]) + \
|
||||||
|
'?p=%s&dl=1' % self.file
|
||||||
|
resp = self.client.get(dl_url)
|
||||||
|
self.assertEqual(302, resp.status_code)
|
||||||
|
assert '8082/files/' in resp.get('location')
|
||||||
|
|
||||||
|
|
||||||
|
class PrivateSharedFileTest(TestCase, Fixtures):
|
||||||
|
def setUp(self):
|
||||||
|
self.user2 = self.create_user('test2@test.com')
|
||||||
|
share_file_info = {
|
||||||
|
'from_user': self.user.username,
|
||||||
|
'to_user': self.user2.username,
|
||||||
|
'repo_id': self.repo.id,
|
||||||
|
'path': self.file,
|
||||||
|
}
|
||||||
|
self.fs = PrivateFileDirShare.objects.add_read_only_priv_file_share(
|
||||||
|
**share_file_info)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.remove_repo()
|
||||||
|
self.remove_user(self.user.username)
|
||||||
|
self.remove_user(self.user2.username)
|
||||||
|
|
||||||
|
def test_can_render(self):
|
||||||
|
self.client.post(
|
||||||
|
reverse('auth_login'), {'username': self.user2.username,
|
||||||
|
'password': 'secret'}
|
||||||
|
)
|
||||||
|
|
||||||
|
resp = self.client.get(
|
||||||
|
reverse('view_priv_shared_file', args=[self.fs.token])
|
||||||
|
)
|
||||||
|
self.assertEqual(200, resp.status_code)
|
||||||
|
self.assertTemplateUsed(resp, 'shared_file_view.html')
|
||||||
|
self.assertContains(resp, self.file)
|
||||||
|
|
||||||
|
dl_url_param = '?p=%s&dl=1' % self.file
|
||||||
|
self.assertContains(resp, dl_url_param)
|
||||||
|
|
||||||
|
def test_can_download(self):
|
||||||
|
self.client.post(
|
||||||
|
reverse('auth_login'), {'username': self.user2.username,
|
||||||
|
'password': 'secret'}
|
||||||
|
)
|
||||||
|
|
||||||
|
dl_url = reverse('view_priv_shared_file', args=[self.fs.token]) + \
|
||||||
|
'?p=%s&dl=1' % self.file
|
||||||
|
resp = self.client.get(dl_url)
|
||||||
|
self.assertEqual(302, resp.status_code)
|
||||||
|
assert '8082/files/' in resp.get('location')
|
Loading…
Reference in New Issue
Block a user