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.response = None
f.error = 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" f.request.http_version = "HTTP/1.1"
host = f.request.headers.pop(":authority") host = f.request.headers.pop(":authority")
f.request.headers.insert(0, "host", host) f.request.headers.insert(0, "host", host)

View File

@ -1,7 +1,8 @@
import io import io
from unittest import mock
import pytest import pytest
from mitmproxy.test import tflow from mitmproxy.test import tflow, tutils
import mitmproxy.io import mitmproxy.io
from mitmproxy import flowfilter from mitmproxy import flowfilter
from mitmproxy import options from mitmproxy import options
@ -10,6 +11,7 @@ from mitmproxy.io import tnetstring
from mitmproxy.exceptions import FlowReadException, ReplayException, ControlException from mitmproxy.exceptions import FlowReadException, ReplayException, ControlException
from mitmproxy import flow from mitmproxy import flow
from mitmproxy import http from mitmproxy import http
from mitmproxy.net import http as net_http
from mitmproxy.proxy.server import DummyServer from mitmproxy.proxy.server import DummyServer
from mitmproxy import master from mitmproxy import master
from . import tservers from . import tservers
@ -99,7 +101,9 @@ class TestFlowMaster:
assert s.flows[0].request.host == "use-this-domain" assert s.flows[0].request.host == "use-this-domain"
def test_replay(self): 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 = tflow.tflow(resp=True)
f.request.content = None f.request.content = None
with pytest.raises(ReplayException, match="missing"): with pytest.raises(ReplayException, match="missing"):
@ -117,6 +121,14 @@ class TestFlowMaster:
with pytest.raises(ReplayException, match="live"): with pytest.raises(ReplayException, match="live"):
fm.replay_request(f) 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): def test_all(self):
s = tservers.TestState() s = tservers.TestState()
fm = master.Master(None, DummyServer()) fm = master.Master(None, DummyServer())