Exemple #1
0
    def test_authenticate_with_backend_success(self):
        user = authenticate("testapp", user_id=1)
        self.assertTrue(user)
        self.assertEqual(user.id, 1)

        user = authenticate("testapp2")
        self.assertTrue(user)
        self.assertEqual(user.id, 1)
Exemple #2
0
    def test_authenticate_success(self):
        user = authenticate(user_id=2)
        self.assertTrue(user)
        self.assertEqual(user.id, 2)

        user = authenticate()
        self.assertTrue(user)
        self.assertEqual(user.id, 1)
Exemple #3
0
    def test_authenticate_with_backend_failure(self):
        user = authenticate("testapp")
        self.assertTrue(user is None)

        user = authenticate("testapp", user_id=3)
        self.assertTrue(user is None)

        user = authenticate("testapp2", user_id=1)
        self.assertTrue(user is None)

        user = authenticate("testapp2", unknown_kwarg=1)
        self.assertTrue(user is None)
Exemple #4
0
 def clean(self):
     credentials = self.get_credentials()
     if credentials:
         self.user_cache = authenticate(**credentials)
         if self.user_cache is None:
             raise forms.ValidationError(self.default_error_messages['auth_failure'])
     return self.cleaned_data
Exemple #5
0
    def auth_login(self, **credentials):
        """
        Sets the Client to appear as if it has successfully logged into a site.

        Returns True if login is possible; False if the provided credentials
        are incorrect, or the user is inactive, or if the sessions framework is
        not available.
        """
        from django.http import HttpRequest
        from django.conf import settings
        from django.utils.importlib import import_module
        from django.contrib.sessions.middleware import SessionMiddleware
        from newauth.middleware import AuthMiddleware
        from newauth.api import authenticate, login

        user = authenticate(**credentials)
        if user and "django.contrib.sessions" in settings.INSTALLED_APPS:
            engine = import_module(settings.SESSION_ENGINE)

            # Create a fake request to store login details.
            request = HttpRequest()
            SessionMiddleware().process_request(request)
            AuthMiddleware().process_request(request)
            if self.client.session:
                request.session = self.client.session
            else:
                request.session = engine.SessionStore()
            login(request, user)

            # Save the session values.
            request.session.save()

            # Set the cookie to represent the session.
            session_cookie = settings.SESSION_COOKIE_NAME
            self.client.cookies[session_cookie] = request.session.session_key
            cookie_data = {
                "max-age": None,
                "path": "/",
                "domain": settings.SESSION_COOKIE_DOMAIN,
                "secure": settings.SESSION_COOKIE_SECURE or None,
                "expires": None,
            }
            self.client.cookies[session_cookie].update(cookie_data)

            return True
        return False
Exemple #6
0
    def test_logout_when_logged_in(self):
        """
        Test to make sure that logout() works when
        the user is logged in.
        """
        from newauth.tests.testapp.models import TestUser3, TestAnonymousUser3
        
        request = HttpRequest()
        user = authenticate(user_id=1, _backend_name='testapp3')
        self.assertTrue(user.is_authenticated(), "%s is not authenticated" % user)

        SessionMiddleware().process_request(request)
        AuthMiddleware().process_request(request)
        self.assertTrue(hasattr(request, 'auth_user'), 'Request has no auth_user attribute')
        self.assertTrue(request.auth_user.is_anonymous(), 'User "%s" is authenticated' % request.auth_user)

        login(request, user, backend_name='testapp3')
        
        session_key = getattr(settings, 'NEWAUTH_SESSION_KEY', DEFAULT_SESSION_KEY)
        session_data = request.session.get(session_key) or {}
        self.assertEquals(session_data.get('uid'), 1)
        self.assertEquals(session_data.get('bn'), 'testapp3')
        self.assertTrue(request.auth_user.is_authenticated(), "%s is not authenticated" % request.auth_user)
        self.assertTrue(isinstance(request.auth_user, TestUser3), 'User "%s" is wrong User class "%s"' % (
            request.auth_user,
            request.auth_user.__class__,
        ))
        self.assertTrue(hasattr(request.auth_user, '_backend'), 'User "%s" has no _backend attribute')
        self.assertTrue(hasattr(request.auth_user, '_backend_name'), 'User "%s" has no _backend_name attribute')

        logout(request)

        session_data = request.session.get(session_key) or {}
        self.assertEquals(session_data.get('uid'), None)
        self.assertEquals(session_data.get('bn'), None)
        self.assertTrue(hasattr(request, 'auth_user'), 'Request has no auth_user attribute')
        self.assertTrue(request.auth_user.is_anonymous(), 'User "%s" is authenticated' % request.auth_user)
        self.assertTrue(isinstance(request.auth_user, TestAnonymousUser3), 'User "%s" is wrong AnonymousUser class "%s"' % (
            request.auth_user,
            request.auth_user.__class__,
        ))
Exemple #7
0
 def test_authenticate_failure(self):
     user = authenticate(user_id=3)
     self.assertTrue(user is None)