@@ -31,23 +31,15 @@ class TestS3FileInput:
3131 def url (self ):
3232 return reverse ("upload" )
3333
34- @pytest .fixture
35- def freeze (self , monkeypatch ):
36- """Freeze datetime and UUID."""
37- monkeypatch .setattr (
38- "s3file.forms.S3FileInputMixin.upload_folder" ,
39- os .path .join (storage .aws_location , "tmp" ),
40- )
41-
42- def test_value_from_datadict (self , client , upload_file ):
43- print (storage .location )
34+ def test_value_from_datadict (self , freeze_upload_folder , client , upload_file ):
4435 with open (upload_file ) as f :
45- uploaded_file = storage .save ("test.jpg" , f )
36+ uploaded_file = storage .save (freeze_upload_folder / "test.jpg" , f )
4637 response = client .post (
4738 reverse ("upload" ),
4839 {
49- "file" : json .dumps ([uploaded_file ]),
50- "s3file" : '["file"]' ,
40+ "file" : f"custom/location/{ uploaded_file } " ,
41+ "file-s3f-signature" : "m94qBxBsnMIuIICiY133kX18KkllSPMVbhGAdAwNn1A" ,
42+ "s3file" : "file" ,
5143 },
5244 )
5345
@@ -82,7 +74,7 @@ def test_clear(self, filemodel):
8274 assert form .is_valid ()
8375 assert not form .cleaned_data ["file" ]
8476
85- def test_build_attr (self ):
77+ def test_build_attr (self , freeze_upload_folder ):
8678 assert set (ClearableFileInput ().build_attrs ({}).keys ()) == {
8779 "class" ,
8880 "data-url" ,
@@ -92,21 +84,26 @@ def test_build_attr(self):
9284 "data-fields-x-amz-credential" ,
9385 "data-fields-policy" ,
9486 "data-fields-key" ,
87+ "data-s3f-signature" ,
9588 }
89+ assert (
90+ ClearableFileInput ().build_attrs ({})["data-s3f-signature" ]
91+ == "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc"
92+ )
9693 assert ClearableFileInput ().build_attrs ({})["class" ] == "s3file"
9794 assert (
9895 ClearableFileInput ().build_attrs ({"class" : "my-class" })["class" ]
9996 == "my-class s3file"
10097 )
10198
102- def test_get_conditions (self , freeze ):
99+ def test_get_conditions (self , freeze_upload_folder ):
103100 conditions = ClearableFileInput ().get_conditions (None )
104101 assert all (
105102 condition in conditions
106103 for condition in [
107104 {"bucket" : "test-bucket" },
108105 {"success_action_status" : "201" },
109- ["starts-with" , "$key" , "custom/location/tmp" ],
106+ ["starts-with" , "$key" , "custom/location/tmp/s3file " ],
110107 ["starts-with" , "$Content-Type" , "" ],
111108 ]
112109 ), conditions
@@ -145,20 +142,24 @@ def test_no_js_error(self, driver, live_server):
145142 error = driver .find_element (By .XPATH , "//body[@JSError]" )
146143 pytest .fail (error .get_attribute ("JSError" ))
147144
148- def test_file_insert (self , request , driver , live_server , upload_file , freeze ):
145+ def test_file_insert (
146+ self , request , driver , live_server , upload_file , freeze_upload_folder
147+ ):
149148 driver .get (live_server + self .url )
150149 file_input = driver .find_element (By .XPATH , "//input[@name='file']" )
151150 file_input .send_keys (upload_file )
152151 assert file_input .get_attribute ("name" ) == "file"
153152 with wait_for_page_load (driver , timeout = 10 ):
154153 file_input .submit ()
155- assert storage .exists ("tmp/%s.txt" % request .node .name )
154+ assert storage .exists ("tmp/s3file/ %s.txt" % request .node .name )
156155
157156 with pytest .raises (NoSuchElementException ):
158157 error = driver .find_element (By .XPATH , "//body[@JSError]" )
159158 pytest .fail (error .get_attribute ("JSError" ))
160159
161- def test_file_insert_submit_value (self , driver , live_server , upload_file , freeze ):
160+ def test_file_insert_submit_value (
161+ self , driver , live_server , upload_file , freeze_upload_folder
162+ ):
162163 driver .get (live_server + self .url )
163164 file_input = driver .find_element (By .XPATH , "//input[@name='file']" )
164165 file_input .send_keys (upload_file )
@@ -178,7 +179,7 @@ def test_file_insert_submit_value(self, driver, live_server, upload_file, freeze
178179 assert "save_continue" in driver .page_source
179180 assert "continue_value" in driver .page_source
180181
181- def test_progress (self , driver , live_server , upload_file , freeze ):
182+ def test_progress (self , driver , live_server , upload_file , freeze_upload_folder ):
182183 driver .get (live_server + self .url )
183184 file_input = driver .find_element (By .XPATH , "//input[@name='file']" )
184185 file_input .send_keys (upload_file )
@@ -202,16 +203,23 @@ def test_multi_file(
202203 self ,
203204 driver ,
204205 live_server ,
205- freeze ,
206+ freeze_upload_folder ,
206207 upload_file ,
207208 another_upload_file ,
208209 yet_another_upload_file ,
209210 ):
210211 driver .get (live_server + self .url )
211212 file_input = driver .find_element (By .XPATH , "//input[@name='file']" )
212- file_input .send_keys (" \n " .join ([upload_file , another_upload_file ]))
213+ file_input .send_keys (
214+ " \n " .join (
215+ [
216+ str (freeze_upload_folder / upload_file ),
217+ str (freeze_upload_folder / another_upload_file ),
218+ ]
219+ )
220+ )
213221 file_input = driver .find_element (By .XPATH , "//input[@name='other_file']" )
214- file_input .send_keys (yet_another_upload_file )
222+ file_input .send_keys (str ( freeze_upload_folder / yet_another_upload_file ) )
215223 save_button = driver .find_element (By .XPATH , "//input[@name='save']" )
216224 with wait_for_page_load (driver , timeout = 10 ):
217225 save_button .click ()
0 commit comments