Beispiel #1
0
def test_base_ctor() -> None:
    message = RawRequestMessage('GET', '/path/to?a=1&b=2', HttpVersion(1, 1),
                                CIMultiDictProxy(CIMultiDict()), (), False,
                                False, False, False, URL('/path/to?a=1&b=2'))

    req = BaseRequest(message, mock.Mock(), mock.Mock(), mock.Mock(),
                      mock.Mock(), mock.Mock())

    assert 'GET' == req.method
    assert HttpVersion(1, 1) == req.version
    assert req.host == socket.getfqdn()
    assert '/path/to?a=1&b=2' == req.path_qs
    assert '/path/to' == req.path
    assert 'a=1&b=2' == req.query_string
    assert CIMultiDict() == req.headers
    assert () == req.raw_headers

    get = req.query
    assert MultiDict([('a', '1'), ('b', '2')]) == get
    # second call should return the same object
    assert get is req.query

    assert req.keep_alive

    assert req
Beispiel #2
0
def test_ctor() -> None:
    req = make_mocked_request('GET', '/path/to?a=1&b=2')

    assert 'GET' == req.method
    assert HttpVersion(1, 1) == req.version
    assert req.host == socket.getfqdn()
    assert '/path/to?a=1&b=2' == req.path_qs
    assert '/path/to' == req.path
    assert 'a=1&b=2' == req.query_string
    assert CIMultiDict() == req.headers
    assert () == req.raw_headers

    get = req.query
    assert MultiDict([('a', '1'), ('b', '2')]) == get
    # second call should return the same object
    assert get is req.query

    assert req.keep_alive

    # just make sure that all lines of make_mocked_request covered
    headers = CIMultiDict(FOO='bar')
    payload = mock.Mock()
    protocol = mock.Mock()
    app = mock.Mock()
    req = make_mocked_request('GET', '/path/to?a=1&b=2', headers=headers,
                              protocol=protocol, payload=payload, app=app)
    assert req.app is app
    assert req.content is payload
    assert req.protocol is protocol
    assert req.transport is protocol.transport
    assert req.headers == headers
    assert req.raw_headers == ((b'FOO', b'bar'),)
    assert req.task is req._task
