11import os
22
33import pytest
4- from django .core .exceptions import PermissionDenied , SuspiciousFileOperation
4+ from django .core .exceptions import PermissionDenied
55from django .core .files .base import ContentFile
66from django .core .files .uploadedfile import SimpleUploadedFile
77
@@ -17,7 +17,7 @@ def test_get_files_from_storage(self, freeze_upload_folder):
1717 )
1818 files = S3FileMiddleware .get_files_from_storage (
1919 [os .path .join (storage .aws_location , name )],
20- "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc " ,
20+ "VRIPlI1LCjUh1EtplrgxQrG8gSAaIwT48mMRlwaCytI " ,
2121 )
2222 file = next (files )
2323 assert file .read () == content
@@ -35,7 +35,7 @@ def test_process_request(self, freeze_upload_folder, rf):
3535 data = {
3636 "file" : "custom/location/tmp/s3file/s3_file.txt" ,
3737 "s3file" : "file" ,
38- "file-s3f-signature" : "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc " ,
38+ "file-s3f-signature" : "VRIPlI1LCjUh1EtplrgxQrG8gSAaIwT48mMRlwaCytI " ,
3939 },
4040 )
4141 S3FileMiddleware (lambda x : None )(request )
@@ -49,7 +49,7 @@ def test_process_request__location_escape(self, freeze_upload_folder, rf):
4949 data = {
5050 "file" : "custom/location/secrets/passwords.txt" ,
5151 "s3file" : "file" ,
52- "file-s3f-signature" : "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc " ,
52+ "file-s3f-signature" : "VRIPlI1LCjUh1EtplrgxQrG8gSAaIwT48mMRlwaCytI " ,
5353 },
5454 )
5555 with pytest .raises (PermissionDenied ) as e :
@@ -66,8 +66,8 @@ def test_process_request__multiple_files(self, freeze_upload_folder, rf):
6666 "custom/location/tmp/s3file/s3_file.txt" ,
6767 "custom/location/tmp/s3file/s3_other_file.txt" ,
6868 ],
69- "file-s3f-signature" : "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc " ,
70- "other_file-s3f-signature" : "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc " ,
69+ "file-s3f-signature" : "VRIPlI1LCjUh1EtplrgxQrG8gSAaIwT48mMRlwaCytI " ,
70+ "other_file-s3f-signature" : "VRIPlI1LCjUh1EtplrgxQrG8gSAaIwT48mMRlwaCytI " ,
7171 "s3file" : ["file" , "other_file" ],
7272 },
7373 )
@@ -88,9 +88,9 @@ def test_process_request__no_location(self, freeze_upload_folder, rf, settings):
8888 request = rf .post (
8989 "/" ,
9090 data = {
91- "file" : f "tmp/s3file/s3_file.txt" ,
91+ "file" : "tmp/s3file/s3_file.txt" ,
9292 "s3file" : "file" ,
93- "file-s3f-signature" : "scjzm3N8njBQIVSGEhOchtM0TkGyb2U6OXGLVlRUZhY " ,
93+ "file-s3f-signature" : "pJYaM4x7RzLDLVXWuphK2dMqqc0oLr_jZFasfGU7BhU " ,
9494 },
9595 )
9696 S3FileMiddleware (lambda x : None )(request )
@@ -103,7 +103,7 @@ def test_process_request__no_file(self, freeze_upload_folder, rf, caplog):
103103 data = {
104104 "file" : "custom/location/tmp/s3file/does_not_exist.txt" ,
105105 "s3file" : "file" ,
106- "file-s3f-signature" : "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc " ,
106+ "file-s3f-signature" : "VRIPlI1LCjUh1EtplrgxQrG8gSAaIwT48mMRlwaCytI " ,
107107 },
108108 )
109109 S3FileMiddleware (lambda x : None )(request )
@@ -119,6 +119,7 @@ def test_process_request__no_signature(self, rf, caplog):
119119 )
120120 with pytest .raises (PermissionDenied ) as e :
121121 S3FileMiddleware (lambda x : None )(request )
122+ assert "No signature provided." in str (e .value )
122123
123124 def test_process_request__wrong_signature (self , rf , caplog ):
124125 request = rf .post (
@@ -131,3 +132,10 @@ def test_process_request__wrong_signature(self, rf, caplog):
131132 )
132133 with pytest .raises (PermissionDenied ) as e :
133134 S3FileMiddleware (lambda x : None )(request )
135+ assert "Illegal signature!" in str (e .value )
136+
137+ def test_sign_s3_key_prefix (self , rf ):
138+ assert (
139+ S3FileMiddleware .sign_s3_key_prefix ("test/test" )
140+ == "a8KINhIf1IpSD5sgdXE4wEQodZorq_8CmwkqZ5V6nr4"
141+ )
0 commit comments