request replay test

This commit is contained in:
Ujjwal Verma 2017-06-26 00:53:14 +05:30
parent 62403a5bd8
commit 08735ab0ae
2 changed files with 15 additions and 3 deletions

View File

@ -162,7 +162,7 @@ class Master:
f.response = None
f.error = None
if f.request.http_version == "HTTP/2.0":
if f.request.http_version == "HTTP/2.0": # https://github.com/mitmproxy/mitmproxy/issues/2197
f.request.http_version = "HTTP/1.1"
host = f.request.headers.pop(":authority")
f.request.headers.insert(0, "host", host)

View File

@ -1,7 +1,8 @@
import io
from unittest import mock
import pytest
from mitmproxy.test import tflow
from mitmproxy.test import tflow, tutils
import mitmproxy.io
from mitmproxy import flowfilter
from mitmproxy import options
@ -10,6 +11,7 @@ from mitmproxy.io import tnetstring
from mitmproxy.exceptions import FlowReadException, ReplayException, ControlException
from mitmproxy import flow
from mitmproxy import http
from mitmproxy.net import http as net_http
from mitmproxy.proxy.server import DummyServer
from mitmproxy import master
from . import tservers
@ -99,7 +101,9 @@ class TestFlowMaster:
assert s.flows[0].request.host == "use-this-domain"
def test_replay(self):
fm = master.Master(None, DummyServer())
opts = options.Options()
conf = config.ProxyConfig(opts)
fm = master.Master(opts, DummyServer(conf))
f = tflow.tflow(resp=True)
f.request.content = None
with pytest.raises(ReplayException, match="missing"):
@ -117,6 +121,14 @@ class TestFlowMaster:
with pytest.raises(ReplayException, match="live"):
fm.replay_request(f)
req = tutils.treq(headers=net_http.Headers(((b":authority", b"foo"), (b"header", b"qvalue"), (b"content-length", b"7"))))
f = tflow.tflow(req=req)
f.request.http_version = "HTTP/2.0"
with mock.patch('mitmproxy.proxy.protocol.http_replay.RequestReplayThread.run'):
rt = fm.replay_request(f)
assert rt.f.request.http_version == "HTTP/1.1"
assert ":authority" not in rt.f.request.headers
def test_all(self):
s = tservers.TestState()
fm = master.Master(None, DummyServer())