@@ -243,7 +243,7 @@ def _setup_rodsuser_and_optional_pw(self, name, make_irods_pw = False):
243243 finally :
244244 self .admin .users .remove ( name )
245245
246- def tst0 (self , ssl_opt , auth_opt , env_opt , name = TEST_RODS_USER , make_irods_pw = False ):
246+ def tst0 (self , ssl_opt , auth_opt , env_opt , name = TEST_RODS_USER , make_irods_pw = False ):
247247
248248 with self ._setup_rodsuser_and_optional_pw (name = name , make_irods_pw = make_irods_pw ):
249249 self .envdirs = self .create_env_dirs ()
@@ -346,6 +346,34 @@ def test_7(self):
346346 def test_8 (self ):
347347 self .tst0 ( ssl_opt = False , auth_opt = 'pam' , env_opt = True )
348348
349+ @unittest .skipUnless (TEST_PAM_PW_OVERRIDE , "Skipping unless pam password is overridden (e.g. to test special characters)" )
350+ def test_escaped_pam_password_chars__362 (self ):
351+ with self ._setup_rodsuser_and_optional_pw (name = TEST_RODS_USER ):
352+ context = ssl ._create_unverified_context (
353+ purpose = ssl .Purpose .SERVER_AUTH , capath = None , cadata = None , cafile = None ,
354+ )
355+ ssl_settings = {
356+ 'client_server_negotiation' : 'request_server_negotiation' ,
357+ 'client_server_policy' : 'CS_NEG_REQUIRE' ,
358+ 'encryption_algorithm' : 'AES-256-CBC' ,
359+ 'encryption_key_size' : 32 ,
360+ 'encryption_num_hash_rounds' : 16 ,
361+ 'encryption_salt_size' : 8 ,
362+ 'ssl_ca_certificate_file' : '/etc/irods/ssl/irods.crt' ,
363+ 'ssl_context' : context
364+ }
365+ irods_session = iRODSSession (
366+ host = self .admin .host ,
367+ port = self .admin .port ,
368+ zone = self .admin .zone ,
369+ user = TEST_RODS_USER ,
370+ password = TEST_PAM_PW_OVERRIDE ,
371+ authentication_scheme = 'pam' ,
372+ ** ssl_settings
373+ )
374+ home_coll = '/{0.zone}/home/{0.username}' .format (irods_session )
375+ self .assertEqual (irods_session .collections .get (home_coll ).path , home_coll )
376+
349377class TestAnonymousUser (unittest .TestCase ):
350378
351379 def setUp (self ):
0 commit comments