diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py
index a4b5f80..19b2485 100644
--- a/tests/test_pagure_flask_ui_issues.py
+++ b/tests/test_pagure_flask_ui_issues.py
@@ -1117,6 +1117,269 @@ class PagureFlaskIssuestests(tests.Modeltests):
@patch('pagure.lib.git.update_git')
@patch('pagure.lib.notify.send_email')
+ def test_view_issue_commit_access(self, p_send_email, p_ugt):
+ """ Test the view_issue endpoint. when a user has commit access on repo """
+ p_send_email.return_value = True
+ p_ugt.return_value = True
+
+ output = self.app.get('/foo/issue/1')
+ self.assertEqual(output.status_code, 404)
+
+ tests.create_projects(self.session)
+ tests.create_projects_git(
+ os.path.join(self.path), bare=True)
+
+ output = self.app.get('/test/issue/1')
+ self.assertEqual(output.status_code, 404)
+
+ # Create issues to play with
+ repo = pagure.lib.get_project(self.session, 'test')
+
+ # Add user 'foo' with ticket access on repo
+ msg = pagure.lib.add_user_to_project(
+ self.session,
+ repo,
+ new_user='foo',
+ user='pingou',
+ access='commit',
+ )
+ self.assertEqual(msg, 'User added')
+ self.session.commit()
+
+ repo = pagure.lib.get_project(self.session, 'test')
+ msg = pagure.lib.new_issue(
+ session=self.session,
+ repo=repo,
+ title='Test issue',
+ content='We should work on this',
+ user='pingou',
+ ticketfolder=None
+ )
+
+ self.session.commit()
+ self.assertEqual(msg.title, 'Test issue')
+
+ # Add milestone
+ repo.milestones = {'77': None}
+ self.session.add(repo)
+ issue = pagure.lib.search_issues(
+ self.session,
+ repo=repo,
+ issueid=1
+ )
+
+ pagure.lib.edit_issue(
+ self.session,
+ issue,
+ pagure.APP.config.get('TICKETS_FOLDER'),
+ user='pingou',
+ milestone='77'
+ )
+ self.session.add(repo)
+ self.session.add(issue)
+
+ msg = pagure.lib.set_custom_key_fields(
+ self.session,
+ project=repo,
+ fields=['abc', 'xyz'],
+ types=['boolean', 'boolean'],
+ data=[None, None],
+ )
+ self.assertEqual(msg, 'List of custom fields updated')
+ self.session.add(repo)
+
+ msg = pagure.lib.set_custom_key_value(
+ self.session,
+ issue=issue,
+ key=pagure.lib.get_custom_key(self.session, repo, 'abc'),
+ value=1
+ )
+ self.session.add(issue)
+ self.session.commit()
+
+
+ output = self.app.get('/test/issue/1')
+ self.assertEqual(output.status_code, 200)
+ # Not authentified = No edit
+ self.assertNotIn(
+ '',
+ output.data)
+ self.assertTrue(
+ ''
+ 'Login\n to comment on this ticket.'
+ in output.data)
+
+ user = tests.FakeUser()
+ with tests.user_set(pagure.APP, user):
+ output = self.app.get('/test/issue/1')
+ self.assertEqual(output.status_code, 200)
+ # Not author nor admin = No edit
+ self.assertNotIn(
+ '',
+ output.data)
+ self.assertNotIn(
+ '