diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-02-09 11:55:10 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-02-09 11:55:10 +0100 |
commit | c63bd252372c800f821ec1096089fc41e2970064 (patch) | |
tree | 5152b9be1f412eabacc6de2b5c576f43176677d1 /ishtar_common/tests.py | |
parent | 7d80814da1b786fce93c884b6462b1458f273ab1 (diff) | |
download | Ishtar-c63bd252372c800f821ec1096089fc41e2970064.tar.bz2 Ishtar-c63bd252372c800f821ec1096089fc41e2970064.zip |
File storage: fix file save on broken link
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r-- | ishtar_common/tests.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index e535eda4b..90af3ac93 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -2913,6 +2913,54 @@ class PersonQATest(TestCase): ) +class StorageTest(TestCase): + def setUp(self) -> None: + self.st1 = models.SourceType.objects.create(label="Report", code="REP") + + def test_filesystemstorage(self) -> None: + # bug when link to non-existing files + image_path = os.path.join( + settings.ROOT_PATH, "..", "ishtar_common", "tests", "test.png" + ) + doc = models.Document.objects.create( + source_type=self.st1, + title="Operation report", + image=SimpleUploadedFile( + name="test.png", + content=open(image_path, "rb").read(), + content_type="image/png", + ), + ) + p = doc.image.path.split(os.sep) + # current save path + base_path = os.sep.join(p[:-1]) + # clean all files in order to have no random string on save + for f in os.listdir(base_path): + if f.startswith("test"): + os.remove(os.path.join(base_path, f)) + doc = models.Document.objects.get(pk=doc.pk) + doc.image.save( + "test.png", + SimpleUploadedFile( + name="test.png", + content=open(image_path, "rb").read(), + content_type="image/png", + ), + ) + doc = models.Document.objects.get(pk=doc.pk) + os.remove(doc.image.path) + os.symlink("/tmp/ZZZZZZZZZZZZZZZ", doc.image.path) # bad link + doc.image.save( + "test.png", + SimpleUploadedFile( + name="test.png", + content=open(image_path, "rb").read(), + content_type="image/png", + ), + ) + doc.save() + + class DocumentTest(TestCase): def setUp(self): Operation = apps.get_model("archaeological_operations", "Operation") |