mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-30 03:14:22 +00:00
request replay test
This commit is contained in:
parent
62403a5bd8
commit
08735ab0ae
@ -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)
|
||||||
|
@ -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())
|
||||||
|
Loading…
Reference in New Issue
Block a user