def function1345(function145):
    var363 = function145('GET', '/path/to?a=1&b=2')
    assert ('GET' == var363.method)
    assert (HttpVersion(1, 1) == var363.version)
    assert (var363.host is None)
    assert ('/path/to?a=1&b=2' == var363.path_qs)
    assert ('/path/to' == var363.path)
    assert ('a=1&b=2' == var363.query_string)
    assert (CIMultiDict() == var363.var2510)
    assert (() == var363.raw_headers)
    assert (var363.message == var363._message)
    var4283 = var363.query
    assert (MultiDict([('a', '1'), ('b', '2')]) == var4283)
    assert (var4283 is var363.query)
    assert var363.keep_alive
    var2510 = CIMultiDict(FOO='bar')
    var2627 = mock.Mock()
    var3447 = mock.Mock()
    var3251 = mock.Mock()
    var363 = function145('GET', '/path/to?a=1&b=2', headers=var2510, protocol=var3447, payload=var2627, app=var3251)
    assert (var363.var3251 is var3251)
    assert (var363.content is var2627)
    assert (var363.var3447 is var3447)
    assert (var363.transport is var3447.transport)
    assert (var363.var2510 == var2510)
    assert (var363.raw_headers == ((b'Foo', b'bar'),))
    assert (var363.task is var363._task)
    with pytest.warns(DeprecationWarning):
        assert (var363.GET is var363.query)
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_dir = self.main_page_path.rsplit('/')[-1]
     args = run_args.parse_args(['--page-dir', page_dir])
     snare_uuid = '9c10172f-7ce2-4fb4-b1c6-abc70141db56'.encode('utf-8')
     args.no_dorks = True
     self.handler = TannerHandler(args, meta, snare_uuid)
     headers = {
         'Host': 'test_host',
         'status': 200,
         'Cookie': 'sess_uuid=prev_test_uuid; test_cookie=test'
     }
     message = RawRequestMessage(method='POST',
                                 path='/',
                                 version=HttpVersion(major=1, minor=1),
                                 headers=headers,
                                 raw_headers=None,
                                 should_close=None,
                                 compression=None,
                                 upgrade=None,
                                 chunked=None,
                                 url=URL('http://test_url/'))
     loop = asyncio.get_event_loop()
     RequestHandler = Mock()
     protocol = RequestHandler()
     self.request = web.Request(message=message,
                                payload=None,
                                protocol=protocol,
                                payload_writer=None,
                                task='POST',
                                loop=loop)
     self.request.transport.get_extra_info = Mock(
         return_value=(['test_ip', 'test_port']))
     self.response_status = "test_status"
     self.data = None
     self.expected_data = {
         'method': 'POST',
         'path': 'http://test_url/',
         'headers': {
             'Host': 'test_host',
             'status': 200,
             'Cookie': 'sess_uuid=prev_test_uuid; test_cookie=test'
         },
         'uuid': '9c10172f-7ce2-4fb4-b1c6-abc70141db56',
         'peer': {
             'ip': 'test_ip',
             'port': 'test_port'
         },
         'status': 'test_status',
         'cookies': {
             'sess_uuid': 'prev_test_uuid',
             ' test_cookie': 'test'
         }
     }
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     page_dir = self.main_page_path.rsplit("/")[-1]
     args = run_args.parse_args(["--page-dir", page_dir])
     args_dict = vars(args)
     args_dict["full_page_path"] = self.main_page_path
     snare_uuid = "9c10172f-7ce2-4fb4-b1c6-abc70141db56".encode("utf-8")
     args.no_dorks = True
     self.handler = TannerHandler(args, meta, snare_uuid)
     headers = {
         "Host": "test_host",
         "status": 200,
         "Cookie": "sess_uuid=prev_test_uuid; test_cookie=test",
     }
     message = RawRequestMessage(
         method="POST",
         path="/",
         version=HttpVersion(major=1, minor=1),
         headers=headers,
         raw_headers=None,
         should_close=None,
         compression=None,
         upgrade=None,
         chunked=None,
         url=URL("http://test_url/"),
     )
     loop = asyncio.get_event_loop()
     RequestHandler = Mock()
     protocol = RequestHandler()
     self.request = web.Request(
         message=message,
         payload=None,
         protocol=protocol,
         payload_writer=None,
         task="POST",
         loop=loop,
     )
     self.request.transport.get_extra_info = Mock(return_value=(["test_ip", "test_port"]))
     self.response_status = "test_status"
     self.data = None
     self.expected_data = {
         "method": "POST",
         "path": "http://test_url/",
         "headers": {
             "Host": "test_host",
             "status": 200,
             "Cookie": "sess_uuid=prev_test_uuid; test_cookie=test",
         },
         "uuid": "9c10172f-7ce2-4fb4-b1c6-abc70141db56",
         "peer": {"ip": "test_ip", "port": "test_port"},
         "status": "test_status",
         "cookies": {"sess_uuid": "prev_test_uuid", " test_cookie": "test"},
     }
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.page_dir = self.main_page_path.rsplit('/')[-1]
     args = run_args.parse_args(['--page-dir', self.page_dir])
     args_dict = vars(args)
     args_dict['full_page_path'] = self.main_page_path
     uuid = '9c10172f-7ce2-4fb4-b1c6-abc70141db56'.encode('utf-8')
     args.tanner = 'tanner.mushmush.org'
     args.no_dorks = True
     args.server_header = "test_server"
     args.slurp_enabled = True
     self.handler = HttpRequestHandler(meta, args, uuid)
     self.request_data = {
         'method': 'GET',
         'path': '/',
         'headers': {
             'Host': 'test_host',
             'Content-Type': 'test_type',
         },
         'status': 200,
         'cookies': {
             'sess_uuid': 'prev_test_uuid',
         },
     }
     self.loop = asyncio.new_event_loop()
     self.response_content = '<html><body></body></html>'
     self.response_headers = multidict.CIMultiDict([("Content-Type", "text/html")])
     self.response_status = 200
     event_result = dict(response=dict(message=dict(detection={'type': 1}, sess_uuid="test_uuid")))
     RequestHandler = Mock()
     protocol = RequestHandler()
     message = RawRequestMessage(
         method='POST', path='/', version=HttpVersion(major=1, minor=1), headers=self.request_data['headers'],
         raw_headers=None, should_close=None, compression=None, upgrade=None, chunked=None,
         url=URL('http://test_url/')
     )
     self.request = web.Request(
         message=message, payload=None, protocol=protocol, payload_writer=None,
         task='POST', loop=self.loop
     )
     self.handler.tanner_handler.create_data = Mock(return_value=self.request_data)
     self.handler.tanner_handler.submit_data = AsyncMock(return_value=event_result)
     self.handler.submit_slurp = AsyncMock()
     web.Response.add_header = Mock()
     web.Response.write = Mock()
     web.Response.send_headers = Mock()
     web.Response.write_eof = AsyncMock()
     aiohttp.streams.EmptyStreamReader.read = AsyncMock(
         return_value=b'con1=test1&con2=test2')
     self.handler.tanner_handler.parse_tanner_response = AsyncMock(
         return_value=(self.response_content, self.response_headers, self.response_status))
