56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
import os
|
|
import mock
|
|
import shutil
|
|
import tempfile
|
|
import unittest
|
|
|
|
import kojihub
|
|
from koji import GenericError
|
|
|
|
|
|
class TestGetUploadPath(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.topdir = tempfile.mkdtemp()
|
|
mock.patch('koji.pathinfo._topdir', new=self.topdir).start()
|
|
|
|
def tearDown(self):
|
|
shutil.rmtree(self.topdir)
|
|
mock.patch.stopall()
|
|
|
|
def test_get_upload_path_invalid_filename(self):
|
|
with self.assertRaises(GenericError):
|
|
kojihub.get_upload_path(reldir='', name='. error')
|
|
|
|
def test_get_upload_path_invalid_upload_dir_1(self):
|
|
with self.assertRaises(GenericError):
|
|
kojihub.get_upload_path(reldir='..', name='error')
|
|
|
|
def test_get_upload_path_invalid_upload_dir_2(self):
|
|
with self.assertRaises(GenericError):
|
|
kojihub.get_upload_path(reldir='tasks/1', name='error', create=True)
|
|
|
|
def test_get_upload_path_invalid_upload_dir_3(self):
|
|
with self.assertRaises(GenericError):
|
|
kojihub.get_upload_path(reldir='tasks/1/should_be_number', name='error', create=True)
|
|
|
|
@mock.patch('kojihub.kojihub.context')
|
|
@mock.patch('kojihub.kojihub.Host')
|
|
def test_get_upload_path_invalid_upload_dir_owner(self, host, context):
|
|
cursor = mock.MagicMock()
|
|
context.cnx.cursor.return_value = cursor
|
|
reldir = 'fake/1/1'
|
|
fullpath = '%s/work/%s' % (self.topdir, reldir)
|
|
os.makedirs(fullpath)
|
|
|
|
with open('{0}/.user'.format(fullpath), 'wt', encoding='utf-8') as f:
|
|
f.write('1')
|
|
|
|
with self.assertRaises(GenericError):
|
|
kojihub.get_upload_path(reldir=reldir, name='error', create=True)
|
|
|
|
@mock.patch('kojihub.kojihub.Host')
|
|
def test_get_upload_path_invalid_upload_no_dir_owner(self, host):
|
|
dir = kojihub.get_upload_path(reldir='tasks/1/1', name='error', create=False)
|
|
assert dir == '%s/work/tasks/1/1/error' % self.topdir
|
|
|