@@ -314,3 +314,106 @@ def test_remove_trusted_nfs_clients(self):
314314 @staticmethod
315315 def _get_get_trusted_nfs_client_object (address = None ):
316316 return NFSv3AccessControlEntry (address = address or '192.168.68.0' , netmask = '255.255.255.0' , perm = FileAccessMode .RO )
317+
318+ def _test_get_access_type (self , expected_access ):
319+ share_name = 'share'
320+ self ._init_filer (get_response = expected_access )
321+ actual_access = shares .Shares (self ._filer ).get_access_type (share_name )
322+ self ._filer .get .assert_called_once_with ('/config/fileservices/share/' + share_name + '/access' )
323+ self .assertEqual (actual_access , expected_access )
324+
325+ def test_get_access_type (self ):
326+ for access in [k for k in Acl .__dict__ if not k .startswith ('_' )]:
327+ self ._test_get_access_type (access )
328+
329+ def _test_set_access_type (self , access ):
330+ share_name = 'share'
331+ self ._init_filer ()
332+ shares .Shares (self ._filer ).set_access_type (share_name , access )
333+ self ._filer .put .assert_called_once_with ('/config/fileservices/share/' + share_name + '/access' , access )
334+
335+ def test_set_access_type (self ):
336+ for access in [k for k in Acl .__dict__ if not k .startswith ('_' )]:
337+ self ._test_set_access_type (access )
338+
339+ def test_get_screened_file_types (self ):
340+ share_name = 'share'
341+ get_response = ['exe' , 'sh' ]
342+ self ._init_filer (get_response = get_response )
343+ screened_file_types = shares .Shares (self ._filer ).get_screened_file_types (share_name )
344+ self ._filer .get .assert_called_once_with ('/config/fileservices/share/' + share_name + '/screenedFileTypes' )
345+ self .assertListEqual (get_response , screened_file_types )
346+
347+ def test_set_screened_file_types (self ):
348+ share_name = 'share'
349+ current_screened_file_type = 'old'
350+ current_share = self ._test_screened_file_types_get_current_share (share_name , Acl .WindowsNT , [current_screened_file_type ])
351+ self ._init_filer (get_response = current_share )
352+ new_screened_file_type = ['new' ]
353+ shares .Shares (self ._filer ).set_screened_file_types (share_name , new_screened_file_type )
354+ self ._filer .get .assert_called_once_with ('/config/fileservices/share/' + share_name )
355+ self ._filer .put .assert_called_once_with ('/config/fileservices/share/' + share_name + '/screenedFileTypes' , mock .ANY )
356+ self .assertListEqual (new_screened_file_type , self ._filer .put .call_args [0 ][1 ])
357+
358+ def test_set_screened_file_types_invalid_access (self ):
359+ share_name = 'share'
360+ current_share = self ._test_screened_file_types_get_current_share (
361+ share_name ,
362+ Acl .OnlyAuthenticatedUsers ,
363+ ['old' ]
364+ )
365+ self ._init_filer (get_response = current_share )
366+ with self .assertRaises (exception .CTERAException ):
367+ shares .Shares (self ._filer ).set_screened_file_types (share_name , ['new' ])
368+
369+ def test_add_screened_file_types (self ):
370+ share_name = 'share'
371+ current_screened_file_type = ['old' ]
372+ current_share = self ._test_screened_file_types_get_current_share (share_name , Acl .WindowsNT , current_screened_file_type )
373+ self ._init_filer (get_response = current_share )
374+ new_screened_file_type = ['new' ]
375+ shares .Shares (self ._filer ).add_screened_file_types (share_name , new_screened_file_type )
376+ self ._filer .get .assert_called_once_with ('/config/fileservices/share/' + share_name )
377+ self ._filer .put .assert_called_once_with ('/config/fileservices/share/' + share_name + '/screenedFileTypes' , mock .ANY )
378+ self .assertListEqual (sorted (current_screened_file_type + new_screened_file_type ), sorted (self ._filer .put .call_args [0 ][1 ]))
379+
380+ def test_add_screened_file_types_invalid_access (self ):
381+ share_name = 'share'
382+ current_share = self ._test_screened_file_types_get_current_share (
383+ share_name ,
384+ Acl .OnlyAuthenticatedUsers ,
385+ ['old' ]
386+ )
387+ self ._init_filer (get_response = current_share )
388+ with self .assertRaises (exception .CTERAException ):
389+ shares .Shares (self ._filer ).add_screened_file_types (share_name , ['new' ])
390+
391+ def test_remove_screened_file_types (self ):
392+ share_name = 'share'
393+ current_screened_file_types = ['old' , 'new' ]
394+ current_share = self ._test_screened_file_types_get_current_share (share_name , Acl .WindowsNT , current_screened_file_types )
395+ self ._init_filer (get_response = current_share )
396+ removed_screened_file_type = 'new'
397+ shares .Shares (self ._filer ).remove_screened_file_types (share_name , [removed_screened_file_type ])
398+ self ._filer .get .assert_called_once_with ('/config/fileservices/share/' + share_name )
399+ self ._filer .put .assert_called_once_with ('/config/fileservices/share/' + share_name + '/screenedFileTypes' , mock .ANY )
400+ self .assertListEqual (['old' ], sorted (self ._filer .put .call_args [0 ][1 ]))
401+
402+ def test_remove_screened_file_types_invalid_access (self ):
403+ share_name = 'share'
404+ current_share = self ._test_screened_file_types_get_current_share (
405+ share_name ,
406+ Acl .OnlyAuthenticatedUsers ,
407+ ['old' ]
408+ )
409+ self ._init_filer (get_response = current_share )
410+ with self .assertRaises (exception .CTERAException ):
411+ shares .Shares (self ._filer ).remove_screened_file_types (share_name , ['new' ])
412+
413+ @staticmethod
414+ def _test_screened_file_types_get_current_share (name , access , current_list ):
415+ share = Object ()
416+ share .name = name
417+ share .access = access
418+ share .screenedFileTypes = current_list
419+ return share
0 commit comments