""" simple server to test registration and authentication To test: curl -d login=python_test_user -d password_salt=54321\ -d password_verifier=12341234 \ http://localhost:8000/users.json """ from BaseHTTPServer import HTTPServer from BaseHTTPServer import BaseHTTPRequestHandler import cgi import json import urlparse HOST = "localhost" PORT = 8000 LOGIN_ERROR = """{"errors":{"login":["has already been taken"]}}""" from leap.base.tests.test_providers import EXPECTED_DEFAULT_CONFIG class request_handler(BaseHTTPRequestHandler): responses = { '/': ['ok\n'], '/users.json': ['ok\n'], '/timeout': ['ok\n'], '/provider.json': ['%s\n' % json.dumps(EXPECTED_DEFAULT_CONFIG)] } def do_GET(self): path = urlparse.urlparse(self.path) message = '\n'.join( self.responses.get( path.path, None)) self.send_response(200) self.end_headers() self.wfile.write(message) def do_POST(self): form = cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD': 'POST', 'CONTENT_TYPE': self.headers['Content-Type'], }) data = dict( (key, form[key].value) for key in form.keys()) path = urlparse.urlparse(self.path) message = '\n'.join( self.responses.get( path.path, '')) login = data.get('login', None) #password_salt = data.get('password_salt', None) #password_verifier = data.get('password_verifier', None) if path.geturl() == "/timeout": print 'timeout' self.send_response(200) self.end_headers() self.wfile.write(message) import time time.sleep(10) return ok = True if (login == "python_test_user") else False if ok: self.send_response(200) self.end_headers() self.wfile.write(message) else: self.send_response(500) self.end_headers() self.wfile.write(LOGIN_ERROR) if __name__ == "__main__": server = HTTPServer((HOST, PORT), request_handler) server.serve_forever()