Exemplo n.º 1
0
 def test_parse_ignores_trailing_chars(self) -> None:
     request_str = (
         self.get_request_str('/foo') +
         '  here is\nsome\r   more \n\n random stuff !!\r!!    \n\n\n   ')
     actual = parse(request_str)
     expected = self.get_request(['foo'])
     self.assertEqual(actual, expected)
Exemplo n.º 2
0
    def test_handler_code_400(self) -> None:
        response_200 = Response(200, ('text', 'plain'), '')

        @create_handler
        def custom_handler(request: Request) -> Response:
            return response_200

        good_request_str = '{} / {}{}'.format(GET_METHOD, HTTP_VERSION, CRLF)
        self.assertIsNotNone(parse(good_request_str))
        self.assertEqual(response_200.get_bytes(),
                         custom_handler(good_request_str.encode()))

        bad_request_str = '{}/ {}{}'.format(GET_METHOD, HTTP_VERSION, CRLF)
        self.assertIsNone(parse(bad_request_str))
        self.assertEqual(
            Response(400).get_bytes(),
            custom_handler(bad_request_str.encode()))
Exemplo n.º 3
0
 def test_missing_uri(self) -> None:
     self.assertIsNone(
         parse('{} {}{}'.format(GET_METHOD, HTTP_VERSION, CRLF)))
Exemplo n.º 4
0
 def test_missing_method(self) -> None:
     self.assertIsNone(parse('/ {}{}'.format(HTTP_VERSION, CRLF)))
Exemplo n.º 5
0
 def test_invalid_version(self) -> None:
     self.assertIsNone(parse('{} / HtTP/1.1{}'.format(GET_METHOD, CRLF)))
Exemplo n.º 6
0
 def test_invalid_uri(self) -> None:
     self.assertIsNone(parse(self.get_request_str('foo')))
     self.assertIsNotNone(parse(self.get_request_str('/foo')))
Exemplo n.º 7
0
 def test_invalid_method(self) -> None:
     self.assertIsNone(parse('gET / {}{}'.format(HTTP_VERSION, CRLF)))
Exemplo n.º 8
0
 def test_other_whitespace(self) -> None:
     self.assertIsNone(
         parse('{} /foo/\nbar {}{}'.format(GET_METHOD, HTTP_VERSION, CRLF)))
     self.assertIsNotNone(
         parse('{} /foo/bar {}{}'.format(GET_METHOD, HTTP_VERSION, CRLF)))
Exemplo n.º 9
0
 def test_trailing_space(self) -> None:
     self.assertIsNone(
         parse('{} / {} {}'.format(GET_METHOD, HTTP_VERSION, CRLF)))
Exemplo n.º 10
0
 def test_missing_crlf(self) -> None:
     self.assertIsNone(parse('{} / {}'.format(GET_METHOD, HTTP_VERSION)))
Exemplo n.º 11
0
 def get_actual_expected(
         cls, uri: str,
         uri_ast: List[str]) -> Tuple[Optional[Request], Request]:
     actual = parse(cls.get_request_str(uri))
     expected = cls.get_request(uri_ast)
     return actual, expected
Exemplo n.º 12
0
 def test_only_method_space_uri_space_version(self) -> None:
     self.assertIsNone(parse(GET_METHOD + ' / ' + HTTP_VERSION))
Exemplo n.º 13
0
 def test_only_method_space_uri_space(self) -> None:
     self.assertIsNone(parse(GET_METHOD + ' / '))
Exemplo n.º 14
0
 def test_only_method(self) -> None:
     self.assertIsNone(parse(GET_METHOD))
Exemplo n.º 15
0
 def test_empty_str(self) -> None:
     self.assertIsNone(parse(''))
Exemplo n.º 16
0
 def test_missing_version(self) -> None:
     self.assertIsNone(parse('{} / {}'.format(GET_METHOD, CRLF)))