Beispiel #7
0
 def __init__(self, request):
     self._request = request
     self._path = request.path
     self._method = request.method
     v = request.environ['SERVER_PROTOCOL']
     self._version = HttpVersion(*map(int, v.split('/')[1].split('.')))
     self._headers = CIMultiDictProxy(CIMultiDict(list(request.headers)))
     self._data = request.get_data()
     # XXX: werkzeug's form data returns dict of lists
     self._form = {
         k: v[0] if len(v) == 1 else v
         for k, v in request.form.items()
     }
Beispiel #8
0
def test_base_ctor() -> None:
    message = RawRequestMessage(
        "GET",
        "/path/to?a=1&b=2",
        HttpVersion(1, 1),
        CIMultiDictProxy(CIMultiDict()),
        (),
        False,
        False,
        False,
        False,
        URL("/path/to?a=1&b=2"),
    )

    req = web.BaseRequest(message, mock.Mock(), mock.Mock(), mock.Mock(),
                          mock.Mock(), mock.Mock())

    assert "GET" == req.method
    assert HttpVersion(1, 1) == req.version
    # MacOS may return CamelCased host name, need .lower()
    # FQDN can be wider than host, e.g.
    # 'fv-az397-495' in 'fv-az397-495.internal.cloudapp.net'
    assert req.host.lower() in socket.getfqdn().lower()
    assert "/path/to?a=1&b=2" == req.path_qs
    assert "/path/to" == req.path
    assert "a=1&b=2" == req.query_string
    assert CIMultiDict() == req.headers
    assert () == req.raw_headers

    get = req.query
    assert MultiDict([("a", "1"), ("b", "2")]) == get
    # second call should return the same object
    assert get is req.query

    assert req.keep_alive

    assert "__dict__" not in dir(req)

    assert req
Beispiel #9
0
def test_base_ctor() -> None:
    message = RawRequestMessage(
        "GET",
        "/path/to?a=1&b=2",
        HttpVersion(1, 1),
        CIMultiDictProxy(CIMultiDict()),
        (),
        False,
        False,
        False,
        False,
        URL("/path/to?a=1&b=2"),
    )

    req = web.BaseRequest(
        message, mock.Mock(), mock.Mock(), mock.Mock(), mock.Mock(), mock.Mock()
    )

    assert "GET" == req.method
    assert HttpVersion(1, 1) == req.version
    assert req.host == socket.getfqdn()
    assert "/path/to?a=1&b=2" == req.path_qs
    assert "/path/to" == req.path
    assert "a=1&b=2" == req.query_string
    assert CIMultiDict() == req.headers
    assert () == req.raw_headers

    get = req.query
    assert MultiDict([("a", "1"), ("b", "2")]) == get
    # second call should return the same object
    assert get is req.query

    assert req.keep_alive

    assert "__dict__" not in dir(req)

    assert req
Beispiel #10
0
def test_ctor() -> None:
    req = make_mocked_request("GET", "/path/to?a=1&b=2")

    assert "GET" == req.method
    assert HttpVersion(1, 1) == req.version
    # MacOS may return CamelCased host name, need .lower()
    # FQDN can be wider than host, e.g.
    # 'fv-az397-495' in 'fv-az397-495.internal.cloudapp.net'
    assert req.host.lower() in socket.getfqdn().lower()
    assert "/path/to?a=1&b=2" == req.path_qs
    assert "/path/to" == req.path
    assert "a=1&b=2" == req.query_string
    assert CIMultiDict() == req.headers
    assert () == req.raw_headers

    get = req.query
    assert MultiDict([("a", "1"), ("b", "2")]) == get
    # second call should return the same object
    assert get is req.query

    assert req.keep_alive

    # just make sure that all lines of make_mocked_request covered
    headers = CIMultiDict(FOO="bar")
    payload = mock.Mock()
    protocol = mock.Mock()
    app = mock.Mock()
    req = make_mocked_request(
        "GET",
        "/path/to?a=1&b=2",
        headers=headers,
        protocol=protocol,
        payload=payload,
        app=app,
    )
    assert req.app is app
    assert req.content is payload
    assert req.protocol is protocol
    assert req.transport is protocol.transport
    assert req.headers == headers
    assert req.raw_headers == ((b"FOO", b"bar"), )
    assert req.task is req._task

    assert "__dict__" not in dir(req)
