def test_http_request_regex(self):
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('method'), self.method)
        self.assertEqual(matches.group('path'), self.path)
        self.assertEqual(matches.group('protocol'), self.protocol)
    def test_http_request_regex(self):
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('method'), self.method)
        self.assertEqual(matches.group('path'), self.path)
        self.assertEqual(matches.group('protocol'), self.protocol)
def test_http_request_regex(path):
    """Test that the method/path/protocol are extracted properly from the HTTP request."""
    verbs = ('GET', 'POST', 'DELETE', 'PATCH', 'PUT')
    protocols = (
        'HTTP/1.0',
        'HTTP/1.1',
        'HTTP/2.0',
    )
    method = random.choice(verbs)
    protocol = random.choice(protocols)
    matches = HTTP_REQUEST_REGEX.match(f'{method} {path} {protocol}')
    assert matches.group('method') == method
    assert matches.group('path') == path
    assert matches.group('protocol') == protocol
    def test_http_request_regex_with_greater_than_symbol(self):
        self.path = '/here_or>'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
    def test_http_request_regex_with_single_quote_sign(self):
        self.path = '/there\'s-one\'s-way-or-another\'s'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
    def test_http_request_regex_with_parenthesis(self):
        self.path = '/here_or(here)'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
    def test_http_request_regex_with_plus_sign(self):
        self.path = '/++adding++is+always+fun'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
    def test_http_request_regex_with_asterisk_sign(self):
        self.path = '/here_*or'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
    def test_http_request_regex_with_anchor(self):
        self.path = '/path/to/article#section'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#10
0
    def test_http_request_regex_with_at_signs(self):
        self.path = '/@@funny'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#11
0
    def test_http_request_regex_with_port(self):
        self.path = '/path/with/port:80'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#12
0
    def test_http_request_regex_with_anchor(self):
        self.path = '/path/to/article#section'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#13
0
    def test_http_request_regex_with_at_signs(self):
        self.path = '/@@funny'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#14
0
    def test_http_request_regex_with_percent_sign(self):
        self.path = '/something%20encoded'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#15
0
    def test_http_request_regex_with_double_slashes(self):
        self.path = '/redirect_to?http://example.com'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#16
0
    def test_http_request_regex_with_dashes_and_underscores(self):
        self.path = '/path/to/article-with-dashes_and_underscores'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#17
0
    def test_http_request_regex_with_parameters(self):
        self.path = '/path/to/article?hello=world&goodbye=lennin'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#18
0
    def test_http_request_regex_with_port(self):
        self.path = '/path/with/port:80'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#19
0
    def test_http_request_regex_with_dashes_and_underscores(self):
        self.path = '/path/to/article-with-dashes_and_underscores'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#20
0
    def test_http_request_regex_with_plus_sign(self):
        self.path = '/++adding++is+always+fun'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#21
0
    def test_http_request_regex_with_domain(self):
        self.path = '/path/with/example.com'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#22
0
    def test_http_request_regex_with_domain(self):
        self.path = '/path/with/example.com'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#23
0
    def test_http_request_regex_with_vertical_bar_sign(self):
        self.path = '/here_or|here'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#24
0
    def test_http_request_regex_with_parameters(self):
        self.path = '/path/to/article?hello=world&goodbye=lennin'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#25
0
    def test_http_request_regex_with_asterisk_sign(self):
        self.path = '/here_*or'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#26
0
    def test_http_request_regex_with_double_slashes(self):
        self.path = '/redirect_to?http://example.com'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#27
0
    def test_http_request_regex_with_dollar_sign(self):
        self.path = '/something$important'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#28
0
    def test_http_request_regex_with_percent_sign(self):
        self.path = '/something%20encoded'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#29
0
    def test_http_request_regex_with_single_quote_sign(self):
        self.path = '/there\'s-one\'s-way-or-another\'s'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#30
0
    def test_http_request_regex_with_vertical_bar_sign(self):
        self.path = '/here_or|here'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#31
0
    def test_http_request_regex_with_comma_sign(self):
        self.path = '/there?la=as,is'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#32
0
    def test_http_request_regex_with_dollar_sign(self):
        self.path = '/something$important'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#33
0
    def test_http_request_regex_with_parenthesis(self):
        self.path = '/here_or(here)'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#34
0
    def test_http_request_regex_with_comma_sign(self):
        self.path = '/there?la=as,is'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#35
0
    def test_http_request_regex_with_square_brackets(self):
        self.path = '/here_or[here]'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#36
0
    def test_http_request_regex_with_square_brackets(self):
        self.path = '/here_or[here]'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#37
0
    def test_http_request_regex_with_greater_than_symbol(self):
        self.path = '/here_or>'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#38
0
    def test_http_request_regex_with_caret_symbol(self):
        self.path = '/georg`von^grote/\\'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)
示例#39
0
    def test_http_request_regex_with_caret_symbol(self):
        self.path = '/georg`von^grote/\\'
        line = self._build_test_request()
        matches = HTTP_REQUEST_REGEX.match(line)

        self.assertEqual(matches.group('path'), self.path)