Ejemplo n.º 1
0
class EmptyAttributeRecordTestCase(TestCase):
    def setUp(self):
        self.record = UserRecord(dn='test', attrs={'mail': None})

    def test_attribute_is_empty_list(self):
        self.assertEqual(self.record.attrs['mail'], [])

    def test_empty_attribute_removed(self):
        self.record.remove_empty_attributes()
        self.assertNotIn('mail', self.record.attrs)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 def test_record_from_ldap_record(self):
     ldapsearch_record = {
         'dn': 'somedn',
         'attributes': {
             'mail': 'mail',
             'gecos': 'baz'
         },
         'raw_attributes': {
             'mail': b'mail'
         }
     }
     record = UserRecord.from_ldap_record(ldapsearch_record)
     assertSubDict({'mail': ['mail'], 'gecos': ['baz']}, record.attrs)
     for key in UserRecord.get_synced_attributes():
         assert key in record.attrs
Ejemplo n.º 4
0
 def setUp(self):
     super(DeleteActionTestCase, self).setUp()
     self.uid = 'shizzle'
     self.dn = dn_from_username(self.uid, base=self.base)
     self.connection.add(self.dn, UserRecord.LDAP_OBJECTCLASSES)
     record = UserRecord(dn=self.dn, attrs={})
     DeleteAction(record=record).execute(self.connection)
Ejemplo n.º 5
0
    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])
Ejemplo n.º 6
0
 def objects(self, dn, connection, base):
     connection.add(dn, UserRecord.LDAP_OBJECTCLASSES)
     record = UserRecord(dn=dn, attrs={})
     action = ModifyAction(record=record,
                           modifications={'mail': '*****@*****.**'})
     action.execute(connection)
     return get_all_objects(connection, base)
Ejemplo n.º 7
0
 def record(self):
     return UserRecord(dn='test',
                       attrs={
                           'userPassword': "******",
                           'mail': None,
                           'cn': "User",
                           'uid': 50
                       })
Ejemplo n.º 8
0
 def setUp(self):
     self.record = UserRecord(dn='test',
                              attrs={
                                  'userPassword': "******",
                                  'mail': None,
                                  'cn': "User",
                                  'uid': 50
                              })
Ejemplo n.º 9
0
 def setUp(self):
     super(ModifyActionTestCase, self).setUp()
     self.uid = 'shizzle'
     self.dn = dn_from_username(self.uid, base=self.base)
     self.connection.add(self.dn, UserRecord.LDAP_OBJECTCLASSES)
     record = UserRecord(dn=self.dn, attrs={})
     action = ModifyAction(record=record,
                           modifications={'mail': '*****@*****.**'})
     action.execute(self.connection)
Ejemplo n.º 10
0
    def setUp(self):
        super(AddActionTestCase, self).setUp()
        self.attributes = {
            'objectClass': UserRecord.LDAP_OBJECTCLASSES,
            'mail': ['bas'],
            'userPassword': ['$1$dtruiandetnuhgaldrensutrhawtruhs']
        }
        self.uid = 'shizzle'
        self.dn = dn_from_username(self.uid, base=self.base)
        record = UserRecord(dn=self.dn, attrs=self.attributes)
        action = AddAction(record=record)

        action.execute(self.connection)

        self.objects = self.get_all_objects()
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
 def setUp(self):
     self.record = UserRecord(dn='test', attrs={'mail': 'shizzle'})
Ejemplo n.º 14
0
 def objects(self, dn, connection, base):
     connection.add(dn, UserRecord.LDAP_OBJECTCLASSES)
     record = UserRecord(dn=dn, attrs={})
     DeleteAction(record=record).execute(connection)
     return get_all_objects(connection, base)
Ejemplo n.º 15
0
 def test_record_equality(self, record):
     assert record == UserRecord(dn='test', attrs={'mail': 'shizzle'})
Ejemplo n.º 16
0
 def setUp(self):
     self.record = UserRecord(dn='test', attrs={'mail': None})
Ejemplo n.º 17
0
 def setUp(self):
     self.desired_user = UserRecord(dn='user', attrs={})
     self.exporter = LdapExporter(desired=[self.desired_user], current=[])
     self.exporter.compile_actions()
Ejemplo n.º 18
0
 def test_correctly_different_record_modifies(self):
     difference = self.record - UserRecord(dn='test', attrs={'mail': ''})
     self.assertIsInstance(difference, ModifyAction)
Ejemplo n.º 19
0
 def test_record_noncanonical_equality(self, record):
     assert record == UserRecord(dn='test', attrs={'mail': ['shizzle']})
Ejemplo n.º 20
0
 def test_correctly_different_record_modifies(self, record):
     difference = record - UserRecord(dn='test', attrs={'mail': ''})
     assert isinstance(difference, ModifyAction)
Ejemplo n.º 21
0
 def test_different_dn_raises_typeerror(self):
     with self.assertRaises(TypeError):
         # pylint: disable=expression-not-assigned
         self.record - UserRecord(dn='notatest', attrs={})
Ejemplo n.º 22
0
 def test_modify_action(self, attrs_current, attrs_desired, modifications):
     action = ModifyAction.from_two_records(
         desired_record=UserRecord(dn=None, attrs=attrs_desired),
         current_record=UserRecord(dn=None, attrs=attrs_current))
     assert action.modifications == modifications
Ejemplo n.º 23
0
def test_execute_does_nothing():
    IdleAction(record=(UserRecord(dn='test', attrs={}))).execute()
Ejemplo n.º 24
0
 def setUp(self):
     self.record = UserRecord(dn='test', attrs={})
Ejemplo n.º 25
0
 def record(self):
     return UserRecord(dn='test', attrs={'mail': None})
Ejemplo n.º 26
0
 def setUp(self):
     self.attrs = UserRecord.from_db_user(self.complete_user,
                                          base_dn='o=test').attrs
Ejemplo n.º 27
0
 def test_desired_record_passed(self):
     desired = UserRecord(dn=None, attrs={'gecos': 'test'})
     current = UserRecord(dn=None, attrs={})
     action = ModifyAction.from_two_records(desired_record=desired,
                                            current_record=current)
     assert action.record == desired
Ejemplo n.º 28
0
 def test_record_equality(self):
     self.assertEqual(self.record,
                      UserRecord(dn='test', attrs={'mail': 'shizzle'}))
Ejemplo n.º 29
0
 def objects(self, connection, attributes, uid, dn, base):
     """Objects after executing an AddAction"""
     action = AddAction(record=UserRecord(dn=dn, attrs=attributes))
     action.execute(connection)
     return get_all_objects(connection, base)
Ejemplo n.º 30
0
 def test_record_noncanonical_equality(self):
     self.assertEqual(self.record,
                      UserRecord(dn='test', attrs={'mail': ['shizzle']}))