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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)