MCPcopy
hub / github.com/mitmproxy/mitmproxy / test_simple

Function test_simple

test/mitmproxy/proxy/layers/http/test_http2.py:95–145  ·  view source on GitHub ↗
(tctx)

Source from the content-addressed store, hash-verified

93
94
95def test_simple(tctx):
96 playbook, cff = start_h2_client(tctx)
97 flow = Placeholder(HTTPFlow)
98 server = Placeholder(Server)
99 initial = Placeholder(bytes)
100 assert (
101 playbook
102 >> DataReceived(
103 tctx.client,
104 cff.build_headers_frame(
105 example_request_headers, flags=["END_STREAM"]
106 ).serialize(),
107 )
108 << http.HttpRequestHeadersHook(flow)
109 >> reply()
110 << http.HttpRequestHook(flow)
111 >> reply()
112 << OpenConnection(server)
113 >> reply(None, side_effect=make_h2)
114 << SendData(server, initial)
115 )
116 frames = decode_frames(initial())
117 assert [type(x) for x in frames] == [
118 hyperframe.frame.SettingsFrame,
119 hyperframe.frame.WindowUpdateFrame,
120 hyperframe.frame.HeadersFrame,
121 ]
122 sff = FrameFactory()
123 assert (
124 playbook
125 # a conforming h2 server would send settings first, we disregard this for now.
126 >> DataReceived(
127 server, sff.build_headers_frame(example_response_headers).serialize()
128 )
129 << http.HttpResponseHeadersHook(flow)
130 >> reply()
131 >> DataReceived(
132 server,
133 sff.build_data_frame(b"Hello, World!", flags=["END_STREAM"]).serialize(),
134 )
135 << http.HttpResponseHook(flow)
136 >> reply()
137 << SendData(
138 tctx.client,
139 cff.build_headers_frame(example_response_headers).serialize()
140 + cff.build_data_frame(b"Hello, World!").serialize()
141 + cff.build_data_frame(b"", flags=["END_STREAM"]).serialize(),
142 )
143 )
144 assert flow().request.url == "http://example.com/"
145 assert flow().response.text == "Hello, World!"
146
147
148@pytest.mark.parametrize("stream", ["stream", ""])

Callers

nothing calls this directly

Calls 10

build_headers_frameMethod · 0.95
build_data_frameMethod · 0.95
PlaceholderFunction · 0.90
DataReceivedClass · 0.90
replyClass · 0.90
OpenConnectionClass · 0.90
SendDataClass · 0.90
FrameFactoryClass · 0.90
start_h2_clientFunction · 0.85
decode_framesFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…