@@ -31,23 +31,15 @@ class TestS3FileInput:
31
31
def url (self ):
32
32
return reverse ("upload" )
33
33
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 ):
44
35
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 )
46
37
response = client .post (
47
38
reverse ("upload" ),
48
39
{
49
- "file" : json .dumps ([uploaded_file ]),
50
- "s3file" : '["file"]' ,
40
+ "file" : f"custom/location/{ uploaded_file } " ,
41
+ "file-s3f-signature" : "m94qBxBsnMIuIICiY133kX18KkllSPMVbhGAdAwNn1A" ,
42
+ "s3file" : "file" ,
51
43
},
52
44
)
53
45
@@ -82,7 +74,7 @@ def test_clear(self, filemodel):
82
74
assert form .is_valid ()
83
75
assert not form .cleaned_data ["file" ]
84
76
85
- def test_build_attr (self ):
77
+ def test_build_attr (self , freeze_upload_folder ):
86
78
assert set (ClearableFileInput ().build_attrs ({}).keys ()) == {
87
79
"class" ,
88
80
"data-url" ,
@@ -92,21 +84,26 @@ def test_build_attr(self):
92
84
"data-fields-x-amz-credential" ,
93
85
"data-fields-policy" ,
94
86
"data-fields-key" ,
87
+ "data-s3f-signature" ,
95
88
}
89
+ assert (
90
+ ClearableFileInput ().build_attrs ({})["data-s3f-signature" ]
91
+ == "tFV9nGZlq9WX1I5Sotit18z1f4C_3lPnj33_zo4LZRc"
92
+ )
96
93
assert ClearableFileInput ().build_attrs ({})["class" ] == "s3file"
97
94
assert (
98
95
ClearableFileInput ().build_attrs ({"class" : "my-class" })["class" ]
99
96
== "my-class s3file"
100
97
)
101
98
102
- def test_get_conditions (self , freeze ):
99
+ def test_get_conditions (self , freeze_upload_folder ):
103
100
conditions = ClearableFileInput ().get_conditions (None )
104
101
assert all (
105
102
condition in conditions
106
103
for condition in [
107
104
{"bucket" : "test-bucket" },
108
105
{"success_action_status" : "201" },
109
- ["starts-with" , "$key" , "custom/location/tmp" ],
106
+ ["starts-with" , "$key" , "custom/location/tmp/s3file " ],
110
107
["starts-with" , "$Content-Type" , "" ],
111
108
]
112
109
), conditions
@@ -145,20 +142,24 @@ def test_no_js_error(self, driver, live_server):
145
142
error = driver .find_element (By .XPATH , "//body[@JSError]" )
146
143
pytest .fail (error .get_attribute ("JSError" ))
147
144
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
+ ):
149
148
driver .get (live_server + self .url )
150
149
file_input = driver .find_element (By .XPATH , "//input[@name='file']" )
151
150
file_input .send_keys (upload_file )
152
151
assert file_input .get_attribute ("name" ) == "file"
153
152
with wait_for_page_load (driver , timeout = 10 ):
154
153
file_input .submit ()
155
- assert storage .exists ("tmp/%s.txt" % request .node .name )
154
+ assert storage .exists ("tmp/s3file/ %s.txt" % request .node .name )
156
155
157
156
with pytest .raises (NoSuchElementException ):
158
157
error = driver .find_element (By .XPATH , "//body[@JSError]" )
159
158
pytest .fail (error .get_attribute ("JSError" ))
160
159
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
+ ):
162
163
driver .get (live_server + self .url )
163
164
file_input = driver .find_element (By .XPATH , "//input[@name='file']" )
164
165
file_input .send_keys (upload_file )
@@ -178,7 +179,7 @@ def test_file_insert_submit_value(self, driver, live_server, upload_file, freeze
178
179
assert "save_continue" in driver .page_source
179
180
assert "continue_value" in driver .page_source
180
181
181
- def test_progress (self , driver , live_server , upload_file , freeze ):
182
+ def test_progress (self , driver , live_server , upload_file , freeze_upload_folder ):
182
183
driver .get (live_server + self .url )
183
184
file_input = driver .find_element (By .XPATH , "//input[@name='file']" )
184
185
file_input .send_keys (upload_file )
@@ -202,16 +203,23 @@ def test_multi_file(
202
203
self ,
203
204
driver ,
204
205
live_server ,
205
- freeze ,
206
+ freeze_upload_folder ,
206
207
upload_file ,
207
208
another_upload_file ,
208
209
yet_another_upload_file ,
209
210
):
210
211
driver .get (live_server + self .url )
211
212
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
+ )
213
221
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 ) )
215
223
save_button = driver .find_element (By .XPATH , "//input[@name='save']" )
216
224
with wait_for_page_load (driver , timeout = 10 ):
217
225
save_button .click ()
0 commit comments