1
0
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:
zhengxie 2015-05-25 18:37:02 +08:00
parent 8993da33d7
commit 7295e14c7d
4 changed files with 175 additions and 0 deletions

50
seahub/test_utils.py Normal file
View 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']

View File

@ -1,3 +1,4 @@
exam==0.10.5
splinter==0.7.2
requests==2.3.0
pytest==2.7.0

View File

View 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')