For some reason the 'from application import utils' worked fine when running unittests from PyCharm, but breaks in py.test. Strange.
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
"""Test cases for file handling."""
|
|
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
import shutil
|
|
import copy
|
|
import json
|
|
|
|
from common_test_class import AbstractPillarTest, MY_PATH
|
|
from common_test_data import EXAMPLE_FILE
|
|
|
|
|
|
class FileUploadingTest(AbstractPillarTest):
|
|
def test_create_file_missing_on_fs(self):
|
|
from application.utils import PillarJSONEncoder, remove_private_keys
|
|
|
|
to_post = remove_private_keys(EXAMPLE_FILE)
|
|
json_file = json.dumps(to_post, cls=PillarJSONEncoder)
|
|
|
|
with self.app.test_request_context():
|
|
self.ensure_project_exists()
|
|
|
|
resp = self.client.post('/files',
|
|
data=json_file,
|
|
headers={'Content-Type': 'application/json'})
|
|
|
|
self.assertEqual(422, resp.status_code)
|
|
|
|
def test_create_file_exists_on_fs(self):
|
|
from application.utils import PillarJSONEncoder, remove_private_keys
|
|
|
|
filename = 'BlenderDesktopLogo.png'
|
|
full_file = copy.deepcopy(EXAMPLE_FILE)
|
|
full_file[u'name'] = filename
|
|
to_post = remove_private_keys(full_file)
|
|
json_file = json.dumps(to_post, cls=PillarJSONEncoder)
|
|
|
|
with self.app.test_request_context():
|
|
self.ensure_project_exists()
|
|
|
|
target_dir = os.path.join(self.app.config['SHARED_DIR'], filename[:2])
|
|
if os.path.exists(target_dir):
|
|
assert os.path.isdir(target_dir)
|
|
else:
|
|
os.makedirs(target_dir)
|
|
shutil.copy(os.path.join(MY_PATH, filename), target_dir)
|
|
|
|
resp = self.client.post('/files',
|
|
data=json_file,
|
|
headers={'Content-Type': 'application/json'})
|
|
|
|
self.assertEqual(201, resp.status_code)
|