diff --git a/tests/test_pagure_private_repo.py b/tests/test_pagure_private_repo.py index 9b44725..ee71781 100644 --- a/tests/test_pagure_private_repo.py +++ b/tests/test_pagure_private_repo.py @@ -788,6 +788,7 @@ class PagurePrivateRepotest(tests.Modeltests): """ Test api endpoints in api/fork""" send_email.return_value = True + # Add private repo item = pagure.lib.model.Project( user_id=1, # pingou @@ -799,23 +800,10 @@ class PagurePrivateRepotest(tests.Modeltests): self.session.add(item) self.session.commit() - # Create a token for pingou for this project - item = pagure.lib.model.Token( - id='foobar_token', - user_id=1, - project_id=1, - expiration=datetime.datetime.utcnow() + datetime.timedelta( - days=30) - ) - self.session.add(item) - self.session.commit() - item = pagure.lib.model.TokenAcl( - token_id='foobar_token', - acl_id=1, - ) - self.session.add(item) - self.session.commit() + tests.create_tokens(self.session) + tests.create_tokens_acl(self.session) + headers = {'Authorization': 'token aaabbbcccddd'} # Create a pull-request repo = pagure.lib.get_project(self.session, 'test4') forked_repo = pagure.lib.get_project(self.session, 'test4') @@ -832,9 +820,15 @@ class PagurePrivateRepotest(tests.Modeltests): self.session.commit() self.assertEqual(req.id, 1) self.assertEqual(req.title, 'test pull-request') + + # Check list of PR output = self.app.get('/api/0/test4/pull-requests') self.assertEqual(output.status_code, 404) + # Check single PR + output = self.app.get('/api/0/test/pull-request/1') + self.assertEqual(output.status_code, 404) + user = tests.FakeUser(username='pingou') with tests.user_set(pagure.APP, user): # List pull-requests @@ -919,7 +913,7 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertDictEqual(data, data2) - # Valid issue + # For single PR output = self.app.get('/api/0/test4/pull-request/1') self.assertEqual(output.status_code, 200) data = json.loads(output.data) @@ -992,6 +986,92 @@ class PagurePrivateRepotest(tests.Modeltests): data2['updated_on'] = '1431414800' self.assertDictEqual(data, data2) + + @patch('pagure.lib.notify.send_email') + def test_api_pr_private_repo_add_comment(self, mockemail): + """ Test the api_pull_request_add_comment method of the flask api. """ + mockemail.return_value = True + pagure.APP.config['REQUESTS_FOLDER'] = None + + # Add private repo + item = pagure.lib.model.Project( + user_id=1, # pingou + name='test4', + description='test project description', + hook_token='aaabbbeeeceee', + private=True, + ) + self.session.add(item) + self.session.commit() + tests.create_tokens(self.session) + tests.create_tokens_acl(self.session) + + headers = {'Authorization': 'token aaabbbcccddd'} + # Create a pull-request + repo = pagure.lib.get_project(self.session, 'test4') + forked_repo = pagure.lib.get_project(self.session, 'test4') + req = pagure.lib.new_pull_request( + session=self.session, + repo_from=forked_repo, + branch_from='master', + repo_to=repo, + branch_to='master', + title='test pull-request', + user='pingou', + requestfolder=None, + ) + self.session.commit() + self.assertEqual(req.id, 1) + self.assertEqual(req.title, 'test pull-request') + + # Check comments before + request = pagure.lib.search_pull_requests( + self.session, project_id=1, requestid=1) + self.assertEqual(len(request.comments), 0) + + data = { + 'title': 'test issue', + } + + # Incomplete request + output = self.app.post( + '/api/0/test4/pull-request/1/comment', data=data, headers=headers) + self.assertEqual(output.status_code, 400) + data = json.loads(output.data) + self.assertDictEqual( + data, + { + "error": "Invalid or incomplete input submited", + "error_code": "EINVALIDREQ", + } + ) + + # No change + request = pagure.lib.search_pull_requests( + self.session, project_id=1, requestid=1) + self.assertEqual(len(request.comments), 0) + + data = { + 'comment': 'This is a very interesting question', + } + + # Valid request + output = self.app.post( + '/api/0/test4/pull-request/1/comment', data=data, headers=headers) + self.assertEqual(output.status_code, 200) + data = json.loads(output.data) + self.assertDictEqual( + data, + {'message': 'Comment added'} + ) + + # One comment added + request = pagure.lib.search_pull_requests( + self.session, project_id=1, requestid=1) + self.assertEqual(len(request.comments), 1) + + + if __name__ == '__main__': SUITE = unittest.TestLoader().loadTestsFromTestCase(PagurePrivateRepotest) unittest.TextTestRunner(verbosity=2).run(SUITE)