twisted.web.test.test_newclient.HTTPClientParserTests(TestCase)
class documentationtwisted.web.test.test_newclient
(View In Hierarchy)
Tests for HTTPClientParser
which is responsible for parsing HTTP response messages.
Method | test_parseVersion | HTTPClientParser.parseVersion
parses a status line into its three components. |
Method | test_parseBadVersion | HTTPClientParser.parseVersion
raises ValueError
when passed an unparsable version. |
Method | test_responseStatusParsing | HTTPClientParser.statusReceived
parses the version, code, and phrase from the status line and stores them
on the response object. |
Method | test_responseStatusWithoutPhrase | HTTPClientParser.statusReceived
can parse a status line without a phrase (though such lines are a violation
of RFC 7230, section 3.1.2; nevertheless some broken servers omit the
phrase). |
Method | test_badResponseStatus | HTTPClientParser.statusReceived
raises ParseError
if it is called with a status line which cannot be parsed. |
Method | test_headResponse | If the response is to a HEAD request, no body is expected, the body callback is not invoked, and the Content-Length header is passed to the header callback. |
Method | test_noContentResponse | If the response code is NO CONTENT (204), no body is expected and the body callback is not invoked. |
Method | test_notModifiedResponse | If the response code is NOT MODIFIED (304), no body is expected and the body callback is not invoked. |
Method | test_responseHeaders | The response headers are added to the response object's
headers Headers
instance. |
Method | test_responseHeadersMultiline | The multi-line response headers are folded and added to the response
object's headers Headers
instance. |
Method | test_connectionHeaders | The connection control headers are added to the parser's
connHeaders Headers
instance. |
Method | test_headResponseContentLengthEntityHeader | If a HEAD request is made, the Content-Length header in the response is added to the response headers, not the connection control headers. |
Method | test_contentLength | If a response includes a body with a length given by the
Content-Length header, the bytes which make up the body are passed
to the _bodyDataReceived callback on the HTTPParser . |
Method | test_zeroContentLength | If a response includes a Content-Length header indicating zero
bytes in the response, Response.length is set accordingly and
no data is delivered to Response._bodyDataReceived . |
Method | test_multipleContentLengthHeaders | If a response includes multiple Content-Length headers, HTTPClientParser.dataReceived
raises ValueError
to indicate that the response is invalid and the transport is now
unusable. |
Method | test_extraBytesPassedBack | If extra bytes are received past the end of a response, they are passed to the finish callback. |
Method | test_extraBytesPassedBackHEAD | If extra bytes are received past the end of the headers of a response to a HEAD request, they are passed to the finish callback. |
Method | test_chunkedResponseBody | If the response headers indicate the response body is encoded with the
chunked transfer encoding, the body is decoded according to that
transfer encoding before being passed to Response._bodyDataReceived . |
Method | test_unknownContentLength | If a response does not include a Transfer-Encoding or a Content-Length, the end of response body is indicated by the connection being closed. |
Method | test_contentLengthAndTransferEncoding | According to RFC 2616, section 4.4, point 3, if Content-Length and Transfer-Encoding: chunked are present, Content-Length MUST be ignored |
Method | test_connectionLostBeforeBody | If HTTPClientParser.connectionLost
is called before the headers are finished, the
_responseDeferred is fired with the Failure passed
to connectionLost . |
Method | test_connectionLostWithError | If one of the Response methods
called by HTTPClientParser.connectionLost
raises an exception, the exception is logged and not re-raised. |
Method | test_noResponseAtAll | If no response at all was received and the connection is lost, the
resulting error is ResponseNeverReceived . |
Method | test_someResponseButNotAll | If a partial response was received and the connection is lost, the
resulting error is ResponseFailed ,
but not ResponseNeverReceived . |
Method | test_1XXResponseIsSwallowed | If a response in the 1XX range is received it just gets swallowed and the parser resets itself. |
Method | test_1XXFollowedByFinalResponseOnlyEmitsFinal | When a 1XX response is swallowed, the final response that follows it is the only one that gets sent to the application. |
Method | test_multiple1XXResponsesAreIgnored | It is acceptable for multiple 1XX responses to come through, all of which get ignored. |
Method | test_ignored1XXResponseCausesLog | When a 1XX response is ignored, Twisted emits a log. |
Method | _noBodyTest | Assert that HTTPClientParser
parses the given response to request , resulting
in a response with no body and no extra bytes and leaving the transport in
the producing state. |
Inherited from TestCase:
Instance Variable | timeout | A real number of seconds. If set, the test will raise an error if it takes
longer than timeout seconds. If not set,
util.DEFAULT_TIMEOUT_DURATION is used. |
Method | __init__ | Construct an asynchronous test case for methodName . |
Method | assertFailure | Fail if deferred does not errback with one of
expectedFailures . Returns the original Deferred with callbacks
added. You will need to return this Deferred from your test case. |
Method | __call__ | Run the test. Should always do exactly the same thing as run(). |
Method | deferSetUp | Undocumented |
Method | deferTestMethod | Undocumented |
Method | deferTearDown | Undocumented |
Method | deferRunCleanups | Run any scheduled cleanups and report errors (if any to the result object. |
Method | addCleanup | Extend the base cleanup feature with support for cleanup functions which return Deferreds. |
Method | getSuppress | Undocumented |
Method | getTimeout | No summary |
Method | _run | Run a single method, either a test method or fixture. |
Method | _ebDeferSetUp | Undocumented |
Method | _cbDeferTestMethod | Undocumented |
Method | _ebDeferTestMethod | Undocumented |
Method | _ebDeferTearDown | Undocumented |
Method | _cbDeferRunCleanups | Undocumented |
Method | _cleanUp | Undocumented |
Method | _classCleanUp | Undocumented |
Method | _makeReactorMethod | Create a method which wraps the reactor method name . The
new method issues a deprecation warning and calls the original. |
Method | _deprecateReactor | Deprecate iterate , crash and stop
on reactor . That is, each method is wrapped in a function that
issues a deprecation warning, then calls the original. |
Method | _undeprecateReactor | Restore the deprecated reactor methods. Undoes what _deprecateReactor
did. |
Method | _runCleanups | Run the cleanups added with addCleanup
in order. |
Method | _runFixturesAndTest | Really run setUp , the test method, and
tearDown . Any of these may return defer.Deferred s.
After they complete, do some reactor cleanup. |
Method | _wait | Take a Deferred that only ever callbacks. Block until it happens. |
Inherited from SynchronousTestCase (via TestCase):
Instance Variable | failureException | An exception class, defaulting to FailTest . If the test method
raises this exception, it will be reported as a failure, rather than an
exception. All of the assertion methods raise this if the assertion fails. |
Instance Variable | skip | None
or a string explaining why this test is to be skipped. If defined, the test
will not be run. Instead, it will be reported to the result object as
'skipped' (if the TestResult supports skipping). |
Instance Variable | todo | None ,
a string or a tuple of (errors, reason) where
errors is either an exception class or an iterable of
exception classes, and reason is a string. See Todo or makeTodo for
more information. |
Instance Variable | suppress | None
or a list of tuples of (args, kwargs) to be passed to
warnings.filterwarnings . Use these to suppress warnings raised
in a test. Useful for testing deprecated code. See also util.suppress . |
Method | __eq__ | No summary |
Method | __ne__ | Undocumented |
Method | __hash__ | Undocumented |
Method | shortDescription | Undocumented |
Method | getSkip | No summary |
Method | getTodo | No summary |
Method | runTest | If no methodName argument is passed to the constructor, run
will treat this method as the thing with the actual test inside. |
Method | run | Run the test case, storing the results in result . |
Method | patch | Monkey patch an object for the duration of the test. |
Method | flushLoggedErrors | Remove stored errors received from the log. |
Method | flushWarnings | Remove stored warnings from the list of captured warnings and return them. |
Method | callDeprecated | Call a function that should have been deprecated at a specific version and in favor of a specific alternative, and assert that it was thusly deprecated. |
Method | mktemp | Create a new path name which can be used for a new file or directory. |
Method | _getSuppress | No summary |
Method | _getSkipReason | Return the reason to use for skipping a test method. |
Method | _installObserver | Undocumented |
Method | _removeObserver | Undocumented |
Inherited from _Assertions (via TestCase, SynchronousTestCase):
Method | fail | Absolutely fail the test. Do not pass go, do not collect $200. |
Method | assertFalse | Fail the test if condition evaluates to True. |
Method | assertTrue | Fail the test if condition evaluates to False. |
Method | assertRaises | Fail the test unless calling the function f with the given
args and kwargs raises exception .
The failure will report the traceback and call stack of the unexpected
exception. |
Method | assertEqual | Fail the test if first and second are not
equal. |
Method | assertIs | Fail the test if first is not second . This is
an obect-identity-equality test, not an object equality (i.e.
__eq__ ) test. |
Method | assertIsNot | Fail the test if first is second . This is an
obect-identity-equality test, not an object equality (i.e.
__eq__ ) test. |
Method | assertNotEqual | Fail the test if first == second . |
Method | assertIn | Fail the test if containee is not found in
container . |
Method | assertNotIn | Fail the test if containee is found in
container . |
Method | assertNotAlmostEqual | Fail if the two objects are equal as determined by their difference rounded to the given number of decimal places (default 7) and comparing to zero. |
Method | assertAlmostEqual | Fail if the two objects are unequal as determined by their difference rounded to the given number of decimal places (default 7) and comparing to zero. |
Method | assertApproximates | Fail if first - second >
tolerance |
Method | assertSubstring | Fail if substring does not exist within
astring . |
Method | assertNotSubstring | Fail if astring contains substring . |
Method | assertWarns | Fail if the given function doesn't generate the specified warning when called. It calls the function, checks the warning, and forwards the result of the function if everything is fine. |
Method | assertIsInstance | Fail if instance is not an instance of the given class or
of one of the given classes. |
Method | assertNotIsInstance | Fail if instance is an instance of the given class or of
one of the given classes. |
Method | successResultOf | Return the current success result of deferred or raise
self.failureException . |
Method | failureResultOf | Return the current failure result of deferred or raise
self.failureException . |
Method | assertNoResult | Assert that deferred does not have a result at this
point. |
Method | assertRegex | Fail the test if a regexp search of text
fails. |
HTTPClientParser.parseVersion
parses a status line into its three components.
HTTPClientParser.parseVersion
raises ValueError
when passed an unparsable version.
HTTPClientParser.statusReceived
parses the version, code, and phrase from the status line and stores them
on the response object.
HTTPClientParser.statusReceived
can parse a status line without a phrase (though such lines are a violation
of RFC 7230, section 3.1.2; nevertheless some broken servers omit the
phrase).
HTTPClientParser.statusReceived
raises ParseError
if it is called with a status line which cannot be parsed.
Assert that HTTPClientParser
parses the given response
to request
, resulting
in a response with no body and no extra bytes and leaving the transport in
the producing state.
Parameters | request | A Request
instance which might have caused a server to return the given response. |
status | A string giving the status line of the response to be parsed. | |
response | A string giving the response to be parsed. | |
Returns | A dict of headers from the response. |
If the response is to a HEAD request, no body is expected, the body callback is not invoked, and the Content-Length header is passed to the header callback.
If the response code is NO CONTENT (204), no body is expected and the body callback is not invoked.
If the response code is NOT MODIFIED (304), no body is expected and the body callback is not invoked.
The response headers are added to the response object's
headers
Headers
instance.
The multi-line response headers are folded and added to the response
object's headers
Headers
instance.
The connection control headers are added to the parser's
connHeaders
Headers
instance.
If a HEAD request is made, the Content-Length header in the response is added to the response headers, not the connection control headers.
If a response includes a body with a length given by the
Content-Length header, the bytes which make up the body are passed
to the _bodyDataReceived
callback on the HTTPParser
.
If a response includes a Content-Length header indicating zero
bytes in the response, Response.length
is set accordingly and
no data is delivered to Response._bodyDataReceived
.
If a response includes multiple Content-Length headers, HTTPClientParser.dataReceived
raises ValueError
to indicate that the response is invalid and the transport is now
unusable.
If extra bytes are received past the end of a response, they are passed to the finish callback.
If extra bytes are received past the end of the headers of a response to a HEAD request, they are passed to the finish callback.
If the response headers indicate the response body is encoded with the
chunked transfer encoding, the body is decoded according to that
transfer encoding before being passed to Response._bodyDataReceived
.
If a response does not include a Transfer-Encoding or a Content-Length, the end of response body is indicated by the connection being closed.
According to RFC 2616, section 4.4, point 3, if Content-Length and Transfer-Encoding: chunked are present, Content-Length MUST be ignored
If HTTPClientParser.connectionLost
is called before the headers are finished, the
_responseDeferred
is fired with the Failure
passed
to connectionLost
.
If one of the Response
methods
called by HTTPClientParser.connectionLost
raises an exception, the exception is logged and not re-raised.
If no response at all was received and the connection is lost, the
resulting error is ResponseNeverReceived
.
If a partial response was received and the connection is lost, the
resulting error is ResponseFailed
,
but not ResponseNeverReceived
.
If a response in the 1XX range is received it just gets swallowed and the parser resets itself.
When a 1XX response is swallowed, the final response that follows it is the only one that gets sent to the application.