async def test_keep_alive_http09() -> None:
    headers = CIMultiDict(Connection="keep-alive")
    req = make_request("GET", "/", version=HttpVersion(0, 9), headers=headers)
    resp = StreamResponse()
    await resp.prepare(req)
    assert not resp.keep_alive
Beispiel #12
0
def test_non_keepalive_on_http10() -> None:
    req = make_mocked_request('GET', '/', version=HttpVersion(1, 0))
    assert not req.keep_alive
Beispiel #13
0
def test_keep_alive_http09():
    headers = CIMultiDict(Connection='keep-alive')
    req = make_request('GET', '/', version=HttpVersion(0, 9), headers=headers)
    resp = StreamResponse()
    yield from resp.prepare(req)
    assert not resp.keep_alive
Beispiel #14
0
def test_non_keepalive_on_http10(make_request):
    req = make_request('GET', '/', version=HttpVersion(1, 0))
    assert not req.keep_alive
 def setUp(self):
     meta = {}
     run_args = argparse.ArgumentParser()
     run_args.add_argument("--tanner")
     run_args.add_argument("--page-dir")
     self.main_page_path = generate_unique_path()
     os.makedirs(self.main_page_path)
     self.page_dir = self.main_page_path.rsplit("/")[-1]
     args = run_args.parse_args(["--page-dir", self.page_dir])
     args_dict = vars(args)
     args_dict["full_page_path"] = self.main_page_path
     uuid = "9c10172f-7ce2-4fb4-b1c6-abc70141db56".encode("utf-8")
     args.tanner = "tanner.mushmush.org"
     args.no_dorks = True
     args.server_header = "test_server"
     args.slurp_enabled = True
     self.handler = HttpRequestHandler(meta, args, uuid)
     self.request_data = {
         "method": "GET",
         "path": "/",
         "headers": {
             "Host": "test_host",
             "Content-Type": "test_type",
         },
         "status": 200,
         "cookies": {
             "sess_uuid": "prev_test_uuid",
         },
     }
     self.loop = asyncio.new_event_loop()
     self.response_content = "<html><body></body></html>"
     self.response_headers = multidict.CIMultiDict([("Content-Type",
                                                     "text/html")])
     self.response_status = 200
     event_result = dict(response=dict(
         message=dict(detection={"type": 1}, sess_uuid="test_uuid")))
     RequestHandler = Mock()
     protocol = RequestHandler()
     message = RawRequestMessage(
         method="POST",
         path="/",
         version=HttpVersion(major=1, minor=1),
         headers=self.request_data["headers"],
         raw_headers=None,
         should_close=None,
         compression=None,
         upgrade=None,
         chunked=None,
         url=URL("http://test_url/"),
     )
     self.request = web.Request(
         message=message,
         payload=None,
         protocol=protocol,
         payload_writer=None,
         task="POST",
         loop=self.loop,
     )
     self.handler.tanner_handler.create_data = Mock(
         return_value=self.request_data)
     self.handler.tanner_handler.submit_data = AsyncMock(
         return_value=event_result)
     self.handler.submit_slurp = AsyncMock()
     web.Response.add_header = Mock()
     web.Response.write = Mock()
     web.Response.send_headers = Mock()
     web.Response.write_eof = AsyncMock()
     aiohttp.streams.EmptyStreamReader.read = AsyncMock(
         return_value=b"con1=test1&con2=test2")
     self.handler.tanner_handler.parse_tanner_response = AsyncMock(
         return_value=(
             self.response_content,
             self.response_headers,
             self.response_status,
         ))
def function281(function145):
    var4591 = function145('GET', '/', version=HttpVersion(1, 0))
    assert (not var4591.keep_alive)