def test_mail_creation(self): users_without_mail = [ u for u in self.users_to_sync if u.User.email is None ] if not users_without_mail: raise RuntimeError( "Fixtures do not provide a syncable user without a mail address" ) mod_user = users_without_mail[0].User mod_dn = UserRecord.from_db_user(mod_user, self.user_base_dn).dn mod_user.email = '*****@*****.**' session.add(mod_user) session.commit() users_to_sync = fetch_users_to_sync(session, self.config.required_property) exporter = self.build_user_exporter(current_users=self.new_ldap_users, desired_users=users_to_sync) exporter.compile_actions() relevant_actions = [ a for a in exporter.actions if not isinstance(a, IdleAction) ] print(relevant_actions) self.assertEqual(len(relevant_actions), 1) self.assertEqual(type(relevant_actions[0]), ModifyAction) exporter.execute_all(self.conn) newest_users = fetch_current_ldap_users(self.conn, base_dn=self.user_base_dn) modified_ldap_record = self.get_by_dn(newest_users, mod_dn) self.assertIn('mail', modified_ldap_record['attributes']) self.assertEqual(modified_ldap_record['attributes']['mail'], [mod_user.email])
def test_user_attributes_synced_correctly(self): records = {} for result in self.users_to_sync: record = UserRecord.from_db_user( result.User, self.user_base_dn, should_be_blocked=result.should_be_blocked) records[record.dn] = record for ldap_user in self.new_ldap_users: ldap_record = UserRecord.from_ldap_record(ldap_user) self.assert_attributes_equal(records[ldap_record.dn], ldap_record)
def attrs(self): class complete_user: name = 'foo bar shizzle' login = '******' email = '*****@*****.**' email_forwarded = True class unix_account: uid = 10006 gid = 100 home_directory = '/home/test' login_shell = '/bin/bash' passwd_hash = 'somehash' return UserRecord.from_db_user(complete_user, base_dn='o=test').attrs
def test_mail_deletion(self): users_with_mail = [ u for u in self.users_to_sync if u.User.email is not None ] if not users_with_mail: raise RuntimeError( "Fixtures do not provide a syncable user with a mail address") modified_user = users_with_mail[0].User mod_dn = UserRecord.from_db_user(modified_user, self.user_base_dn).dn modified_user.email = '*****@*****.**' session.add(modified_user) session.commit() self.users_to_sync = fetch_users_to_sync(session, self.config.required_property) self.sync_all() newest_users = fetch_current_ldap_users(self.conn, base_dn=self.user_base_dn) modified_record = self.get_by_dn(newest_users, mod_dn) self.assertNotIn('mail', modified_record)
def setUp(self): self.attrs = UserRecord.from_db_user(self.complete_user, base_dn='o=test').attrs