Пример #1
0
    def test_process_gender(self):
        """ Test parsing of gender field."""
        with self.app.app_context():
            female_data = self.fake_ldap_data(swissEduPersonGender='0')
            female_filtered = ldap._process_data(female_data)
            self.assertTrue(female_filtered['gender'] == 'female')

            male_data = self.fake_ldap_data(swissEduPersonGender='1')
            male_filtered = ldap._process_data(male_data)
            self.assertTrue(male_filtered['gender'] == 'male')
Пример #2
0
    def test_process_gender(self):
        """ Test parsing of gender field."""
        with self.app.app_context():
            female_data = self.fake_ldap_data(swissEduPersonGender='0')
            female_filtered = ldap._process_data(female_data)
            self.assertTrue(female_filtered['gender'] == 'female')

            male_data = self.fake_ldap_data(swissEduPersonGender='1')
            male_filtered = ldap._process_data(male_data)
            self.assertTrue(male_filtered['gender'] == 'male')
Пример #3
0
    def test_process_data(self):
        """The received LDAP data can look weird. Test that it is filtered."""
        with self.app.app_context():
            filtered = ldap._process_data(self.fake_ldap_data())
            expected = self.fake_filtered_data()

            self.assertEqual(filtered, expected)
Пример #4
0
    def test_process_data(self):
        """The received LDAP data can look weird. Test that it is filtered."""
        with self.app.app_context():
            filtered = ldap._process_data(self.fake_ldap_data())
            expected = self.fake_filtered_data()

            self.assertEqual(filtered, expected)
Пример #5
0
 def test_process_department(self):
     """Test department filtering. Relies on 'departmentNUmber' field."""
     with self.app.app_context():
         tests = (
             ('ETH Studentin D-ITET', 'itet'),
             ('ETH Student D-ITET', 'itet'),
             ('ETH Student D-MAVT', 'mavt'),
             ('ETH Studentin D-MAVT', 'mavt'),
             ('ETH Student D-ITET and more text that', 'itet'),
             ('ETH Studentin D-SOMETHINGELSE', None),
             ('any other text', None),
             ('', None),
         )
         for ldap_value, api_value in tests:
             data = self.fake_ldap_data(departmentNumber=[ldap_value])
             filtered = ldap._process_data(data)
             self.assertTrue(filtered['department'] == api_value)
Пример #6
0
 def test_process_department(self):
     """Test department filtering. Relies on 'departmentNUmber' field."""
     with self.app.app_context():
         tests = (
             ('ETH Studentin D-ITET', 'itet'),
             ('ETH Student D-ITET', 'itet'),
             ('ETH Student D-MAVT', 'mavt'),
             ('ETH Studentin D-MAVT', 'mavt'),
             ('ETH Student D-ITET and more text that', 'itet'),
             ('ETH Studentin D-SOMETHINGELSE', None),
             ('any other text', None),
             ('', None),
         )
         for ldap_value, api_value in tests:
             data = self.fake_ldap_data(departmentNumber=[ldap_value])
             filtered = ldap._process_data(data)
             self.assertTrue(filtered['department'] == api_value)
Пример #7
0
    def test_process_data_incomplete_response(self):
        """Test that processing ldap response works even if
        some fields are missing."""
        tests = (
            # (missing ldap_field, (missing filtered_fields), \
            #    {patch for expected})
            ('cn', ('nethz', 'email')),
            ('swissEduPersonMatriculationNumber', ('legi')),
            ('givenName', ('firstname')),
            ('sn', ('lastname')),
            ('swissEduPersonGender', ('gender')),
            ('departmentNumber', tuple(), {
                'department': None,
                'membership': 'none',
                'send_newsletter': False
            }),
            ('ou', ('send_newsletter'), {
                'membership': 'none'
            }),
        )

        with self.app.app_context():
            for test in tests:
                ldap_data = {
                    key: value
                    for key, value in self.fake_ldap_data().items()
                    if key != test[0]
                }
                filtered = ldap._process_data(ldap_data)
                expected = {
                    key: value
                    for key, value in self.fake_filtered_data().items()
                    if key not in test[1]
                }

                # Apply patch for expected data
                if len(test) > 2:
                    expected.update(**test[2])

                if (expected['membership'] == 'none'
                        and 'send_newsletter' in expected):
                    del expected['send_newsletter']

                self.assertEqual(filtered, expected)
Пример #8
0
    def test_process_membership(self):
        """Test membership filtering."""
        with self.app.app_context():
            # ou must contain 'VSETH Mitglied'
            # and department must not be None (see other test)
            our = 'ETH Student D-ITET'
            other = 'ETH Student D-OTHER'
            self.app.config['LDAP_DEPARTMENT_MAP'] = {our: 'itet'}

            tests = (
                # (departmentNUmber, ou, expected result)
                ([our], ['VSETH Mitglied'], 'regular'),
                ([our], ['blabla', 'VSETH Mitglied', 'random'], 'regular'),
                # Something missing
                ([our], ['novseth'], 'none'),
                ([other], ['VSETH Mitglied'], 'none'),
                ([other], ['nonono'], 'none'),
                ([other], [], 'none'),
            )

            for (dn, ou, result) in tests:
                data = self.fake_ldap_data(departmentNumber=dn, ou=ou)
                filtered = ldap._process_data(data)
                self.assertTrue(filtered['membership'] == result)
Пример #9
0
    def test_process_membership(self):
        """Test membership filtering."""
        with self.app.app_context():
            # ou must contain 'VSETH Mitglied'
            # and department must not be None (see other test)
            our = 'ETH Student D-ITET'
            other = 'ETH Student D-OTHER'
            self.app.config['LDAP_DEPARTMENT_MAP'] = {our: 'itet'}

            tests = (
                # (departmentNUmber, ou, expected result)
                ([our], ['VSETH Mitglied'], 'regular'),
                ([our], ['blabla', 'VSETH Mitglied', 'random'], 'regular'),
                # Something missing
                ([our], ['novseth'], 'none'),
                ([other], ['VSETH Mitglied'], 'none'),
                ([other], ['nonono'], 'none'),
                ([other], [], 'none'),
            )

            for (dn, ou, result) in tests:
                data = self.fake_ldap_data(departmentNumber=dn, ou=ou)
                filtered = ldap._process_data(data)
                self.assertTrue(filtered['membership'] == result)