Exemplo n.º 1
0
    def test_update_user_empty_attribute(self):
        user = User.objects.create(username='******', last_name='Smith')

        backend = Saml2Backend()
        attribute_mapping = {
            'uid': ('username', ),
            'mail': ('email', ),
            'cn': ('first_name', ),
            'sn': ('last_name', ),
            }
        attributes = {
            'uid': ('john', ),
            'mail': ('*****@*****.**', ),
            'cn': ('John', ),
            'sn': (),
            }
        with self.assertLogs('djangosaml2', level='DEBUG') as logs:
            backend.update_user(user, attributes, attribute_mapping)
        self.assertEqual(user.email, '*****@*****.**')
        self.assertEqual(user.first_name, 'John')
        # empty attribute list: no update
        self.assertEqual(user.last_name, 'Smith')
        self.assertIn(
            'DEBUG:djangosaml2:Could not find value for "sn", not '
            'updating fields "(\'last_name\',)"',
            logs.output,
        )
Exemplo n.º 2
0
    def test_update_user(self):
        # we need a user
        user = User.objects.create(username='******')

        backend = Saml2Backend()

        attribute_mapping = {
            'uid': ('username', ),
            'mail': ('email', ),
            'cn': ('first_name', ),
            'sn': ('last_name', ),
            }
        attributes = {
            'uid': ('john', ),
            'mail': ('*****@*****.**', ),
            'cn': ('John', ),
            'sn': ('Doe', ),
            }
        backend.update_user(user, attributes, attribute_mapping)
        self.assertEqual(user.email, '*****@*****.**')
        self.assertEqual(user.first_name, 'John')
        self.assertEqual(user.last_name, 'Doe')

        attribute_mapping['saml_age'] = ('age', )
        attributes['saml_age'] = ('22', )
        backend.update_user(user, attributes, attribute_mapping)
        self.assertEqual(user.age, '22')
Exemplo n.º 3
0
    def test_update_user(self):
        # we need a user
        user = User.objects.create(username='******')

        backend = Saml2Backend()

        attribute_mapping = {
            'uid': ('username', ),
            'mail': ('email', ),
            'cn': ('first_name', ),
            'sn': ('last_name', ),
        }
        attributes = {
            'uid': ('john', ),
            'mail': ('*****@*****.**', ),
            'cn': ('John', ),
            'sn': ('Doe', ),
        }
        backend.update_user(user, attributes, attribute_mapping)
        self.assertEquals(user.email, '*****@*****.**')
        self.assertEquals(user.first_name, 'John')
        self.assertEquals(user.last_name, 'Doe')

        # now we create a user profile and link it to the user
        profile = TestProfile.objects.create(user=user)
        self.assertNotEquals(profile, None)

        attribute_mapping['saml_age'] = ('age', )
        attributes['saml_age'] = ('22', )
        backend.update_user(user, attributes, attribute_mapping)

        self.assertEquals(user.get_profile().age, '22')
Exemplo n.º 4
0
    def test_django_user_main_attribute_lookup(self):
        backend = Saml2Backend()

        self.assertEquals(backend.get_django_user_main_attribute_lookup(), '')

        with override_settings(
                SAML_DJANGO_USER_MAIN_ATTRIBUTE_LOOKUP='__iexact'):
            self.assertEquals(backend.get_django_user_main_attribute_lookup(),
                              '__iexact')
Exemplo n.º 5
0
    def test_invalid_model_attribute_log(self):
        backend = Saml2Backend()

        attribute_mapping = {
            'uid': ['username'],
            'cn': ['nonexistent'],
        }
        attributes = {
            'uid': ['john'],
            'cn': ['John'],
        }

        with self.assertLogs('djangosaml2', level='DEBUG') as logs:
            backend.get_saml2_user(True, 'john', attributes, attribute_mapping)

        self.assertIn(
            'DEBUG:djangosaml2:Could not find attribute "nonexistent" on user "john"',
            logs.output,
        )
Exemplo n.º 6
0
    def test_django_user_main_attribute(self):
        backend = Saml2Backend()

        old_username_field = User.USERNAME_FIELD
        User.USERNAME_FIELD = 'slug'
        self.assertEquals(backend.get_django_user_main_attribute(), 'slug')
        User.USERNAME_FIELD = old_username_field

        with override_settings(AUTH_USER_MODEL='auth.User'):
            self.assertEquals(DjangoUserModel.USERNAME_FIELD,
                              backend.get_django_user_main_attribute())

        with override_settings(
                AUTH_USER_MODEL='testprofiles.StandaloneUserModel'):
            self.assertEquals(backend.get_django_user_main_attribute(),
                              'username')

        with override_settings(SAML_DJANGO_USER_MAIN_ATTRIBUTE='foo'):
            self.assertEquals(backend.get_django_user_main_attribute(), 'foo')
Exemplo n.º 7
0
    def test_update_user_callable_attributes(self):
        user = User.objects.create(username='******')

        backend = Saml2Backend()
        attribute_mapping = {
            'uid': ('username', ),
            'mail': ('email', ),
            'cn': ('process_first_name', ),
            'sn': ('last_name', ),
            }
        attributes = {
            'uid': ('john', ),
            'mail': ('*****@*****.**', ),
            'cn': ('John', ),
            'sn': ('Doe', ),
            }
        backend.update_user(user, attributes, attribute_mapping)
        self.assertEqual(user.email, '*****@*****.**')
        self.assertEqual(user.first_name, 'John')
        self.assertEqual(user.last_name, 'Doe')
Exemplo n.º 8
0
    def test_update_user_empty_attribute(self):
        user = User.objects.create(username='******', last_name='Smith')

        backend = Saml2Backend()
        attribute_mapping = {
            'uid': ('username', ),
            'mail': ('email', ),
            'cn': ('first_name', ),
            'sn': ('last_name', ),
        }
        attributes = {
            'uid': ('john', ),
            'mail': ('*****@*****.**', ),
            'cn': ('John', ),
            'sn': (),
        }
        backend.update_user(user, attributes, attribute_mapping)
        self.assertEquals(user.email, '*****@*****.**')
        self.assertEquals(user.first_name, 'John')
        # empty attribute list: no update
        self.assertEquals(user.last_name, 'Smith')