first commit
This commit is contained in:
102
test/validators/file_validator_test.py
Normal file
102
test/validators/file_validator_test.py
Normal file
@@ -0,0 +1,102 @@
|
||||
from os.path import abspath, dirname, join
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, PropertyMock
|
||||
|
||||
from nose.tools import eq_
|
||||
from werkzeug.datastructures import FileStorage
|
||||
|
||||
from helix.constants.file_validation_error import FileValidationError\
|
||||
, FileValidationMessage
|
||||
from helix.constants.system_type import SystemType
|
||||
from helix.validators.file_validator import FileValidator, FileType, \
|
||||
InvalidMappingException
|
||||
|
||||
|
||||
class FileValidatorTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.user_values = MagicMock()
|
||||
self.subject = FileValidator(self.user_values)
|
||||
|
||||
def should_have_error(self, result, message, row):
|
||||
eq_(result, FileValidationError(message, row))
|
||||
|
||||
def test_csv_files_are_valid(self):
|
||||
fake_file = MagicMock()
|
||||
type(fake_file).filename = \
|
||||
PropertyMock(return_value="input_single_tilt.csv")
|
||||
self.user_values.system_type.return_value = SystemType.singleTilt
|
||||
with open('test/fixtures/input_single_tilt.csv', 'r',
|
||||
newline='') as file:
|
||||
cad_input = file.read()
|
||||
eq_(self.subject.validate(cad_input, fake_file, FileType.Csv), None)
|
||||
|
||||
def test_unknown_files_are_invalid(self):
|
||||
fake_file = MagicMock()
|
||||
type(fake_file).filename = PropertyMock(return_value="Hi")
|
||||
result = self.subject.validate("Hi", fake_file, FileType.Unknown)
|
||||
self.should_have_error(result,
|
||||
FileValidationMessage.UnknownFileUploaded, None)
|
||||
|
||||
def test_identifies_dxf_files_as_aurora_dxf(self):
|
||||
with open('test/fixtures/dxf/input_single_tilt_96_cell.dxf', 'r',
|
||||
newline='') as file:
|
||||
dxf_input = file.read()
|
||||
eq_(self.subject.identify_file_type(dxf_input), FileType.AuroraDxf)
|
||||
|
||||
def test_identifies_csv_files_as_csv(self):
|
||||
fake_file = MagicMock()
|
||||
fake_file.filename.return_value = "input_single_tilt.csv"
|
||||
|
||||
with open('test/fixtures/input_single_tilt.csv', 'r',
|
||||
newline='') as file:
|
||||
cad_input = file.read()
|
||||
eq_(self.subject.identify_file_type(cad_input), FileType.Csv)
|
||||
|
||||
def test_identifies_other_files_as_unknown(self):
|
||||
eq_(self.subject.identify_file_type("hello"), FileType.Unknown)
|
||||
|
||||
def test_read_invalid_file_is_captured(self):
|
||||
fname = join(abspath(dirname(__file__)),
|
||||
'../fixtures/images/expected_dual_tilt_pseries_image.png')
|
||||
fake_file = MagicMock()
|
||||
fake_file.read.return_value = open(fname, "rb").read()
|
||||
fake_file.filename.return_value = "expected_dual_tilt_pseries_image.png"
|
||||
stream = self.subject.obtain_stream(fake_file)
|
||||
self.should_have_error(self.subject.validate(stream, fake_file,
|
||||
FileType.AuroraDxf),
|
||||
FileValidationMessage.ExpectedDxfFile,
|
||||
None)
|
||||
|
||||
def test_read_file_passes(self):
|
||||
fname = join(abspath(dirname(__file__)),
|
||||
"../fixtures/expected_design_metadata.txt")
|
||||
stream = self.subject.obtain_stream(FileStorage(open(fname, "rb")))
|
||||
self.assertGreater(len(stream), 0)
|
||||
|
||||
def test_txt_validator_rejects_dxf_file(self):
|
||||
file_type = FileType.Csv
|
||||
self.assertRaises(InvalidMappingException,
|
||||
file_type.valid_mapping, "dxf")
|
||||
|
||||
def test_dxf_validator_rejects_txt_file(self):
|
||||
file_type = FileType.AuroraDxf
|
||||
self.assertRaises(InvalidMappingException,
|
||||
file_type.valid_mapping, "txt")
|
||||
self.assertRaises(InvalidMappingException,
|
||||
file_type.valid_mapping, "csv")
|
||||
self.assertRaises(InvalidMappingException,
|
||||
file_type.valid_mapping, "gif")
|
||||
|
||||
def test_unknown_validator_rejects_any_file(self):
|
||||
file_type = FileType.Unknown
|
||||
self.assertRaises(InvalidMappingException,
|
||||
file_type.valid_mapping,
|
||||
"exe")
|
||||
|
||||
def test_file_validator_obtain_extension(self):
|
||||
fake_file = MagicMock()
|
||||
fname = "Feb1717DT-dxf.1487698302339.dxf"
|
||||
type(fake_file).filename = PropertyMock(return_value=fname)
|
||||
validator = FileValidator(self.user_values)
|
||||
result = validator.obtain_extension(fake_file)
|
||||
self.assertEqual("dxf", result)
|
||||
Reference in New Issue
Block a user