def test_authenticate(self): from tardis.tardis_portal.auth.ldap_auth import ldap_auth from django.core.handlers.wsgi import WSGIRequest from django.contrib.auth.models import User # Tests Authenticate API l = ldap_auth() req = WSGIRequest({"REQUEST_METHOD": "POST"}) req._post = {'username': '******', 'password': '******', 'authMethod': 'ldap'} u = l.authenticate(req) u1 = {'email': '*****@*****.**', 'display': 'Test', 'id': 'testuser1'} self.failUnlessEqual(u, u1) # Test authservice API from tardis.tardis_portal.auth import auth_service req = WSGIRequest({"REQUEST_METHOD": "POST"}) req._post = {'username': '******', 'password': '******', 'authMethod': 'ldap'} user = auth_service.authenticate('ldap', request=req) self.assertTrue(isinstance(user, User)) # Check that there is an entry in the user authentication table from tardis.tardis_portal.models import UserAuthentication userAuth = UserAuthentication.objects.get( userProfile__user=user, authenticationMethod=l.name) user1 = UserAuthentication.objects.get(username=user.username, authenticationMethod='ldap').userProfile.user self.assertEqual(user, user1)
def consume(self, event): # type: (Mapping[str, Any]) -> None server_meta = event['server_meta'] environ = { 'REQUEST_METHOD': 'SOCKET', 'SCRIPT_NAME': '', 'PATH_INFO': '/json/messages', 'SERVER_NAME': '127.0.0.1', 'SERVER_PORT': 9993, 'SERVER_PROTOCOL': 'ZULIP_SOCKET/1.0', 'wsgi.version': (1, 0), 'wsgi.input': StringIO(), 'wsgi.errors': sys.stderr, 'wsgi.multithread': False, 'wsgi.multiprocess': True, 'wsgi.run_once': False, 'zulip.emulated_method': 'POST' } if 'socket_user_agent' in event['request']: environ['HTTP_USER_AGENT'] = event['request']['socket_user_agent'] del event['request']['socket_user_agent'] # We're mostly using a WSGIRequest for convenience environ.update(server_meta['request_environ']) request = WSGIRequest(environ) # Note: If we ever support non-POST methods, we'll need to change this. request._post = event['request'] request.csrf_processing_done = True user_profile = get_user_profile_by_id(server_meta['user_id']) request._cached_user = user_profile resp = self.handler.get_response(request) server_meta['time_request_finished'] = time.time() server_meta['worker_log_data'] = request._log_data resp_content = resp.content.decode('utf-8') response_data = ujson.loads(resp_content) if response_data['result'] == 'error': check_and_send_restart_signal() result = { 'response': response_data, 'req_id': event['req_id'], 'server_meta': server_meta } redis_key = req_redis_key(event['req_id']) self.redis_client.hmset(redis_key, { 'status': 'complete', 'response': resp_content }) # Since this sends back to Tornado, we can't use # call_consume_in_tests here. queue_json_publish(server_meta['return_queue'], result, lambda e: None)
def test_authenticate(self): from tardis.tardis_portal.auth.ldap_auth import ldap_auth from django.core.handlers.wsgi import WSGIRequest from django.contrib.auth.models import User # Tests Authenticate API l = ldap_auth() req = WSGIRequest({"REQUEST_METHOD": "POST"}) req._post = { 'username': '******', 'password': '******', 'authMethod': 'ldap' } u = l.authenticate(req) u1 = { 'email': '*****@*****.**', 'display': 'Test', 'id': 'testuser1' } self.failUnlessEqual(u, u1) # Test authservice API from tardis.tardis_portal.auth import auth_service req = WSGIRequest({"REQUEST_METHOD": "POST"}) req._post = { 'username': '******', 'password': '******', 'authMethod': 'ldap' } user = auth_service.authenticate('ldap', request=req) self.assertTrue(isinstance(user, User)) # Check that there is an entry in the user authentication table from tardis.tardis_portal.models import UserAuthentication userAuth = UserAuthentication.objects.get(userProfile__user=user, authenticationMethod=l.name) user1 = UserAuthentication.objects.get( username=user.username, authenticationMethod='ldap').userProfile.user self.assertEqual(user, user1)
def consume(self, event): # type: (Mapping[str, Any]) -> None server_meta = event['server_meta'] environ = { 'REQUEST_METHOD': 'SOCKET', 'SCRIPT_NAME': '', 'PATH_INFO': '/json/messages', 'SERVER_NAME': '127.0.0.1', 'SERVER_PORT': 9993, 'SERVER_PROTOCOL': 'ZULIP_SOCKET/1.0', 'wsgi.version': (1, 0), 'wsgi.input': StringIO(), 'wsgi.errors': sys.stderr, 'wsgi.multithread': False, 'wsgi.multiprocess': True, 'wsgi.run_once': False, 'zulip.emulated_method': 'POST' } if 'socket_user_agent' in event['request']: environ['HTTP_USER_AGENT'] = event['request']['socket_user_agent'] del event['request']['socket_user_agent'] # We're mostly using a WSGIRequest for convenience environ.update(server_meta['request_environ']) request = WSGIRequest(environ) # Note: If we ever support non-POST methods, we'll need to change this. request._post = event['request'] request.csrf_processing_done = True user_profile = get_user_profile_by_id(server_meta['user_id']) request._cached_user = user_profile resp = self.handler.get_response(request) server_meta['time_request_finished'] = time.time() server_meta['worker_log_data'] = request._log_data resp_content = resp.content.decode('utf-8') response_data = ujson.loads(resp_content) if response_data['result'] == 'error': check_and_send_restart_signal() result = {'response': response_data, 'req_id': event['req_id'], 'server_meta': server_meta} redis_key = req_redis_key(event['req_id']) self.redis_client.hmset(redis_key, {'status': 'complete', 'response': resp_content}) # Since this sends back to Tornado, we can't use # call_consume_in_tests here. queue_json_publish(server_meta['return_queue'], result, lambda e: None)
def test_getgroups(self): from django.contrib.auth.models import User from django.core.handlers.wsgi import WSGIRequest from tardis.tardis_portal.auth import auth_service req = WSGIRequest({"REQUEST_METHOD": "POST"}) req._post = {'username': '******', 'password': '******', 'authMethod': 'ldap'} user = auth_service.authenticate('ldap', request=req) self.assertTrue(isinstance(user, User)) req.user = user from tardis.tardis_portal.auth.ldap_auth import ldap_auth # Tests getGroups l = ldap_auth() self.assertEqual([g for g in l.getGroups(req)], ['full', 'systems'])
def test_getgroups(self): from django.contrib.auth.models import User from django.core.handlers.wsgi import WSGIRequest from tardis.tardis_portal.auth import auth_service req = WSGIRequest({"REQUEST_METHOD": "POST"}) req._post = { 'username': '******', 'password': '******', 'authMethod': 'ldap' } user = auth_service.authenticate('ldap', request=req) self.assertTrue(isinstance(user, User)) req.user = user from tardis.tardis_portal.auth.ldap_auth import ldap_auth # Tests getGroups l = ldap_auth() self.assertEqual([g for g in l.getGroups(req)], ['full', 'systems'])