Source code
Revision control
Copy as Markdown
Other Tools
# -*- coding; utf-8 -*-
"""
test_head_request
~~~~~~~~~~~~~~~~~
"""
import h2.connection
import pytest
class TestHeadRequest(object):
example_request_headers = [
(b':authority', b'example.com'),
(b':path', b'/'),
(b':scheme', b'https'),
(b':method', b'HEAD'),
]
example_response_headers = [
(b':status', b'200'),
(b'server', b'fake-serv/0.1.0'),
(b'content_length', b'1'),
]
def test_non_zero_content_and_no_body(self, frame_factory):
c = h2.connection.H2Connection()
c.initiate_connection()
c.send_headers(1, self.example_request_headers, end_stream=True)
f = frame_factory.build_headers_frame(
self.example_response_headers,
flags=['END_STREAM']
)
events = c.receive_data(f.serialize())
assert len(events) == 2
event = events[0]
assert isinstance(event, h2.events.ResponseReceived)
assert event.stream_id == 1
assert event.headers == self.example_response_headers
def test_reject_non_zero_content_and_body(self, frame_factory):
c = h2.connection.H2Connection()
c.initiate_connection()
c.send_headers(1, self.example_request_headers)
headers = frame_factory.build_headers_frame(
self.example_response_headers
)
data = frame_factory.build_data_frame(data=b'\x01')
c.receive_data(headers.serialize())
with pytest.raises(h2.exceptions.InvalidBodyLengthError):
c.receive_data(data.serialize())