# -*- coding: utf-8 -*- import json import uuid from django.core.urlresolvers import reverse from seahub.test_utils import BaseTestCase try: from seahub.settings import LOCAL_PRO_DEV_ENV except ImportError: LOCAL_PRO_DEV_ENV = False class SmartLinkTest(BaseTestCase): def setUp(self): self.repo_id = self.repo.id self.file_path= self.file self.folder_path= self.folder self.url = reverse('api-v2.1-smart-link') def tearDown(self): self.remove_repo() def test_get_file_smart_link(self): self.login_as(self.user) para = '?repo_id=%s&path=%s&is_dir=false' % (self.repo_id, self.file_path) resp = self.client.get(self.url + para) self.assertEqual(200, resp.status_code) json_resp = json.loads(resp.content) assert json_resp['smart_link'] is not None assert json_resp['smart_link_token'] is not None def test_get_folder_smart_link(self): self.login_as(self.user) para = '?repo_id=%s&path=%s&is_dir=true' % (self.repo_id, self.folder_path) resp = self.client.get(self.url + para) self.assertEqual(200, resp.status_code) json_resp = json.loads(resp.content) assert json_resp['smart_link'] is not None assert json_resp['smart_link_token'] is not None def test_get_file_smart_link_with_invalid_user_permission(self): self.login_as(self.admin) # file smart link para = '?repo_id=%s&path=%s&is_dir=false' % (self.repo_id, self.file_path) resp = self.client.get(self.url + para) self.assertEqual(403, resp.status_code) # folder smart link para = '?repo_id=%s&path=%s&is_dir=true' % (self.repo_id, self.folder_path) resp = self.client.get(self.url + para) self.assertEqual(403, resp.status_code) class SmartLinkTokenTest(BaseTestCase): def setUp(self): self.repo_id = self.repo.id self.file_path= self.file self.folder_path= self.folder def tearDown(self): self.remove_repo() def test_get_info_via_smart_link_token(self): self.login_as(self.user) # get file smart link token url = reverse('api-v2.1-smart-link') para = '?repo_id=%s&path=%s&is_dir=false' % (self.repo_id, self.file_path) resp = self.client.get(url + para) json_resp = json.loads(resp.content) file_smart_link_token = json_resp['smart_link_token'] # get file info via smart link token url = reverse('api-v2.1-smart-links-token', args=[file_smart_link_token]) resp = self.client.get(url) self.assertEqual(200, resp.status_code) json_resp = json.loads(resp.content) assert json_resp['repo_id'] == self.repo_id assert json_resp['path'] == self.file_path assert json_resp['is_dir'] == False # get folder smart link token url = reverse('api-v2.1-smart-link') para = '?repo_id=%s&path=%s&is_dir=true' % (self.repo_id, self.folder_path) resp = self.client.get(url + para) json_resp = json.loads(resp.content) folder_smart_link_token = json_resp['smart_link_token'] # get folder info via smart link token url = reverse('api-v2.1-smart-links-token', args=[folder_smart_link_token]) resp = self.client.get(url) self.assertEqual(200, resp.status_code) json_resp = json.loads(resp.content) assert json_resp['repo_id'] == self.repo_id assert json_resp['path'] == self.folder_path assert json_resp['is_dir'] == True def test_get_info_via_smart_link_token_with_invalid_user_permission(self): # get file smart link token self.login_as(self.user) url = reverse('api-v2.1-smart-link') para = '?repo_id=%s&path=%s&is_dir=false' % (self.repo_id, self.file_path) resp = self.client.get(url + para) json_resp = json.loads(resp.content) file_smart_link_token = json_resp['smart_link_token'] self.logout() # get file info via smart link token self.login_as(self.admin) url = reverse('api-v2.1-smart-links-token', args=[file_smart_link_token]) resp = self.client.get(url) self.assertEqual(403, resp.status_code) self.logout() # get folder smart link token self.login_as(self.user) url = reverse('api-v2.1-smart-link') para = '?repo_id=%s&path=%s&is_dir=true' % (self.repo_id, self.folder_path) resp = self.client.get(url + para) json_resp = json.loads(resp.content) folder_smart_link_token = json_resp['smart_link_token'] self.logout() # get folder info via smart link token self.login_as(self.admin) url = reverse('api-v2.1-smart-links-token', args=[folder_smart_link_token]) resp = self.client.get(url) self.assertEqual(403, resp.status_code) self.logout() def test_get_info_via_smart_link_token_with_invalid_token(self): file_smart_link_token = uuid.uuid4() folder_smart_link_token = uuid.uuid4() self.login_as(self.user) url = reverse('api-v2.1-smart-links-token', args=[file_smart_link_token]) resp = self.client.get(url) self.assertEqual(400, resp.status_code) url = reverse('api-v2.1-smart-links-token', args=[folder_smart_link_token]) resp = self.client.get(url) self.assertEqual(400, resp.status_code)