示例#1
0
 def __call__(self, environ, start_response):
     req = EngineAuthRequest(environ)
     req._config = self.config
     req.provider_config = self.config['provider.{0}'.format(req.provider)]
     # TODO: This area needs to be reworked. There needs to be
     # a better way to handle errors
     try:
         redirect_uri = self.handle_request(req)
     except Exception, e:
         req.add_message(e.message, level='error')
         redirect_uri = self.config['login_uri']
示例#2
0
    def test__load_user_by_profile(self):
        # No existing User no logged in User
        auth_id = 'test:12345'
        user_info = {
            'auth_id': auth_id,
            'info': {},
        }
        # create profile
        p = models.UserProfile.get_or_create(auth_id, user_info)
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()
        req._load_user()

        # User Count before
        user_count = models.User.query().count()
        self.assertEqual(user_count, 0)

        req.load_user_by_profile(p)

        # User Count after
        user_count = models.User.query().count()
        self.assertEqual(user_count, 1)

        user = models.User.query().get()
        self.assertTrue(p.key.id() in user.auth_ids)

        # Yes existing User no logged in User
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()
        req._load_user()

        req.load_user_by_profile(p)

        # Test to no new User was created
        user_count = models.User.query().count()
        self.assertEqual(user_count, 1)

        # Yes existing User yes logged in User new Profile
        auth_id = 'test:abc'
        user_info = {
            'auth_id': auth_id,
            'info': {},
            }
        # create profile
        p1 = models.UserProfile.get_or_create(auth_id, user_info)
        req.load_user_by_profile(p1)

        # Test to no new User was created
        user_count = models.User.query().count()
        self.assertEqual(user_count, 1)
示例#3
0
    def test_save_session(self):
        # Cookie session_id but no user_id
        s = models.Session.create()
        s_count = models.Session.query().count()
        self.assertTrue(s_count == 1)

        req = EngineAuthRequest.blank('/auth/google')
        req.cookies['_eauth'] = s.serialize()
        resp = req.get_response(app)
        resp.request = req
        resp._save_session()

        self.assertTrue(resp.request.session.session_id == s.session_id)
        # Assert No new session was created
        s_count2 = models.Session.query().count()
        self.assertTrue(s_count2 == 1)

        # Add a user_id to session
        resp.request.session.user_id = '1'
        resp._save_session()
        # a new session should be created with the user_id as it's id
#        self.assertEqual(resp.request.session.key.id(), '1')
        s_count = models.Session.query().count()
        self.assertTrue(s_count == 1)
        s1 = models.Session.query().get()
        self.assertEqual(s1.key.id(), '1')
示例#4
0
 def test__load_user(self):
     user = models.User.create_user('test:12345')
     req = EngineAuthRequest.blank('/auth/google')
     req._load_session()
     req.session.user_id = user.get_id()
     req._load_user()
     self.assertEqual(user, req.user)
示例#5
0
    def test_add_message(self):
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()

        msgs = req.get_messages()
        self.assertEquals(msgs, None)

        req.add_message('TEST MESSAGE')
        msgs = req.get_messages()
        self.assertEquals(msgs, [{'level': None, 'message': 'TEST MESSAGE'}])

        # Get again should be none.
        msgs = req.get_messages()
        self.assertEquals(msgs, None)

        # add message with level error
        req.add_message('TEST1', 'error')
        # add another message with level error
        req.add_message('TEST2', 'success')

        msgs = req.get_messages()
        self.assertEquals(msgs, [
            {
                'level': 'error',
                'message': 'TEST1'
            },
            {
                'level': 'success',
                'message': 'TEST2'
            },
        ])
        # Get again should be none.
        msgs = req.get_messages()
        self.assertEquals(msgs, None)

        # Test with different key.
        # add message with level error
        req.add_message('TEST1', 'error')
        # add another message with level error
        req.add_message('TEST2', 'success', '_mykey')

        msgs = req.get_messages()
        self.assertEquals(msgs, [
            {
                'level': 'error',
                'message': 'TEST1'
            },
        ])
        msgs_key = req.get_messages('_mykey')
        self.assertEquals(msgs_key, [
            {
                'level': 'success',
                'message': 'TEST2'
            },
        ])
        # Get again should be none.
        msgs = req.get_messages()
        self.assertEquals(msgs, None)
        msgs_key = req.get_messages()
        self.assertEquals(msgs_key, None)
示例#6
0
 def test_load_session_no_session(self):
     req = EngineAuthRequest.blank('/auth/google')
     # No Session
     s_count = models.Session.query().count()
     self.assertTrue(s_count == 0)
     sess = req._load_session()
     s_count = models.Session.query().count()
     self.assertTrue(s_count == 1)
