예제 #1
0
    def test_bad_endpoint(self):
        """Test the post-login hook with a bad openid endpoint"""
        req, info = self._generate_req_info('bad_endpoint')

        with pytest.raises(HTTPUnauthorized) as exc:
            remember_me(None, req, info)

        assert str(exc.value) == (
            "Invalid OpenID provider. You can only use: https://id.stg.fedoraproject.org/openid/"
        )
        # The user should not exist
        assert models.User.get('lmacken') is None
예제 #2
0
    def test_new_user(self):
        """Test the post-login hook"""
        req, info = self._generate_req_info(
            self.app_settings['openid.provider'])

        remember_me(None, req, info)

        # The user should now exist, and be a member of the releng group
        user = models.User.get('lmacken')
        assert user.name == 'lmacken'
        assert user.email == '[email protected]'
        assert len(user.groups) == 1
        assert user.groups[0].name == 'releng'
예제 #3
0
    def test_new_email(self):
        """Assert that the user gets their e-mail address updated."""
        req, info = self._generate_req_info(
            self.app_settings['openid.provider'])
        remember_me(None, req, info)
        # The user has updated their e-mail address.
        info['sreg']['email'] = '*****@*****.**'
        req.session = {'came_from': '/'}

        remember_me(None, req, info)

        user = models.User.get('lmacken')
        assert user.email == '*****@*****.**'
예제 #4
0
    def test_empty_groups_ignored(self):
        """Test a user that has an empty string group, which should be ignored."""
        req, info = self._generate_req_info(
            self.app_settings['openid.provider'])
        remember_me(None, req, info)
        # Pretend the user has been removed from the releng group
        info['groups'] = ['releng', '', 'new_group']
        req.session = {'came_from': '/'}

        remember_me(None, req, info)

        user = models.User.get('lmacken')
        assert [g.name for g in user.groups] == ['releng', 'new_group']
예제 #5
0
    def test_user_groups_removed(self):
        """Test that a user that has been removed from a group gets marked as removed upon login."""
        req, info = self._generate_req_info(
            self.app_settings['openid.provider'])
        remember_me(None, req, info)
        # Pretend the user has been removed from the releng group
        info['groups'] = []
        req.session = {'came_from': '/'}

        remember_me(None, req, info)

        user = models.User.get('lmacken')
        assert len(user.groups) == 0
        assert len(models.Group.get('releng').users) == 0