From 802c7ea14ca3ce41afd394848b81c6c9649035ac Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: Oct 01 2018 12:01:39 +0000 Subject: [PATCH 1/2] Add some closer clone tests Signed-off-by: Patrick Uiterwijk --- diff --git a/tests/test_pagure_flask_ui_clone.py b/tests/test_pagure_flask_ui_clone.py index 095ee45..b931e0f 100644 --- a/tests/test_pagure_flask_ui_clone.py +++ b/tests/test_pagure_flask_ui_clone.py @@ -125,6 +125,12 @@ class PagureFlaskAppClonetests(tests.Modeltests): self.assertIn("symref=HEAD:refs/heads/master", output_text) self.assertIn(" refs/heads/master\n0000", output_text) + output = self.app.post( + '/clonetest.git/git-upload-pack', + headers={'Content-Type': 'application/x-git-upload-pack-request'}, + ) + self.assertEqual(output.status_code, 415) + @patch.dict('pagure.config.config', { 'ALLOW_HTTP_PULL_PUSH': True, 'ALLOW_HTTP_PUSH': False, diff --git a/tests/test_pagure_repospanner.py b/tests/test_pagure_repospanner.py index 10241ab..81b0089 100644 --- a/tests/test_pagure_repospanner.py +++ b/tests/test_pagure_repospanner.py @@ -330,6 +330,14 @@ class PagureRepoSpannerTestsNewRepoDefault(PagureRepoSpannerTests): self.assertIn("symref=HEAD:refs/heads/master", output_text) self.assertIn(" refs/heads/master\x00", output_text) + output = self.app.post( + '/clonetest.git/git-upload-pack', + headers={'Content-Type': 'application/x-git-upload-pack-request'}, + ) + self.assertEqual(output.status_code, 500) + output_text = output.get_data(as_text=True) + self.assertIn("Error processing your request", output_text) + @patch.dict('pagure.config.config', { 'ALLOW_HTTP_PULL_PUSH': True, 'ALLOW_HTTP_PUSH': True, From 071abd4d2142f10876ca49a09c8dcbd9060bba85 Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: Oct 01 2018 12:02:07 +0000 Subject: [PATCH 2/2] Make sure to have a service variable if not info/refs Signed-off-by: Patrick Uiterwijk --- diff --git a/pagure/ui/clone.py b/pagure/ui/clone.py index b89e807..f411efb 100644 --- a/pagure/ui/clone.py +++ b/pagure/ui/clone.py @@ -171,7 +171,8 @@ def proxy_repospanner(project, service): # Strip out any headers that cause problems for name in ("transfer-encoding",): - del resp.headers[name] + if name in resp.headers: + del resp.headers[name] return flask.Response( resp.iter_content(chunk_size=128), @@ -191,6 +192,7 @@ def clone_proxy(project, username=None, namespace=None): if not pagure_config["ALLOW_HTTP_PULL_PUSH"]: flask.abort(403, "HTTP pull/push is not allowed") + service = None if flask.request.path.endswith("/info/refs"): service = flask.request.args.get("service") if not service: