def create_datafile(index): testfile = path.join(path.dirname(__file__), 'fixtures', 'jeol_sem_test%d.txt' % index) size, sha512sum = get_size_and_sha512sum(testfile) datafile = Dataset_File(dataset=dataset, filename=path.basename(testfile), url='file://'+path.abspath(testfile), protocol='file', size=size, sha512sum=sha512sum) datafile.verify() datafile.save() return datafile
def _make_data_file(dataset, filename, content): # TODO: # create datasetfile f = mktemp() print "Inside make data file ", f open(f, "w+b").write(content) df = Dataset_File() df.dataset = dataset df.filename = filename df.url = 'file://'+f df.protocol = "staging" df.size = len(content) df.verify(allowEmptyChecksums=True) df.save() print "Df ---", df
def _create_test_dataset(ds, exp_id, fnames): for fname, contents in fnames.items(): dest = os.path.abspath( os.path.join(settings.FILE_STORE_PATH, '%s/%s/' % (exp_id, ds.id))) if not os.path.exists(dest): os.makedirs(dest) testfile = os.path.abspath(os.path.join(dest, fname)) with open(testfile, "w+b") as f: f.write(contents) size, sha512sum = get_size_and_sha512sum(testfile) dataset_file = Dataset_File(dataset=ds, filename=fname, protocol='', size=size, sha512sum=sha512sum, url='%d/%d/%s' % (exp_id, ds.id, fname)) dataset_file.verify() dataset_file.save() return ds
def _create_datafile(): user = User.objects.create_user("testuser", "*****@*****.**", "pwd") user.save() UserProfile(user=user).save() full_access = Experiment.PUBLIC_ACCESS_FULL experiment = Experiment.objects.create(title="IIIF Test", created_by=user, public_access=full_access) experiment.save() ExperimentACL( experiment=experiment, pluginId="django_user", entityId=str(user.id), isOwner=True, canRead=True, canWrite=True, canDelete=True, aclOwnershipType=ExperimentACL.OWNER_OWNED, ).save() dataset = Dataset() dataset.save() dataset.experiments.add(experiment) dataset.save() # Create new Datafile tempfile = TemporaryUploadedFile("iiif_stored_file", None, None, None) with Image(filename="magick:rose") as img: img.format = "tiff" img.save(file=tempfile.file) tempfile.file.flush() datafile = Dataset_File(dataset=dataset) datafile.size = os.path.getsize(tempfile.file.name) # os.remove(tempfilename) datafile.filename = "iiif_named_file" datafile.url = write_uploaded_file_to_dataset(dataset, tempfile) datafile.verify(allowEmptyChecksums=True) datafile.save() return datafile
def _create_datafile(): user = User.objects.create_user('testuser', '*****@*****.**', 'pwd') user.save() UserProfile(user=user).save() full_access = Experiment.PUBLIC_ACCESS_FULL experiment = Experiment.objects.create(title="IIIF Test", created_by=user, public_access=full_access) experiment.save() ExperimentACL(experiment=experiment, pluginId='django_user', entityId=str(user.id), isOwner=True, canRead=True, canWrite=True, canDelete=True, aclOwnershipType=ExperimentACL.OWNER_OWNED).save() dataset = Dataset() dataset.save() dataset.experiments.add(experiment) dataset.save() # Create new Datafile tempfile = TemporaryUploadedFile('iiif_stored_file', None, None, None) with Image(filename='magick:rose') as img: img.format = 'tiff' img.save(file=tempfile.file) tempfile.file.flush() datafile = Dataset_File(dataset=dataset) datafile.size = os.path.getsize(tempfile.file.name) #os.remove(tempfilename) datafile.filename = 'iiif_named_file' datafile.url = write_uploaded_file_to_dataset(dataset, tempfile) datafile.verify(allowEmptyChecksums=True) datafile.save() return datafile
def _create_test_dataset(ds, exp_id, fnames): for fname, contents in fnames.items(): dest = os.path.abspath(os.path.join(settings.FILE_STORE_PATH, '%s/%s/' % (exp_id, ds.id))) if not os.path.exists(dest): os.makedirs(dest) testfile = os.path.abspath(os.path.join(dest, fname)) with open(testfile, "w+b") as f: f.write(contents) size, sha512sum = get_size_and_sha512sum(testfile) dataset_file = Dataset_File(dataset=ds, filename=fname, protocol='', size=size, sha512sum=sha512sum, url='%d/%d/%s' % (exp_id, ds.id, fname)) dataset_file.verify() dataset_file.save() return ds
def generate_datafile(path, dataset, content=None, size=-1, verify=True, verified=True): from tardis.tardis_portal.models import Dataset_File datafile = Dataset_File() # Normally we use any old string for the datafile path, but some # tests require the path to be the same as what 'staging' would use if path == None: datafile.dataset_id = dataset.id datafile.save() path = "%s/%s/%s" % (dataset.get_first_experiment().id, dataset.id, datafile.id) filepath = os.path.normpath(FILE_STORE_PATH + '/' + path) if content: try: os.makedirs(os.path.dirname(filepath)) os.remove(filepath) except: pass file = open(filepath, 'wb+') file.write(content) file.close() datafile.url = path datafile.mimetype = "application/unspecified" datafile.filename = os.path.basename(filepath) datafile.dataset_id = dataset.id if content: datafile.size = str(len(content)) else: datafile.size = str(size) if verify and content: if not datafile.verify(allowEmptyChecksums=True): raise RuntimeError('verify failed!?!') else: datafile.verified = verified datafile.save() return datafile
def testDatasetFile(self): # check registered text file for physical file meta information df = Dataset_File.objects.get(pk=self.dataset_file1.id) try: from magic import Magic self.assertEqual(df.mimetype, 'text/plain; charset=us-ascii') except: # XXX Test disabled because lib magic can't be loaded pass self.assertEqual(df.size, str(13)) self.assertEqual(df.md5sum, '8ddd8be4b179a529afa5f2ffae4b9858') # now check a JPG file filename = abspath(join(dirname(__file__), '../static/images/ands-logo-hi-res.jpg')) dataset = Dataset.objects.get(pk=self.dataset1.id) size, sha512sum = get_size_and_sha512sum(filename) pdf1 = Dataset_File(dataset=dataset, filename=basename(filename), size=str(size), sha512sum=sha512sum, url='file://%s' % filename, protocol='file') pdf1.verify() pdf1.save() try: from magic import Magic self.assertEqual(pdf1.mimetype, 'image/jpeg') except: # XXX Test disabled because lib magic can't be loaded pass self.assertEqual(pdf1.size, str(14232)) self.assertEqual(pdf1.md5sum, 'c450d5126ffe3d14643815204daf1bfb') # now check that we can override the physical file meta information pdf2 = Dataset_File(dataset=dataset, filename=basename(filename), url='file://%s' % filename, protocol='file', mimetype='application/vnd.openxmlformats-officedocument.presentationml.presentation', size=str(0), # Empty string always has the same hash sha512sum='cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e') pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/vnd.openxmlformats-officedocument.presentationml.presentation') except: # XXX Test disabled because lib magic can't be loaded pass self.assertEqual(pdf2.size, str(0)) self.assertEqual(pdf2.md5sum, '') pdf2.mimetype = '' pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/pdf') except: # XXX Test disabled because lib magic can't be loaded pass
class DownloadTestCase(TestCase): def setUp(self): # create a test user self.user = User.objects.create_user(username='******', email='', password='******') # create a public experiment self.experiment1 = Experiment(title='Experiment 1', created_by=self.user, public_access=Experiment.PUBLIC_ACCESS_FULL) self.experiment1.save() # create a non-public experiment self.experiment2 = Experiment(title='Experiment 2', created_by=self.user, public_access=Experiment.PUBLIC_ACCESS_NONE) self.experiment2.save() # dataset1 belongs to experiment1 self.dataset1 = Dataset() self.dataset1.save() self.dataset1.experiments.add(self.experiment1) self.dataset1.save() # dataset2 belongs to experiment2 self.dataset2 = Dataset() self.dataset2.save() self.dataset2.experiments.add(self.experiment2) self.dataset2.save() # absolute path first filename1 = 'testfile.txt' filename2 = 'testfile.tiff' self.dest1 = abspath(join(settings.FILE_STORE_PATH, '%s/%s/' % (self.experiment1.id, self.dataset1.id))) self.dest2 = abspath(join(settings.FILE_STORE_PATH, '%s/%s/' % (self.experiment2.id, self.dataset2.id))) if not exists(self.dest1): makedirs(self.dest1) if not exists(self.dest2): makedirs(self.dest2) testfile1 = abspath(join(self.dest1, filename1)) f = open(testfile1, 'w') f.write("Hello World!\n") f.close() testfile2 = abspath(join(self.dest2, filename2)) _generate_test_image(testfile2) size, sha512sum = get_size_and_sha512sum(testfile1) self.dataset_file1 = Dataset_File(dataset=self.dataset1, filename=filename1, protocol='', size=size, sha512sum=sha512sum, url='%d/%d/%s' % (self.experiment1.id, self.dataset1.id, filename1)) self.dataset_file1.verify() self.dataset_file1.save() size, sha512sum = get_size_and_sha512sum(testfile2) self.dataset_file2 = Dataset_File(dataset=self.dataset2, filename=basename(filename2), protocol='', size=size, sha512sum=sha512sum, url='%d/%d/%s' % (self.experiment2.id, self.dataset2.id, filename2)) self.dataset_file2.verify() self.dataset_file2.save() def tearDown(self): self.user.delete() self.experiment1.delete() self.experiment2.delete() rmtree(self.dest1) rmtree(self.dest2) def testView(self): client = Client() # check view of file1 response = client.get('/datafile/view/%i/' % self.dataset_file1.id) self.assertEqual(response['Content-Disposition'], 'inline; filename="%s"' % self.dataset_file1.filename) self.assertEqual(response.status_code, 200) self.assertEqual(response.content, 'Hello World!\n') # check view of file2 response = client.get('/datafile/view/%i/' % self.dataset_file2.id) # Should be forbidden self.assertEqual(response.status_code, 403) self.experiment2.public_access=Experiment.PUBLIC_ACCESS_FULL self.experiment2.save() # check view of file2 again response = client.get('/datafile/view/%i/' % self.dataset_file2.id) self.assertEqual(response.status_code, 200) # The following behaviour relies on ImageMagick if IMAGEMAGICK_AVAILABLE: # file2 should have a ".png" filename self.assertEqual(response['Content-Disposition'], 'inline; filename="%s"' % (self.dataset_file2.filename+'.png')) # file2 should be a PNG self.assertEqual(response['Content-Type'], 'image/png') png_signature = "\x89PNG\r\n\x1a\n" self.assertEqual(response.content[0:8], png_signature) else: # file2 should have a ".tiff" filename self.assertEqual(response['Content-Disposition'], 'inline; filename="%s"' % (self.dataset_file2.filename)) # file2 should be a TIFF self.assertEqual(response['Content-Type'], 'image/tiff') tiff_signature = "II\x2a\x00" self.assertEqual(response.content[0:4], tiff_signature) def _check_tar_file(self, content, rootdir, datafiles): # It should be a zip file with NamedTemporaryFile('w') as tempfile: tempfile.write(content) tempfile.flush() with open(tempfile.name, 'r') as zipread: # It should be a zip file (all of which start with "PK") expect(zipread.read(2)).to_equal('PK') expect(is_zipfile(tempfile.name)).to_be_truthy() with ZipFile(tempfile.name, 'r') as zf: expect(len(zf.namelist())).to_equal(len(datafiles)) for df in datafiles: filename = join(rootdir, str(df.dataset.id), df.filename) expect(filename in zf.namelist()).to_be_truthy() def _check_zip_file(self, content, rootdir, datafiles): # It should be a zip file with NamedTemporaryFile('w') as tempfile: tempfile.write(content) tempfile.flush() with open(tempfile.name, 'r') as zipread: # It should be a zip file (all of which start with "PK") expect(zipread.read(2)).to_equal('PK') expect(is_zipfile(tempfile.name)).to_be_truthy() zf = ZipFile(tempfile.name, 'r') expect(len(zf.namelist())).to_equal(len(datafiles)) for df in datafiles: filename = join(rootdir, str(df.dataset.id), df.filename) expect(filename in zf.namelist()).to_be_truthy() zf.close() def testDownload(self): client = Client() # check download for experiment1 response = client.get('/download/experiment/%i/zip/' % self.experiment1.id) self.assertEqual(response['Content-Disposition'], 'attachment; filename="experiment%s-complete.zip"' % self.experiment1.id) self.assertEqual(response.status_code, 200) self._check_zip_file(response.content, str(self.experiment1.id), reduce(lambda x, y: x + y, [ds.dataset_file_set.all() \ for ds in self.experiment1.datasets.all()])) # check download of file1 response = client.get('/download/datafile/%i/' % self.dataset_file1.id) self.assertEqual(response['Content-Disposition'], 'attachment; filename="%s"' % self.dataset_file1.filename) self.assertEqual(response.status_code, 200) self.assertEqual(response.content, 'Hello World!\n') # requesting file2 should be forbidden... response = client.get('/download/datafile/%i/' % self.dataset_file2.id) self.assertEqual(response.status_code, 403) # check dataset1 download response = client.post('/download/datafiles/', {'expid': self.experiment1.id, 'dataset': [self.dataset1.id], 'datafile': []}) self.assertEqual(response.status_code, 200) self._check_zip_file(response.content, 'datasets', self.dataset1.dataset_file_set.all()) # check dataset2 download response = client.post('/download/datafiles/', {'expid': self.experiment2.id, 'dataset': [self.dataset2.id], 'datafile': []}) self.assertEqual(response.status_code, 403) # check datafile1 download via POST response = client.post('/download/datafiles/', {'expid': self.experiment1.id, 'dataset': [], 'datafile': [self.dataset_file1.id]}) self.assertEqual(response.status_code, 200) self._check_zip_file(response.content, 'datasets', [self.dataset_file1]) # check datafile2 download via POST response = client.post('/download/datafiles/', {'expid': self.experiment2.id, 'dataset': [], 'datafile': [self.dataset_file2.id]}) self.assertEqual(response.status_code, 403) # Check datafile2 download with second experiment to "metadata only" self.experiment2.public_access=Experiment.PUBLIC_ACCESS_METADATA self.experiment2.save() response = client.get('/download/datafile/%i/' % self.dataset_file2.id) # Metadata-only means "no file access"! self.assertEqual(response.status_code, 403) # Check datafile2 download with second experiment to public self.experiment2.public_access=Experiment.PUBLIC_ACCESS_FULL self.experiment2.save() response = client.get('/download/datafile/%i/' % self.dataset_file2.id) self.assertEqual(response.status_code, 200) # This should be a TIFF (which often starts with "II\x2a\x00") self.assertEqual(response['Content-Type'], 'image/tiff') self.assertEqual(response.content[0:4], "II\x2a\x00") def testDatasetFile(self): # check registered text file for physical file meta information df = Dataset_File.objects.get(pk=self.dataset_file1.id) try: from magic import Magic self.assertEqual(df.mimetype, 'text/plain; charset=us-ascii') except: # XXX Test disabled because lib magic can't be loaded pass self.assertEqual(df.size, str(13)) self.assertEqual(df.md5sum, '8ddd8be4b179a529afa5f2ffae4b9858') # now check a JPG file filename = abspath(join(dirname(__file__), '../static/images/ands-logo-hi-res.jpg')) dataset = Dataset.objects.get(pk=self.dataset1.id) size, sha512sum = get_size_and_sha512sum(filename) pdf1 = Dataset_File(dataset=dataset, filename=basename(filename), size=str(size), sha512sum=sha512sum, url='file://%s' % filename, protocol='file') pdf1.verify() pdf1.save() try: from magic import Magic self.assertEqual(pdf1.mimetype, 'image/jpeg') except: # XXX Test disabled because lib magic can't be loaded pass self.assertEqual(pdf1.size, str(14232)) self.assertEqual(pdf1.md5sum, 'c450d5126ffe3d14643815204daf1bfb') # now check that we can override the physical file meta information pdf2 = Dataset_File(dataset=dataset, filename=basename(filename), url='file://%s' % filename, protocol='file', mimetype='application/vnd.openxmlformats-officedocument.presentationml.presentation', size=str(0), # Empty string always has the same hash sha512sum='cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e') pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/vnd.openxmlformats-officedocument.presentationml.presentation') except: # XXX Test disabled because lib magic can't be loaded pass self.assertEqual(pdf2.size, str(0)) self.assertEqual(pdf2.md5sum, '') pdf2.mimetype = '' pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/pdf') except: # XXX Test disabled because lib magic can't be loaded pass
class DownloadTestCase(TestCase): def setUp(self): # create a test user self.user = User.objects.create_user(username='******', email='', password='******') # create a public experiment self.experiment1 = Experiment(title='Experiment 1', created_by=self.user, public_access=Experiment.PUBLIC_ACCESS_FULL) self.experiment1.save() # create a non-public experiment self.experiment2 = Experiment(title='Experiment 2', created_by=self.user, public_access=Experiment.PUBLIC_ACCESS_NONE) self.experiment2.save() # dataset1 belongs to experiment1 self.dataset1 = Dataset() self.dataset1.save() self.dataset1.experiments.add(self.experiment1) self.dataset1.save() # dataset2 belongs to experiment2 self.dataset2 = Dataset() self.dataset2.save() self.dataset2.experiments.add(self.experiment2) self.dataset2.save() # absolute path first filename1 = 'testfile.txt' filename2 = 'testfile.tiff' self.dest1 = abspath(join(settings.FILE_STORE_PATH, '%s/%s/' % (self.experiment1.id, self.dataset1.id))) self.dest2 = abspath(join(settings.FILE_STORE_PATH, '%s/%s/' % (self.experiment2.id, self.dataset2.id))) if not exists(self.dest1): makedirs(self.dest1) if not exists(self.dest2): makedirs(self.dest2) testfile1 = abspath(join(self.dest1, filename1)) f = open(testfile1, 'w') f.write("Hello World!\n") f.close() testfile2 = abspath(join(self.dest2, filename2)) if IMAGEMAGICK_AVAILABLE: with Image(filename='logo:') as img: img.format = 'tiff' img.save(filename=testfile2) else: # Apparently ImageMagick isn't installed... # Write a "fake" TIFF file f = open(testfile2, 'w') f.write("II\x2a\x00") f.close() size, sha512sum = get_size_and_sha512sum(testfile1) self.dataset_file1 = Dataset_File(dataset=self.dataset1, filename=filename1, protocol='', size=size, sha512sum=sha512sum, url='%d/%d/%s' % (self.experiment1.id, self.dataset1.id, filename1)) self.dataset_file1.verify() self.dataset_file1.save() size, sha512sum = get_size_and_sha512sum(testfile2) self.dataset_file2 = Dataset_File(dataset=self.dataset2, filename=basename(filename2), protocol='', size=size, sha512sum=sha512sum, url='%d/%d/%s' % (self.experiment2.id, self.dataset2.id, filename2)) self.dataset_file2.verify() self.dataset_file2.save() def tearDown(self): self.user.delete() self.experiment1.delete() self.experiment2.delete() rmtree(self.dest1) rmtree(self.dest2) def testView(self): client = Client() # check view of file1 response = client.get('/datafile/view/%i/' % self.dataset_file1.id) self.assertEqual(response['Content-Disposition'], 'inline; filename="%s"' % self.dataset_file1.filename) self.assertEqual(response.status_code, 200) self.assertEqual(response.content, 'Hello World!\n') # check view of file2 response = client.get('/datafile/view/%i/' % self.dataset_file2.id) # Should be forbidden self.assertEqual(response.status_code, 403) self.experiment2.public_access=Experiment.PUBLIC_ACCESS_FULL self.experiment2.save() # check view of file2 again response = client.get('/datafile/view/%i/' % self.dataset_file2.id) self.assertEqual(response.status_code, 200) # The following behaviour relies on ImageMagick if IMAGEMAGICK_AVAILABLE: # file2 should have a ".png" filename self.assertEqual(response['Content-Disposition'], 'inline; filename="%s"' % (self.dataset_file2.filename+'.png')) # file2 should be a PNG self.assertEqual(response['Content-Type'], 'image/png') png_signature = "\x89PNG\r\n\x1a\n" self.assertEqual(response.content[0:8], png_signature) else: # file2 should have a ".tiff" filename self.assertEqual(response['Content-Disposition'], 'inline; filename="%s"' % (self.dataset_file2.filename)) # file2 should be a TIFF self.assertEqual(response['Content-Type'], 'image/tiff') tiff_signature = "II\x2a\x00" self.assertEqual(response.content[0:4], tiff_signature) def _check_tar_file(self, content, rootdir, datafiles): # It should be a zip file with NamedTemporaryFile('w') as tempfile: tempfile.write(content) tempfile.flush() with open(tempfile.name, 'r') as zipread: # It should be a zip file (all of which start with "PK") expect(zipread.read(2)).to_equal('PK') expect(is_zipfile(tempfile.name)).to_be_truthy() with ZipFile(tempfile.name, 'r') as zf: expect(len(zf.namelist())).to_equal(len(datafiles)) for df in datafiles: filename = join(rootdir, str(df.dataset.id), df.filename) expect(filename in zf.namelist()).to_be_truthy() def _check_zip_file(self, content, rootdir, datafiles): # It should be a zip file with NamedTemporaryFile('w') as tempfile: tempfile.write(content) tempfile.flush() with open(tempfile.name, 'r') as zipread: # It should be a zip file (all of which start with "PK") expect(zipread.read(2)).to_equal('PK') expect(is_zipfile(tempfile.name)).to_be_truthy() zf = ZipFile(tempfile.name, 'r') expect(len(zf.namelist())).to_equal(len(datafiles)) for df in datafiles: filename = join(rootdir, str(df.dataset.id), df.filename) expect(filename in zf.namelist()).to_be_truthy() zf.close() def testDownload(self): client = Client() # check download for experiment1 response = client.get('/download/experiment/%i/zip/' % self.experiment1.id) self.assertEqual(response['Content-Disposition'], 'attachment; filename="experiment%s-complete.zip"' % self.experiment1.id) self.assertEqual(response.status_code, 200) self._check_zip_file(response.content, str(self.experiment1.id), reduce(lambda x, y: x + y, [ds.dataset_file_set.all() \ for ds in self.experiment1.datasets.all()])) # check download of file1 response = client.get('/download/datafile/%i/' % self.dataset_file1.id) self.assertEqual(response['Content-Disposition'], 'attachment; filename="%s"' % self.dataset_file1.filename) self.assertEqual(response.status_code, 200) self.assertEqual(response.content, 'Hello World!\n') # requesting file2 should be forbidden... response = client.get('/download/datafile/%i/' % self.dataset_file2.id) self.assertEqual(response.status_code, 403) # check dataset1 download response = client.post('/download/datafiles/', {'expid': self.experiment1.id, 'dataset': [self.dataset1.id], 'datafile': []}) self.assertEqual(response.status_code, 200) self._check_zip_file(response.content, 'datasets', self.dataset1.dataset_file_set.all()) # check dataset2 download response = client.post('/download/datafiles/', {'expid': self.experiment2.id, 'dataset': [self.dataset2.id], 'datafile': []}) self.assertEqual(response.status_code, 403) # check datafile1 download via POST response = client.post('/download/datafiles/', {'expid': self.experiment1.id, 'dataset': [], 'datafile': [self.dataset_file1.id]}) self.assertEqual(response.status_code, 200) self._check_zip_file(response.content, 'datasets', [self.dataset_file1]) # check datafile2 download via POST response = client.post('/download/datafiles/', {'expid': self.experiment2.id, 'dataset': [], 'datafile': [self.dataset_file2.id]}) self.assertEqual(response.status_code, 403) # Check datafile2 download with second experiment to "metadata only" self.experiment2.public_access=Experiment.PUBLIC_ACCESS_METADATA self.experiment2.save() response = client.get('/download/datafile/%i/' % self.dataset_file2.id) # Metadata-only means "no file access"! self.assertEqual(response.status_code, 403) # Check datafile2 download with second experiment to public self.experiment2.public_access=Experiment.PUBLIC_ACCESS_FULL self.experiment2.save() response = client.get('/download/datafile/%i/' % self.dataset_file2.id) self.assertEqual(response.status_code, 200) # This should be a TIFF (which often starts with "II\x2a\x00") self.assertEqual(response['Content-Type'], 'image/tiff') self.assertEqual(response.content[0:4], "II\x2a\x00") def testDatasetFile(self): # check registered text file for physical file meta information df = Dataset_File.objects.get(pk=self.dataset_file1.id) try: from magic import Magic self.assertEqual(df.mimetype, 'text/plain; charset=us-ascii') except: # XXX Test disabled becuse lib magic can't be loaded pass self.assertEqual(df.size, str(13)) self.assertEqual(df.md5sum, '8ddd8be4b179a529afa5f2ffae4b9858') # now check a JPG file filename = abspath(join(dirname(__file__), '../static/images/ands-logo-hi-res.jpg')) dataset = Dataset.objects.get(pk=self.dataset1.id) size, sha512sum = get_size_and_sha512sum(filename) pdf1 = Dataset_File(dataset=dataset, filename=basename(filename), size=str(size), sha512sum=sha512sum, url='file://%s' % filename, protocol='file') pdf1.verify() pdf1.save() try: from magic import Magic self.assertEqual(pdf1.mimetype, 'image/jpeg') except: # XXX Test disabled becuse lib magic can't be loaded pass self.assertEqual(pdf1.size, str(14232)) self.assertEqual(pdf1.md5sum, 'c450d5126ffe3d14643815204daf1bfb') # now check that we can override the physical file meta information pdf2 = Dataset_File(dataset=dataset, filename=basename(filename), url='file://%s' % filename, protocol='file', mimetype='application/vnd.openxmlformats-officedocument.presentationml.presentation', size=str(0), # Empty string always has the same hash sha512sum='cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e') pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/vnd.openxmlformats-officedocument.presentationml.presentation') except: # XXX Test disabled becuse lib magic can't be loaded pass self.assertEqual(pdf2.size, str(0)) self.assertEqual(pdf2.md5sum, '') pdf2.mimetype = '' pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/pdf') except: # XXX Test disabled becuse lib magic can't be loaded pass
def testDatasetFile(self): # check registered text file for physical file meta information df = Dataset_File.objects.get(pk=self.dataset_file1.id) try: from magic import Magic self.assertEqual(df.mimetype, 'text/plain; charset=us-ascii') except: # XXX Test disabled becuse lib magic can't be loaded pass self.assertEqual(df.size, str(13)) self.assertEqual(df.md5sum, '8ddd8be4b179a529afa5f2ffae4b9858') # now check a JPG file filename = abspath(join(dirname(__file__), '../static/images/ands-logo-hi-res.jpg')) dataset = Dataset.objects.get(pk=self.dataset1.id) size, sha512sum = get_size_and_sha512sum(filename) pdf1 = Dataset_File(dataset=dataset, filename=basename(filename), size=str(size), sha512sum=sha512sum, url='file://%s' % filename, protocol='file') pdf1.verify() pdf1.save() try: from magic import Magic self.assertEqual(pdf1.mimetype, 'image/jpeg') except: # XXX Test disabled becuse lib magic can't be loaded pass self.assertEqual(pdf1.size, str(14232)) self.assertEqual(pdf1.md5sum, 'c450d5126ffe3d14643815204daf1bfb') # now check that we can override the physical file meta information pdf2 = Dataset_File(dataset=dataset, filename=basename(filename), url='file://%s' % filename, protocol='file', mimetype='application/vnd.openxmlformats-officedocument.presentationml.presentation', size=str(0), # Empty string always has the same hash sha512sum='cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e') pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/vnd.openxmlformats-officedocument.presentationml.presentation') except: # XXX Test disabled becuse lib magic can't be loaded pass self.assertEqual(pdf2.size, str(0)) self.assertEqual(pdf2.md5sum, '') pdf2.mimetype = '' pdf2.save() try: from magic import Magic self.assertEqual(pdf2.mimetype, 'application/pdf') except: # XXX Test disabled becuse lib magic can't be loaded pass