1313from django .urls import reverse
1414
1515from filer import settings as filer_settings
16- from finder .contrib . image . models import ImageFileModel
16+ from finder .models . file import FileModel
1717from finder .models .folder import FolderModel
1818from finder .models .realm import RealmModel
1919
@@ -72,13 +72,14 @@ def test_access_folder_not_found(admin_client):
7272
7373
7474@pytest .mark .django_db
75- def test_folder_upload_file (realm , admin_client ):
75+ @pytest .mark .parametrize ('binary_file' , ['small_file.bin' , 'huge_file.bin' ])
76+ def test_folder_upload_file (realm , admin_client , binary_file ):
7677 admin_url = reverse ('admin:finder_inodemodel_change' , kwargs = {'inode_id' : realm .root_folder .id })
7778 sha1 = hashlib .sha1 ()
78- with open (settings .BASE_DIR / 'workdir/assets/demo_image.png' , 'rb' ) as file_handle :
79+ with open (settings .BASE_DIR / 'workdir/assets' / binary_file , 'rb' ) as file_handle :
7980 response = admin_client .post (
8081 f'{ admin_url } /upload' ,
81- {'upload_file' : file_handle , 'filename' : 'demo_image.png' },
82+ {'upload_file' : file_handle , 'filename' : binary_file },
8283 content_type = MULTIPART_CONTENT % {'boundary' : 'BoUnDaRyStRiNg' },
8384 )
8485 file_handle .seek (0 )
@@ -87,15 +88,14 @@ def test_folder_upload_file(realm, admin_client):
8788 assert response .status_code == 200
8889 file_info = response .json ()['file_info' ]
8990 id = file_info ['id' ]
90- assert file_info ['name' ] == 'demo_image.png'
91- assert file_info ['file_size' ] == os .stat (settings .BASE_DIR / 'workdir/assets/demo_image.png' ).st_size
91+ assert file_info ['name' ] == binary_file
92+ assert file_info ['file_size' ] == os .stat (settings .BASE_DIR / 'workdir/assets' / binary_file ).st_size
9293 assert file_info ['sha1' ] == sha1 .hexdigest ()
93- assert file_info ['mime_type' ] == 'image/png '
94+ assert file_info ['mime_type' ] == 'application/octet-stream '
9495 filer_public = filer_settings .FILER_STORAGES ['public' ]['main' ]['UPLOAD_TO_PREFIX' ]
95- assert file_info ['download_url' ] == f'{ settings .MEDIA_URL } { filer_public } /{ id [0 :2 ]} /{ id [2 :4 ]} /{ id } /demo_image.png'
96- filer_public_thumbnails = filer_settings .FILER_STORAGES ['public' ]['thumbnails' ]['THUMBNAIL_OPTIONS' ]['base_dir' ]
97- assert file_info ['thumbnail_url' ] == f'{ settings .MEDIA_URL } { filer_public_thumbnails } /{ id [0 :2 ]} /{ id [2 :4 ]} /{ id } /demo_image__180x180.png'
98- assert ImageFileModel .objects .filter (id = id ).exists ()
96+ assert file_info ['download_url' ] == f'{ settings .MEDIA_URL } { filer_public } /{ id [0 :2 ]} /{ id [2 :4 ]} /{ id } /{ binary_file } '
97+ assert file_info ['thumbnail_url' ] == f'{ settings .STATIC_URL } filer/icons/file-unknown.svg'
98+ assert FileModel .objects .filter (id = id ).exists ()
9999
100100 # with wrong method
101101 response = admin_client .get (admin_url + '/upload' )
@@ -114,11 +114,11 @@ def test_folder_upload_file(realm, admin_client):
114114
115115
116116@pytest .fixture
117- def uploaded_image (realm , admin_user ):
118- file_name = 'demo_image.png '
117+ def uploaded_file (realm , admin_user ):
118+ file_name = 'small_file.bin '
119119 with open (settings .BASE_DIR / 'workdir/assets' / file_name , 'rb' ) as file_handle :
120- uploaded_file = SimpleUploadedFile (file_name , file_handle .read (), content_type = 'image/png ' )
121- return ImageFileModel .objects .create_from_upload (
120+ uploaded_file = SimpleUploadedFile (file_name , file_handle .read (), content_type = 'application/octet-stream ' )
121+ return FileModel .objects .create_from_upload (
122122 uploaded_file ,
123123 folder = realm .root_folder ,
124124 owner = admin_user ,
@@ -135,21 +135,21 @@ def sub_folder(realm, admin_user):
135135
136136
137137@pytest .mark .django_db
138- def test_folder_fetch (realm , uploaded_image , admin_client ):
138+ def test_folder_fetch (realm , uploaded_file , admin_client ):
139139 admin_url = reverse ('admin:finder_inodemodel_change' , kwargs = {'inode_id' : realm .root_folder .id })
140140 response = admin_client .get (f'{ admin_url } /fetch' )
141141 assert response .status_code == 200
142142 inodes = response .json ()['inodes' ]
143- assert ImageFileModel .objects .filter (parent = realm .root_folder , id = inodes [0 ]['id' ]).exists ()
143+ assert FileModel .objects .filter (parent = realm .root_folder , id = inodes [0 ]['id' ]).exists ()
144144
145145 # found using search query
146- response = admin_client .get (f'{ admin_url } /fetch?q=demo ' )
146+ response = admin_client .get (f'{ admin_url } /fetch?q=small ' )
147147 assert response .status_code == 200
148148 inodes = response .json ()['inodes' ]
149- assert ImageFileModel .objects .filter (parent = realm .root_folder , id = inodes [0 ]['id' ]).exists ()
149+ assert FileModel .objects .filter (parent = realm .root_folder , id = inodes [0 ]['id' ]).exists ()
150150
151151 # not found using search query
152- response = admin_client .get (f'{ admin_url } /fetch?q=nemo ' )
152+ response = admin_client .get (f'{ admin_url } /fetch?q=foobar ' )
153153 assert response .status_code == 200
154154 inodes = response .json ()['inodes' ]
155155 assert len (inodes ) == 0
@@ -172,42 +172,42 @@ def update_inode_url(realm):
172172
173173
174174@pytest .mark .django_db
175- def test_update_inode_nothing_changed (update_inode_url , uploaded_image , admin_client ):
175+ def test_update_inode_change_nothing (update_inode_url , uploaded_file , admin_client ):
176176 response = admin_client .post (
177177 update_inode_url ,
178- {'id' : str (uploaded_image .id ), 'name' : 'demo_image.png' },
178+ {'id' : str (uploaded_file .id ), 'name' : uploaded_file . name },
179179 content_type = 'application/json' ,
180180 )
181181 assert response .status_code == 200
182182
183183
184184@pytest .mark .django_db
185- def test_update_inode_update_filename (update_inode_url , uploaded_image , admin_client ):
185+ def test_update_inode_rename_file (update_inode_url , uploaded_file , admin_client ):
186186 response = admin_client .post (
187187 update_inode_url ,
188- {'id' : str (uploaded_image .id ), 'name' : 'renamed_image.png' },
188+ {'id' : str (uploaded_file .id ), 'name' : "renamed_file.bin" },
189189 content_type = 'application/json' ,
190190 )
191191 assert response .status_code == 200
192- uploaded_image .refresh_from_db ()
193- assert uploaded_image .name == 'renamed_image.png'
192+ uploaded_file .refresh_from_db ()
193+ assert uploaded_file .name == "renamed_file.bin"
194194
195195
196196@pytest .mark .django_db
197- def test_update_inode_update_using_invalid_filename (update_inode_url , uploaded_image , admin_client ):
197+ def test_update_inode_update_using_invalid_filename (update_inode_url , uploaded_file , admin_client ):
198198 response = admin_client .post (
199199 update_inode_url ,
200- {'id' : str (uploaded_image .id ), 'name' : 'invalid:name' },
200+ {'id' : str (uploaded_file .id ), 'name' : 'invalid:name' },
201201 content_type = 'application/json' ,
202202 )
203203 assert response .status_code == 409
204204
205205
206206@pytest .mark .django_db
207- def test_update_inode_using_existing_folder_name (update_inode_url , uploaded_image , sub_folder , admin_client ):
207+ def test_update_inode_using_existing_folder_name (update_inode_url , uploaded_file , sub_folder , admin_client ):
208208 response = admin_client .post (
209209 update_inode_url ,
210- {'id' : str (uploaded_image .id ), 'name' : "Sub Folder" },
210+ {'id' : str (uploaded_file .id ), 'name' : "Sub Folder" },
211211 content_type = 'application/json' ,
212212 )
213213 assert response .status_code == 409
@@ -226,10 +226,10 @@ def test_update_inode_rename_folder(update_inode_url, sub_folder, admin_client):
226226
227227
228228@pytest .mark .django_db
229- def test_update_inode_update_with_missing_content_type (update_inode_url , uploaded_image , admin_client ):
229+ def test_update_inode_update_with_missing_content_type (update_inode_url , uploaded_file , admin_client ):
230230 response = admin_client .post (
231231 update_inode_url ,
232- {'id' : str (uploaded_image .id ), 'name' : 'renamed_image.png ' },
232+ {'id' : str (uploaded_file .id ), 'name' : 'renamed_file.bin ' },
233233 )
234234 assert response .status_code == 415
235235
0 commit comments