From e2804145d551a7ed8b7be8eaa45700c3b7852f0f Mon Sep 17 00:00:00 2001 From: Slavek Kabrda Date: Apr 11 2018 12:10:16 +0000 Subject: Don't create gitolite.conf entries for docs and tickets when they're disabled --- diff --git a/pagure/lib/git_auth.py b/pagure/lib/git_auth.py index f153383..65d315b 100644 --- a/pagure/lib/git_auth.py +++ b/pagure/lib/git_auth.py @@ -136,7 +136,14 @@ class Gitolite2Auth(GitAuthHelper): # development model. pr_only = project.settings.get('pull_request_access_only', False) - for repos in ['repos', 'docs/', 'tickets/', 'requests/']: + repos_to_create = ['repos'] + if pagure_config.get('ENABLE_DOCS', True): + repos_to_create.append('docs/') + if pagure_config.get('ENABLE_TICKETS', True): + repos_to_create.append('tickets/') + # no setting yet to disable pull-requests + repos_to_create.append('requests/') + for repos in repos_to_create: if repos == 'repos': # Do not grant access to project enforcing the PR model if pr_only or (global_pr_only and not project.is_fork): diff --git a/tests/test_pagure_lib_gitolite_config.py b/tests/test_pagure_lib_gitolite_config.py index c007d01..67c4511 100644 --- a/tests/test_pagure_lib_gitolite_config.py +++ b/tests/test_pagure_lib_gitolite_config.py @@ -352,6 +352,69 @@ repo requests/test #print data self.assertEqual(data, exp) + @patch.dict('pagure.config.config', + {'ENABLE_DOCS': False, 'ENABLE_TICKETS': False}) + def test_write_gitolite_disabled_docs_tickets(self): + """ Test the write_gitolite_acls function when docs and tickets + are disabled """ + + # Re-generate the gitolite config for all the projects + project = pagure.lib._get_project(self.session, 'test') + project.user_id = 2 + self.session.add(project) + self.session.commit() + + project = pagure.lib._get_project(self.session, 'test') + msg = pagure.lib.add_user_to_project( + self.session, + project=project, + new_user='pingou', + user='foo', + access='commit' + ) + self.assertEqual(msg, 'User added') + self.session.commit() + + project = pagure.lib._get_project(self.session, 'test') + helper = pagure.lib.git_auth.get_git_auth_helper('gitolite3') + helper.write_gitolite_acls( + self.session, + self.outputconf, + project=project, + ) + self.assertTrue(os.path.exists(self.outputconf)) + + with open(self.outputconf) as stream: + data = stream.read().decode('utf-8') + + exp = """repo test + R = @all + RW+ = foo + RW+ = pingou + +repo requests/test + RW+ = foo + RW+ = pingou + +repo test2 + R = @all + RW+ = pingou + +repo requests/test2 + RW+ = pingou + +repo somenamespace/test3 + R = @all + RW+ = pingou + +repo requests/somenamespace/test3 + RW+ = pingou + +# end of body +""" + self.assertEqual(data, exp) + + class PagureLibGitoliteGroupConfigtests(tests.Modeltests): """ Tests for generating the gitolite configuration file for a group