def test_get_context_with_no_valid_context(self): f = Firewall(FirewallMap()) rq = BaseHandler(Application(), HTTPRequest("GET", "/", connection=get_dummy_connection())) with self.assertRaises(AccessDeniedException): f.onRequest(Event({ 'request': rq.request, 'request_handler': rq }))
def test_run(self): app = Application() request = HTTPRequest("GET", "/", connection=get_dummy_connection()) handler = RequestHandler(app, request) handler.run = Run() shutil.rmtree("/tmp/python-element/", ignore_errors=True) path = "/tmp/python-element//%s" % handler.run.id os.makedirs(path) p = PyCallgraphCollector("/tmp/python-element/") p.on_request(handler, handler.run) self.assertIsInstance(handler.run, Run) p.on_terminate(handler, handler.run) self.assertTrue(os.path.isfile("/tmp/python-element/%s/pycallgraph.dot" % handler.run.id))
def get_default_handler(): return TestHandler(Application(), HTTPRequest("GET", "/", connection=get_dummy_connection()))
def test_get_context_with_valid_listeners(self): c = SecurityContext() f = Firewall(FirewallMap([ (re.compile("/admin/.*"), ([ AnonymousAuthenticationHandler('key', c), ], None)), ])) rq = BaseHandler(Application(), HTTPRequest("GET", "/admin/dashboard", connection=get_dummy_connection())) e = Event({ 'request': rq.request, 'request_handler': rq }) f.onRequest(e) self.assertIsNotNone(c.token)
def test_get_context_with_empty_listeners(self): f = Firewall(FirewallMap([ (re.compile("/admin/.*"), ([], None)), ])) rq = BaseHandler(Application(), HTTPRequest("GET", "/admin/dashboard", connection=get_dummy_connection())) with self.assertRaises(AccessDeniedException): f.onRequest(Event({ 'request': rq.request, 'request_handler': rq }))
def test_map(self): map = FirewallMap([ (re.compile("/admin/.*"), ([], None)), (re.compile("/blog/.*"), ([], None)) ]) paths = [ ('/admin/dashboard', ([], None)), ('/', ([], None)), ('/blog/2012', ([], None)) ] for path, expected in paths: self.assertEquals(expected, map.get_context(HTTPRequest("GET", path, connection=get_dummy_connection())))
def test_match(self): map = AccessMap([ (re.compile("/admin/.*"), 'admin'), (re.compile("/blog/.*"), ['anonymous']) ]) paths = [ ('/admin/dashboard', ['admin']), ('/', None), ('/blog/2012', ['anonymous']) ] for path, expected in paths: self.assertEquals(expected, map.get_pattern(HTTPRequest("GET", path, connection=get_dummy_connection())))
def test_on_request(self): app = Application() request = HTTPRequest('POST', '/collector?hello=world', body=b"foo=bar&bar=foo", headers={'Content-Type': 'application/x-www-form-urlencoded'}, connection=get_dummy_connection()) handler = RequestHandler(app, request) handler.run = Run() self.collector.on_request(handler, handler.run) self.assertEquals({ 'body_arguments': {}, 'cookies': '', 'headers': {'Content-Type': 'application/x-www-form-urlencoded'}, 'host': '127.0.0.1', 'method': 'POST', 'path': '/collector', 'protocol': 'http', 'query': 'hello=world', 'body': 'foo=bar&bar=foo', 'query_arguments': {'hello': ['world']}, 'remote_ip': '127.0.0.1', 'uri': '/collector?hello=world', 'version': 'HTTP/1.0', 'controller': {'class': False, 'file': False, 'line': False, 'method': False}, 'route': False, 'status_code': False, }, handler.run.get_metric('request'))
def setUp(self): self.handler = RequestHandler(Application(), HTTPRequest('GET', '/', connection=get_dummy_connection())) self.handler.run = Run() self.collector = RequestCollector()