@@ -239,3 +239,84 @@ def test_removing_object_with_comments(admin_session):
239
239
240
240
with ShouldRaise (status_code = 404 ):
241
241
admin_session .get_sample (sample .dhash )
242
+
243
+
244
+ def test_adding_related_files (admin_session ):
245
+ testCase = RelationTestCase (admin_session )
246
+
247
+ Alice = testCase .new_user ("Alice" )
248
+ Bob = testCase .new_user ("Bob" , capabilities = ["adding_related_files" ])
249
+
250
+ SampleA = testCase .new_sample ("SampleA" )
251
+ SampleA .create (Alice , upload_as = "public" )
252
+ SampleB = testCase .new_sample ("SampleB" )
253
+
254
+ # Alice doesn't have capability
255
+ with ShouldRaise (status_code = 403 ):
256
+ Alice .session .add_related_file (SampleA .dhash , "RelatedFileA" )
257
+
258
+ # Everything works fine
259
+ Bob .session .add_related_file (SampleA .dhash , "RelatedFileA" )
260
+ assert len ( testCase .session .get_related_files (SampleA .dhash )['related_files' ] ) == 1
261
+
262
+ # Bob can't add related files to objects not accessible for him
263
+ with ShouldRaise (status_code = 404 ):
264
+ Bob .session .add_related_file (SampleB .dhash , "RelatedFileB" )
265
+
266
+
267
+ def test_removing_related_files (admin_session ):
268
+ testCase = RelationTestCase (admin_session )
269
+
270
+ Alice = testCase .new_user ("Alice" )
271
+ Bob = testCase .new_user ("Bob" , capabilities = ["removing_related_files" ])
272
+
273
+ SampleA = testCase .new_sample ("SampleA" )
274
+ SampleA .create (Alice , upload_as = "public" )
275
+ SampleB = testCase .new_sample ("SampleB" )
276
+
277
+ related_file_content = rand_string ()
278
+ related_file_dhash = calc_sha256 (related_file_content )
279
+
280
+ # Related files added by admin session
281
+ testCase .session .add_related_file (SampleA .dhash , "RelatedFile" , related_file_content )
282
+ testCase .session .add_related_file (SampleB .dhash , "RelatedFile" , related_file_content )
283
+
284
+ assert len ( testCase .session .get_related_files (SampleA .dhash )['related_files' ] ) == 1
285
+ assert len ( testCase .session .get_related_files (SampleB .dhash )['related_files' ] ) == 1
286
+
287
+ # Alice doesn't have capability
288
+ with ShouldRaise (status_code = 403 ):
289
+ Alice .session .remove_related_file (SampleA .dhash , related_file_dhash )
290
+
291
+ # Bob can't remove related files for objects not accessible for him
292
+ with ShouldRaise (status_code = 404 ):
293
+ Bob .session .remove_related_file (SampleB .dhash , related_file_dhash )
294
+
295
+ # Everything works file
296
+ Bob .session .remove_related_file (SampleA .dhash , related_file_dhash )
297
+
298
+ assert len ( testCase .session .get_related_files (SampleA .dhash )['related_files' ] ) == 0
299
+ assert len ( testCase .session .get_related_files (SampleB .dhash )['related_files' ] ) == 1
300
+
301
+
302
+ def test_accessing_related_files (admin_session ):
303
+ testCase = RelationTestCase (admin_session )
304
+
305
+ Alice = testCase .new_user ("Alice" )
306
+ Bob = testCase .new_user ("Bob" , capabilities = ["access_related_files" ])
307
+
308
+ SampleA = testCase .new_sample ("SampleA" )
309
+ SampleA .create (Alice , upload_as = "public" )
310
+ SampleB = testCase .new_sample ("SampleB" )
311
+
312
+ testCase .session .add_related_file (SampleA .dhash , "RelatedFile" )
313
+
314
+ # Alice doesn't have capability
315
+ assert len ( Alice .session .get_related_files (SampleA .dhash )['related_files' ] ) == 0
316
+
317
+ # Everything works fine
318
+ assert len ( Bob .session .get_related_files (SampleA .dhash )['related_files' ] ) == 1
319
+
320
+ # Bob can't access related files for objects not accessible for him
321
+ with ShouldRaise (status_code = 404 ):
322
+ Bob .session .get_related_files (SampleB .dhash )
0 commit comments