1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-10-21 02:42:26 +00:00

Share link auth (#2358)

* rm view_raw_shared_file

* add SHARE_LINK_LOGIN_REQUIRE setting

to force user login when view preview file/folder share link
This commit is contained in:
lian
2018-09-14 12:05:46 +08:00
committed by zheng xie
parent f1e98549e5
commit 122254905d
6 changed files with 33 additions and 167 deletions

View File

@@ -1,88 +0,0 @@
import os
from django.core.urlresolvers import reverse
from django.test import TestCase
from seaserv import seafile_api
from seahub.share.models import FileShare
from seahub.test_utils import Fixtures
class RawSharedFileTest(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_dir_link(**share_file_info)
self.file_id = seafile_api.get_file_id_by_path(self.repo.id, self.file)
self.filename= os.path.basename(self.file)
def tearDown(self):
self.remove_repo()
def test_can_get_fileserver_url(self):
resp = self.client.get(
reverse('view_raw_shared_file', args=[self.fs.token,
self.file_id, self.filename])
)
self.assertEqual(302, resp.status_code)
self.assertRegexpMatches(resp['Location'],
r'http(.*)/files/[-0-9a-f]{36}/%s' % self.filename)
class EncryptRawSharedFileTest(TestCase, Fixtures):
def setUp(self):
share_file_info = {
'username': 'test@test.com',
'repo_id': self.repo.id,
'path': '/',
'password': '12345678',
'expire_date': None,
}
self.fs = FileShare.objects.create_dir_link(**share_file_info)
self.file_id = seafile_api.get_file_id_by_path(self.repo.id, self.file)
self.filename= os.path.basename(self.file)
def tearDown(self):
self.remove_repo()
def test_can_decrypt(self):
resp = self.client.post(
reverse('view_raw_shared_file', args=[self.fs.token,
self.file_id, self.filename]), {'password': '12345678'}
)
self.assertEqual(302, resp.status_code)
self.assertRegexpMatches(resp['Location'],
r'http(.*)/files/[-0-9a-f]{36}/%s' % self.filename)
def test_wrong_password(self):
resp = self.client.post(
reverse('view_raw_shared_file', args=[self.fs.token,
self.file_id, self.filename]), {'password': '1234567'}
)
self.assertEqual(200, resp.status_code)
self.assertTemplateUsed(resp, 'share_access_validation.html')
self.assertContains(resp, 'Please enter a correct password')
def test_no_password(self):
resp = self.client.get(
reverse('view_raw_shared_file', args=[self.fs.token,
self.file_id, self.filename])
)
self.assertEqual(200, resp.status_code)
self.assertTemplateUsed(resp, 'share_access_validation.html')
resp = self.client.post(
reverse('view_raw_shared_file', args=[self.fs.token,
self.file_id, self.filename])
)
self.assertEqual(200, resp.status_code)
self.assertTemplateUsed(resp, 'share_access_validation.html')