88import os
99import unittest
1010from frappe import _
11- from frappe .core .doctype .file .file import move_file
11+ from frappe .core .doctype .file .file import move_file , get_files_in_folder
1212from frappe .utils import get_files_path
1313# test_records = frappe.get_test_records('File')
1414
@@ -390,3 +390,61 @@ def test_parent_directory_validation_in_file_url(self):
390390 file1 .reload ()
391391 file1 .file_url = '/private/files/parent_dir2.txt'
392392 file1 .save ()
393+
394+
395+ class TestAttachmentsAccess (unittest .TestCase ):
396+
397+ def test_attachments_access (self ):
398+
399+ frappe .set_user ('test4@example.com' )
400+ self .attached_to_doctype , self .attached_to_docname = make_test_doc ()
401+
402+ frappe .get_doc ({
403+ "doctype" : "File" ,
404+ "file_name" : 'test_user.txt' ,
405+ "attached_to_doctype" : self .attached_to_doctype ,
406+ "attached_to_name" : self .attached_to_docname ,
407+ "content" : 'Testing User'
408+ }).insert ()
409+
410+ frappe .get_doc ({
411+ "doctype" : "File" ,
412+ "file_name" : "test_user_home.txt" ,
413+ "content" : 'User Home' ,
414+ }).insert ()
415+
416+ frappe .set_user ('test@example.com' )
417+
418+ frappe .get_doc ({
419+ "doctype" : "File" ,
420+ "file_name" : 'test_system_manager.txt' ,
421+ "attached_to_doctype" : self .attached_to_doctype ,
422+ "attached_to_name" : self .attached_to_docname ,
423+ "content" : 'Testing System Manager'
424+ }).insert ()
425+
426+ frappe .get_doc ({
427+ "doctype" : "File" ,
428+ "file_name" : "test_sm_home.txt" ,
429+ "content" : 'System Manager Home' ,
430+ }).insert ()
431+
432+ system_manager_files = [file .file_name for file in get_files_in_folder ('Home' )]
433+ system_manager_attachments_files = [file .file_name for file in get_files_in_folder ('Home/Attachments' )]
434+
435+ frappe .set_user ('test4@example.com' )
436+ user_files = [file .file_name for file in get_files_in_folder ('Home' )]
437+ user_attachments_files = [file .file_name for file in get_files_in_folder ('Home/Attachments' )]
438+
439+ self .assertIn ('test_sm_home.txt' , system_manager_files )
440+ self .assertNotIn ('test_sm_home.txt' , user_files )
441+ self .assertIn ('test_user_home.txt' , system_manager_files )
442+ self .assertIn ('test_user_home.txt' , user_files )
443+
444+ self .assertIn ('test_system_manager.txt' , system_manager_attachments_files )
445+ self .assertNotIn ('test_system_manager.txt' , user_attachments_files )
446+ self .assertIn ('test_user.txt' , system_manager_attachments_files )
447+ self .assertIn ('test_user.txt' , user_attachments_files )
448+
449+ frappe .set_user ('Administrator' )
450+ frappe .db .rollback ()
0 commit comments