diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index 0a8c3f8..09b19b8 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -459,6 +459,55 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ) @patch('pagure.lib.git.generate_gitolite_acls') + def test_api_new_project_user_ns(self, p_gga): + """ Test the api_new_project method of the flask api. """ + pagure.APP.config['USER_NAMESPACE'] = True + p_gga.return_value = True + + tests.create_projects(self.session) + tests.create_projects_git(os.path.join(self.path, 'tickets')) + tests.create_tokens(self.session) + tests.create_tokens_acl(self.session) + + headers = {'Authorization': 'token aaabbbcccddd'} + + # Create a project with the user namespace feature on + data = { + 'name': 'testproject', + 'description': 'Just another small test project', + } + + # Valid request + output = self.app.post( + '/api/0/new/', data=data, headers=headers) + self.assertEqual(output.status_code, 200) + data = json.loads(output.data) + self.assertDictEqual( + data, + {'message': 'Project "pingou/testproject" created'} + ) + + # Create a project with a namespace and the user namespace feature on + pagure.APP.config['ALLOWED_PREFIX'] = ['testns'] + data = { + 'name': 'testproject2', + 'namespace': 'testns', + 'description': 'Just another small test project', + } + + # Valid request + output = self.app.post( + '/api/0/new/', data=data, headers=headers) + self.assertEqual(output.status_code, 200) + data = json.loads(output.data) + self.assertDictEqual( + data, + {'message': 'Project "testns/testproject2" created'} + ) + + pagure.APP.config['USER_NAMESPACE'] = False + + @patch('pagure.lib.git.generate_gitolite_acls') def test_api_fork_project(self, p_gga): """ Test the api_fork_project method of the flask api. """ p_gga.return_value = True diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 6432e7f..b7ad650 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -912,6 +912,79 @@ class PagureLibtests(tests.Modeltests): 'Project "pingou/ssssssssssssssssssssssssssssssssssssssss" ' 'created') + + def test_new_project_user_ns(self): + """ Test the new_project of pagure.lib with user_ns on. """ + gitfolder = os.path.join(self.path, 'repos') + docfolder = os.path.join(self.path, 'docs') + ticketfolder = os.path.join(self.path, 'tickets') + requestfolder = os.path.join(self.path, 'requests') + + # Create a new project with user_ns as True + pagure.APP.config['GIT_FOLDER'] = gitfolder + msg = pagure.lib.new_project( + session=self.session, + user='pingou', + name='testproject', + blacklist=[], + allowed_prefix=[], + gitfolder=gitfolder, + docfolder=docfolder, + ticketfolder=ticketfolder, + requestfolder=requestfolder, + description='description for testproject', + parent_id=None, + user_ns=True, + ) + self.session.commit() + self.assertEqual(msg, 'Project "pingou/testproject" created') + + repo = pagure.lib.get_project( + self.session, 'testproject', namespace='pingou') + self.assertEqual(repo.path, 'pingou/testproject.git') + + gitrepo = os.path.join(gitfolder, repo.path) + docrepo = os.path.join(docfolder, repo.path) + ticketrepo = os.path.join(ticketfolder, repo.path) + requestrepo = os.path.join(requestfolder, repo.path) + + for path in [gitrepo, docrepo, ticketrepo, requestrepo]: + self.assertTrue(os.path.exists(path)) + shutil.rmtree(path) + + # Create a new project with a namespace and user_ns as True + pagure.APP.config['GIT_FOLDER'] = gitfolder + msg = pagure.lib.new_project( + session=self.session, + user='pingou', + name='testproject2', + namespace='testns', + blacklist=[], + allowed_prefix=['testns'], + gitfolder=gitfolder, + docfolder=docfolder, + ticketfolder=ticketfolder, + requestfolder=requestfolder, + description='description for testproject2', + parent_id=None, + user_ns=True, + ) + self.session.commit() + self.assertEqual(msg, 'Project "testns/testproject2" created') + + repo = pagure.lib.get_project( + self.session, 'testproject2', namespace='testns') + self.assertEqual(repo.path, 'testns/testproject2.git') + + gitrepo = os.path.join(gitfolder, repo.path) + docrepo = os.path.join(docfolder, repo.path) + ticketrepo = os.path.join(ticketfolder, repo.path) + requestrepo = os.path.join(requestfolder, repo.path) + + for path in [gitrepo, docrepo, ticketrepo, requestrepo]: + self.assertTrue(os.path.exists(path)) + shutil.rmtree(path) + def test_update_project_settings(self): """ Test the update_project_settings of pagure.lib. """