Show More
@@ -51,7 +51,8 b' class SimpleSvnApp(object):' | |||||
51 | data = environ['wsgi.input'] |
|
51 | data = environ['wsgi.input'] | |
52 | req_method = environ['REQUEST_METHOD'] |
|
52 | req_method = environ['REQUEST_METHOD'] | |
53 | has_content_length = 'CONTENT_LENGTH' in environ |
|
53 | has_content_length = 'CONTENT_LENGTH' in environ | |
54 |
path_info = self._get_url( |
|
54 | path_info = self._get_url( | |
|
55 | self.config.get('subversion_http_server_url', ''), environ['PATH_INFO']) | |||
55 | transfer_encoding = environ.get('HTTP_TRANSFER_ENCODING', '') |
|
56 | transfer_encoding = environ.get('HTTP_TRANSFER_ENCODING', '') | |
56 | log.debug('Handling: %s method via `%s`', req_method, path_info) |
|
57 | log.debug('Handling: %s method via `%s`', req_method, path_info) | |
57 |
|
58 | |||
@@ -117,9 +118,9 b' class SimpleSvnApp(object):' | |||||
117 | response_headers) |
|
118 | response_headers) | |
118 | return response.iter_content(chunk_size=1024) |
|
119 | return response.iter_content(chunk_size=1024) | |
119 |
|
120 | |||
120 | def _get_url(self, path): |
|
121 | def _get_url(self, svn_http_server, path): | |
121 | url_path = urlparse.urljoin( |
|
122 | svn_http_server_url = (svn_http_server or '').rstrip('/') | |
122 | self.config.get('subversion_http_server_url', ''), path) |
|
123 | url_path = urlparse.urljoin(svn_http_server_url + '/', (path or '').lstrip('/')) | |
123 | url_path = urllib.quote(url_path, safe="/:=~+!$,;'") |
|
124 | url_path = urllib.quote(url_path, safe="/:=~+!$,;'") | |
124 | return url_path |
|
125 | return url_path | |
125 |
|
126 |
@@ -161,9 +161,17 b' class TestSimpleSvnApp(object):' | |||||
161 | response_headers = self.app._get_response_headers(headers) |
|
161 | response_headers = self.app._get_response_headers(headers) | |
162 | assert sorted(response_headers) == sorted(expected_headers) |
|
162 | assert sorted(response_headers) == sorted(expected_headers) | |
163 |
|
163 | |||
164 | def test_get_url(self): |
|
164 | @pytest.mark.parametrize('svn_http_url, path_info, expected_url', [ | |
165 | url = self.app._get_url(self.path) |
|
165 | ('http://localhost:8200', '/repo_name', 'http://localhost:8200/repo_name'), | |
166 | expected_url = '{}{}'.format(self.host.strip('/'), self.path) |
|
166 | ('http://localhost:8200///', '/repo_name', 'http://localhost:8200/repo_name'), | |
|
167 | ('http://localhost:8200', '/group/repo_name', 'http://localhost:8200/group/repo_name'), | |||
|
168 | ('http://localhost:8200/', '/group/repo_name', 'http://localhost:8200/group/repo_name'), | |||
|
169 | ('http://localhost:8200/prefix', '/repo_name', 'http://localhost:8200/prefix/repo_name'), | |||
|
170 | ('http://localhost:8200/prefix', 'repo_name', 'http://localhost:8200/prefix/repo_name'), | |||
|
171 | ('http://localhost:8200/prefix', '/group/repo_name', 'http://localhost:8200/prefix/group/repo_name') | |||
|
172 | ]) | |||
|
173 | def test_get_url(self, svn_http_url, path_info, expected_url): | |||
|
174 | url = self.app._get_url(svn_http_url, path_info) | |||
167 | assert url == expected_url |
|
175 | assert url == expected_url | |
168 |
|
176 | |||
169 | def test_call(self): |
|
177 | def test_call(self): |
General Comments 0
You need to be logged in to leave comments.
Login now