@@ -1267,6 +1267,100 @@ def testVerifyRID(self):
12671267 serverctrls = self .compareSPRC (),
12681268 )
12691269
1270+ def testGetPasswdMapWithHomeDirectoryOverride (self ):
1271+ test_posix_account = (
1272+ "cn=test,ou=People,dc=example,dc=com" ,
1273+ {
1274+ "sambaSID" : ["S-1-5-21-2127521184-1604012920-1887927527-72713" ],
1275+ "uidNumber" : [1000 ],
1276+ "gidNumber" : [1000 ],
1277+ "uid" : ["test" ],
1278+ "cn" : ["Testguy McTest" ],
1279+ "homeDirectory" : ["/home/test" ],
1280+ "loginShell" : ["/bin/sh" ],
1281+ "userPassword" : ["p4ssw0rd" ],
1282+ "modifyTimestamp" : ["20070227012807Z" ],
1283+ },
1284+ )
1285+ config = dict (self .config )
1286+ config ["override_home_dir" ] = "/mnt/home/%u"
1287+ attrlist = [
1288+ "uid" ,
1289+ "uidNumber" ,
1290+ "gidNumber" ,
1291+ "gecos" ,
1292+ "cn" ,
1293+ "homeDirectory" ,
1294+ "loginShell" ,
1295+ "fullName" ,
1296+ "modifyTimestamp" ,
1297+ ]
1298+ self .ldap_mock .ReconnectLDAPObject .return_value .result3 .side_effect = [
1299+ (ldap .RES_SEARCH_ENTRY , [test_posix_account ], None , []),
1300+ (ldap .RES_SEARCH_RESULT , None , None , []),
1301+ ]
1302+
1303+ source = ldapsource .LdapSource (config )
1304+ data = source .GetPasswdMap ()
1305+
1306+ self .assertEqual (1 , len (data ))
1307+ first = data .PopItem ()
1308+ self .assertEqual ("/mnt/home/test" , first .dir )
1309+ self .ldap_mock .ReconnectLDAPObject .return_value .search_ext .assert_called_with (
1310+ base = mock .ANY ,
1311+ filterstr = mock .ANY ,
1312+ scope = mock .ANY ,
1313+ attrlist = attrlist ,
1314+ serverctrls = self .compareSPRC (),
1315+ )
1316+
1317+ def testGetPasswdMapWithHomeDirectoryOverrideNoSubstitution (self ):
1318+ test_posix_account = (
1319+ "cn=test,ou=People,dc=example,dc=com" ,
1320+ {
1321+ "sambaSID" : ["S-1-5-21-2127521184-1604012920-1887927527-72713" ],
1322+ "uidNumber" : [1000 ],
1323+ "gidNumber" : [1000 ],
1324+ "uid" : ["test" ],
1325+ "cn" : ["Testguy McTest" ],
1326+ "homeDirectory" : ["/home/test" ],
1327+ "loginShell" : ["/bin/sh" ],
1328+ "userPassword" : ["p4ssw0rd" ],
1329+ "modifyTimestamp" : ["20070227012807Z" ],
1330+ },
1331+ )
1332+ config = dict (self .config )
1333+ config ["override_home_dir" ] = "/shared/home"
1334+ attrlist = [
1335+ "uid" ,
1336+ "uidNumber" ,
1337+ "gidNumber" ,
1338+ "gecos" ,
1339+ "cn" ,
1340+ "homeDirectory" ,
1341+ "loginShell" ,
1342+ "fullName" ,
1343+ "modifyTimestamp" ,
1344+ ]
1345+ self .ldap_mock .ReconnectLDAPObject .return_value .result3 .side_effect = [
1346+ (ldap .RES_SEARCH_ENTRY , [test_posix_account ], None , []),
1347+ (ldap .RES_SEARCH_RESULT , None , None , []),
1348+ ]
1349+
1350+ source = ldapsource .LdapSource (config )
1351+ data = source .GetPasswdMap ()
1352+
1353+ self .assertEqual (1 , len (data ))
1354+ first = data .PopItem ()
1355+ self .assertEqual ("/shared/home" , first .dir )
1356+ self .ldap_mock .ReconnectLDAPObject .return_value .search_ext .assert_called_with (
1357+ base = mock .ANY ,
1358+ filterstr = mock .ANY ,
1359+ scope = mock .ANY ,
1360+ attrlist = attrlist ,
1361+ serverctrls = self .compareSPRC (),
1362+ )
1363+
12701364
12711365class TestUpdateGetter (unittest .TestCase ):
12721366 def setUp (self ):
0 commit comments