示例#7
0
    def test__load_user_custom_user_model(self):
        # Test without custom User
        user = models.User.create_user('test:12345')
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()
        req.session.user_id = user.get_id()
        req._load_user()
        self.assertEqual(user, req.user)

        # Now custom User
        user = CustomUser.create_user('test:12345')
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()
        req.session.user_id = user.get_id()
        req._load_user()
        self.assertEqual(req.user, user)
        self.assertEqual(req.user.custom_property, 'yep')
        self.assertEqual(req.user.__class__, CustomUser.__class__)
示例#8
0
    def test__load_user_custom_user_model(self):
        # Test without custom User
        user = models.User.create_user('test:12345')
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()
        req.session.user_id = user.get_id()
        req._load_user()
        self.assertEqual(user, req.user)

        # Now custom User
        user = CustomUser.create_user('test:12345')
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()
        req.session.user_id = user.get_id()
        req._load_user()
        self.assertEqual(req.user, user)
        self.assertEqual(req.user.custom_property, 'yep')
        self.assertEqual(req.user.__class__, CustomUser.__class__)
示例#9
0
 def test_laod_session_session_id_and_user_id(self):
     # Cookie session_id and user_id
     s = models.Session.create()
     s_count = models.Session.query().count()
     self.assertTrue(s_count == 1)
     req = EngineAuthRequest.blank('/auth/google')
     req.cookies['_eauth'] = s.serialize()
     req._load_session()
     self.assertTrue(req.session.session_id == s.session_id)
     # Assert No new session was created
     s_count2 = models.Session.query().count()
     self.assertTrue(s_count2 == 1)
示例#10
0
    def test_set_redirect_uri(self):
        # test without next uri
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()
        req.set_redirect_uri()
        req._config = {'success_uri': '/callback'}
        redirect_uri = req.get_redirect_uri()
        self.assertEqual(redirect_uri, '/callback')

        # test with out next uri
        req = EngineAuthRequest.blank('/auth/google?next=/newcallback')
        req._load_session()
        req.set_redirect_uri()
        req._config = {'success_uri': '/callback'}
        redirect_uri = req.get_redirect_uri()
        self.assertEqual(redirect_uri, '/newcallback')

        req = EngineAuthRequest.blank('/auth/google?next=/newcallback&a=121&123=a')
        req._load_session()
        req.set_redirect_uri()
        req._config = {'success_uri': '/callback'}
        redirect_uri = req.get_redirect_uri()
        self.assertEqual(redirect_uri, '/newcallback')
示例#11
0
    def test_add_message(self):
        req = EngineAuthRequest.blank('/auth/google')
        req._load_session()

        msgs = req.get_messages()
        self.assertEquals(msgs, None)

        req.add_message('TEST MESSAGE')
        msgs = req.get_messages()
        self.assertEquals(msgs, [{'level': None, 'message':'TEST MESSAGE' }])

        # Get again should be none.
        msgs = req.get_messages()
        self.assertEquals(msgs, None)

        # add message with level error
        req.add_message('TEST1', 'error')
        # add another message with level error
        req.add_message('TEST2', 'success')

        msgs = req.get_messages()
        self.assertEquals(msgs, [
                {'level': 'error', 'message':'TEST1' },
                {'level': 'success', 'message':'TEST2' },
        ])
        # Get again should be none.
        msgs = req.get_messages()
        self.assertEquals(msgs, None)

        # Test with different key.
        # add message with level error
        req.add_message('TEST1', 'error')
        # add another message with level error
        req.add_message('TEST2', 'success', '_mykey')

        msgs = req.get_messages()
        self.assertEquals(msgs, [
                {'level': 'error', 'message':'TEST1' },
        ])
        msgs_key = req.get_messages('_mykey')
        self.assertEquals(msgs_key, [
                {'level': 'success', 'message':'TEST2' },
        ])
        # Get again should be none.
        msgs = req.get_messages()
        self.assertEquals(msgs, None)
        msgs_key = req.get_messages()
        self.assertEquals(msgs_key, None)
示例#12
0
 def test_laod_session_cookie_and_no_session(self):
     # Cookie and not session
     s = models.Session.create()
     old_sid = s.session_id
     s_serialized = s.serialize()
     s.key.delete()
     s_count = models.Session.query().count()
     self.assertTrue(s_count == 0)
     req = EngineAuthRequest.blank('/auth/google')
     req.cookies['_eauth'] = s_serialized
     req._load_session()
     # Assert that a new session was created
     self.assertTrue(req.session.session_id != old_sid)
     # Assert No new session was created
     s_count2 = models.Session.query().count()
     self.assertTrue(s_count2 == 1)
示例#13
0
 def __call__(self, environ, start_response):
     req = EngineAuthRequest(environ)
     req._config = self.config
     req.provider_config = self.config['provider.{0}'.format(req.provider)]
     # TODO: This area needs to be reworked. There needs to be
     # a better way to handle errors
     try:
         redirect_uri = self.handle_request(req)
     except Exception, e:
         req.add_message(e.message, level='error')
         redirect_uri = self.config['login_uri']