mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-27 11:01:14 +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
|
||||
requests==2.3.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