Show More
@@ -90,6 +90,8 b' def lfs_objects_batch(request):' | |||
|
90 | 90 | repo = request.matchdict.get('repo') |
|
91 | 91 | data = request.json |
|
92 | 92 | operation = data.get('operation') |
|
93 | http_scheme = request.registry.git_lfs_http_scheme | |
|
94 | ||
|
93 | 95 | if operation not in ('download', 'upload'): |
|
94 | 96 | log.debug('LFS: unsupported operation:%s', operation) |
|
95 | 97 | return write_response_error( |
@@ -114,8 +116,10 b' def lfs_objects_batch(request):' | |||
|
114 | 116 | |
|
115 | 117 | obj_data = {'oid': oid} |
|
116 | 118 | |
|
117 |
obj_href = request.route_url('lfs_objects_oid', repo=repo, oid=oid |
|
|
118 | obj_verify_href = request.route_url('lfs_objects_verify', repo=repo) | |
|
119 | obj_href = request.route_url('lfs_objects_oid', repo=repo, oid=oid, | |
|
120 | _scheme=http_scheme) | |
|
121 | obj_verify_href = request.route_url('lfs_objects_verify', repo=repo, | |
|
122 | _scheme=http_scheme) | |
|
119 | 123 | store = LFSOidStore( |
|
120 | 124 | oid, repo, store_location=request.registry.git_lfs_store_path) |
|
121 | 125 | handler = OidHandler( |
@@ -274,11 +278,12 b' def git_lfs_app(config):' | |||
|
274 | 278 | config.add_notfound_view(not_found, renderer='json') |
|
275 | 279 | |
|
276 | 280 | |
|
277 | def create_app(git_lfs_enabled, git_lfs_store_path): | |
|
281 | def create_app(git_lfs_enabled, git_lfs_store_path, git_lfs_http_scheme): | |
|
278 | 282 | config = Configurator() |
|
279 | 283 | if git_lfs_enabled: |
|
280 | 284 | config.include(git_lfs_app) |
|
281 | 285 | config.registry.git_lfs_store_path = git_lfs_store_path |
|
286 | config.registry.git_lfs_http_scheme = git_lfs_http_scheme | |
|
282 | 287 | else: |
|
283 | 288 | # not found handler for API, reporting disabled LFS support |
|
284 | 289 | config.add_notfound_view(lfs_disabled, renderer='json') |
@@ -26,7 +26,17 b' from vcsserver.git_lfs.app import create' | |||
|
26 | 26 | @pytest.fixture(scope='function') |
|
27 | 27 | def git_lfs_app(tmpdir): |
|
28 | 28 | custom_app = WebObTestApp(create_app( |
|
29 |
git_lfs_enabled=True, git_lfs_store_path=str(tmpdir) |
|
|
29 | git_lfs_enabled=True, git_lfs_store_path=str(tmpdir), | |
|
30 | git_lfs_http_scheme='http')) | |
|
31 | custom_app._store = str(tmpdir) | |
|
32 | return custom_app | |
|
33 | ||
|
34 | ||
|
35 | @pytest.fixture(scope='function') | |
|
36 | def git_lfs_https_app(tmpdir): | |
|
37 | custom_app = WebObTestApp(create_app( | |
|
38 | git_lfs_enabled=True, git_lfs_store_path=str(tmpdir), | |
|
39 | git_lfs_http_scheme='https')) | |
|
30 | 40 | custom_app._store = str(tmpdir) |
|
31 | 41 | return custom_app |
|
32 | 42 | |
@@ -58,7 +68,7 b' class TestLFSApplication(object):' | |||
|
58 | 68 | assert json.loads(response.text) == { |
|
59 | 69 | u'message': u'GIT LFS locking api not supported'} |
|
60 | 70 | |
|
61 |
def test_app_batch_api_missing_auth(self, git_lfs_app |
|
|
71 | def test_app_batch_api_missing_auth(self, git_lfs_app): | |
|
62 | 72 | git_lfs_app.post_json( |
|
63 | 73 | '/repo/info/lfs/objects/batch', params={}, status=403) |
|
64 | 74 | |
@@ -155,8 +165,31 b' class TestLFSApplication(object):' | |||
|
155 | 165 | assert json.loads(response.text) == { |
|
156 | 166 | 'objects': expected_objects, 'transfer': 'basic'} |
|
157 | 167 | |
|
168 | def test_app_batch_api_upload_for_https(self, git_lfs_https_app, http_auth): | |
|
169 | params = {'operation': 'upload', | |
|
170 | 'objects': [{'oid': '123', 'size': '1024'}]} | |
|
171 | response = git_lfs_https_app.post_json( | |
|
172 | '/repo/info/lfs/objects/batch', params=params, | |
|
173 | extra_environ=http_auth) | |
|
174 | expected_objects = [ | |
|
175 | {u'authenticated': True, | |
|
176 | u'actions': { | |
|
177 | u'upload': { | |
|
178 | u'header': {u'Authorization': u'Basic XXXXX', | |
|
179 | u'Transfer-Encoding': u'chunked'}, | |
|
180 | u'href': u'https://localhost/repo/info/lfs/objects/123'}, | |
|
181 | u'verify': { | |
|
182 | u'header': {u'Authorization': u'Basic XXXXX'}, | |
|
183 | u'href': u'https://localhost/repo/info/lfs/verify'} | |
|
184 | }, | |
|
185 | u'oid': u'123', | |
|
186 | u'size': u'1024'} | |
|
187 | ] | |
|
188 | assert json.loads(response.text) == { | |
|
189 | 'objects': expected_objects, 'transfer': 'basic'} | |
|
190 | ||
|
158 | 191 | def test_app_verify_api_missing_data(self, git_lfs_app): |
|
159 |
params = {'oid': 'missing' |
|
|
192 | params = {'oid': 'missing'} | |
|
160 | 193 | response = git_lfs_app.post_json( |
|
161 | 194 | '/repo/info/lfs/verify', params=params, |
|
162 | 195 | status=400) |
@@ -218,8 +218,8 b' class GitLFSHandler(object):' | |||
|
218 | 218 | self.git_path = git_path |
|
219 | 219 | self.update_server_info = update_server_info |
|
220 | 220 | |
|
221 | def get_app(self, git_lfs_enabled, git_lfs_store_path): | |
|
222 | app = git_lfs.create_app(git_lfs_enabled, git_lfs_store_path) | |
|
221 | def get_app(self, git_lfs_enabled, git_lfs_store_path, git_lfs_http_scheme): | |
|
222 | app = git_lfs.create_app(git_lfs_enabled, git_lfs_store_path, git_lfs_http_scheme) | |
|
223 | 223 | return app |
|
224 | 224 | |
|
225 | 225 | |
@@ -228,7 +228,8 b' def create_git_lfs_wsgi_app(repo_path, r' | |||
|
228 | 228 | update_server_info = config.pop('git_update_server_info') |
|
229 | 229 | git_lfs_enabled = config.pop('git_lfs_enabled') |
|
230 | 230 | git_lfs_store_path = config.pop('git_lfs_store_path') |
|
231 | git_lfs_http_scheme = config.pop('git_lfs_http_scheme', 'http') | |
|
231 | 232 | app = GitLFSHandler( |
|
232 | 233 | repo_path, repo_name, git_path, update_server_info, config) |
|
233 | 234 | |
|
234 | return app.get_app(git_lfs_enabled, git_lfs_store_path) | |
|
235 | return app.get_app(git_lfs_enabled, git_lfs_store_path, git_lfs_http_scheme) |
General Comments 0
You need to be logged in to leave comments.
Login now