blob: 75acf6fa2efd6cf0bdf55acd9a99f0f951510e50 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from tg import tmpl_context as c
from allura import model as M
from alluratest.controller import TestController
from forgefiles.model.files import UploadFolder
from forgefiles.model.files import UploadFiles
from testfixtures import TempDirectory
class TestFiles(TestController):
def test_files(self):
c.user = M.User.by_username('test-admin')
r = self.app.get('/files/')
assert 'p/test' in r
def test_create_folder(self):
c.user = M.User.by_username('test-admin')
self.app.get('/files/')
data1 = {'folder_name': 'NewTestFolder'}
folder_object = self.app.post('/p/test/files/create_folder/', data1)
assert folder_object is not None
def test_upload_file(self):
c.user = M.User.by_username('test-admin')
self.app.get('/files/')
dir = TempDirectory()
path = dir.write('myfile.txt', b'Testing Upload')
with open(path, 'rb') as f:
file_upload = [('file_upload', 'myfile.txt', f.read())]
filename_dict = {'filename': 'myfile.txt'}
file_object = self.app.post('/p/test/files/upload_file', filename_dict, upload_files=file_upload)
dir.cleanup()
assert file_object is not None
def test_edit_folder(self):
folder = create_folder(self)
folder_object = UploadFolder.query.get(folder_name=folder.folder_name)
data1 = {'folder_id': str(folder_object._id), 'folder_name': 'NewFolderName'}
self.app.post('/p/test/files/edit_folder', data1)
resp = self.app.get('/files/')
assert 'NewFolderName' in resp
def test_edit_file(self):
file_object = upload_file(self)
db_file_object = UploadFiles.query.get(filename=file_object.filename)
data1 = {'file_id': str(db_file_object._id), 'file_name': 'NewFileName'}
self.app.post('/p/test/files/edit_file', data1)
resp = self.app.get('/files/')
assert 'NewFileName' in resp
def test_publish_folder(self):
create_folder(self)
folder_object = UploadFolder.query.get(folder_name='TestFolder')
data1 = {'folder_id': str(folder_object._id), 'remarks': 'Publishing new Version'}
self.app.post('/p/test/files/publish_folder', data1)
resp = self.app.get('/files/')
assert folder_object.published == True
def test_link_file(self):
file_object = upload_file(self)
db_file_object = UploadFiles.query.get(filename=file_object.filename)
data1 = {'file_id': str(db_file_object._id)}
self.app.post('/p/test/files/link_file', data1)
resp = self.app.get('/files/')
assert str(db_file_object.linked_to_download) in resp
def test_disable_folder(self):
create_folder(self)
folder_object = UploadFolder.query.get(folder_name='TestFolder')
data1 = {'folder_id': str(folder_object._id), 'status': 'True'}
self.app.post('/p/test/files/disable_folder', data1)
resp = self.app.get('/files/')
assert str(folder_object.disabled) in resp
def test_disable_file(self):
file_object = upload_file(self)
db_file_object = UploadFiles.query.get(filename=file_object.filename)
data1 = {'file_id': str(db_file_object._id), 'status': 'True'}
self.app.post('/p/test/files/disable_file', data1)
resp = self.app.get('/files/')
assert str(db_file_object.disabled) in resp
def test_delete_folder(self):
create_folder(self)
folder_object = UploadFolder.query.get(folder_name='TestFolder')
data1 = {'folder_id': str(folder_object._id)}
self.app.post('/p/test/files/delete_folder', data1)
new_folder_object = UploadFolder.query.get(_id=folder_object._id)
assert new_folder_object is None
def test_delete_file(self):
file_object = upload_file(self)
db_file_object = UploadFiles.query.get(filename=file_object.filename)
data1 = {'file_id': str(db_file_object._id)}
self.app.post('/p/test/files/delete_file', data1)
new_file_object = UploadFiles.query.get(_id=db_file_object._id)
assert new_file_object is None
def create_folder(self):
c.user = M.User.by_username('test-admin')
self.app.get('/files/')
data = {'folder_name': 'TestFolder'}
self.app.post('/p/test/files/create_folder/', data)
folder_object = UploadFolder.query.get(folder_name='TestFolder')
return folder_object
def upload_file(self):
c.user = M.User.by_username('test-admin')
self.app.get('/files/')
dir = TempDirectory()
path = dir.write('myfile.txt', b'Testing Upload')
with open(path, 'rb') as f:
file_upload = [('file_upload', 'myfile.txt', f.read())]
filename_dict = {'filename':'myfile.txt'}
self.app.post('/p/test/files/upload_file', filename_dict, upload_files=file_upload)
file_object = UploadFiles.query.get(filename='myfile.txt')
dir.cleanup()
return file_object