audit-logs: implemented pull request and comment events.

This commit is contained in:
Marcin Kuzminski 2017-06-17 15:22:50 +02:00
parent 8a3441e96e
commit 926a79e98e
19 changed files with 196 additions and 170 deletions

View file

@ -199,6 +199,9 @@ class TestAdminPermissionsController(TestController):
url('edit_user_ips', user_id=default_user_id),
params={'_method': 'delete', 'del_ip_id': del_ip_id,
'csrf_token': self.csrf_token})
assert_session_flash(response, 'Removed ip address from user whitelist')
clear_all_caches()
response = self.app.get(url('admin_permissions_ips'))
response.mustcontain('All IP addresses are allowed')

View file

@ -27,7 +27,7 @@ from rhodecode.lib.vcs.nodes import FileNode
from rhodecode.lib import helpers as h
from rhodecode.model.changeset_status import ChangesetStatusModel
from rhodecode.model.db import (
PullRequest, ChangesetStatus, UserLog, Notification)
PullRequest, ChangesetStatus, UserLog, Notification, ChangesetComment)
from rhodecode.model.meta import Session
from rhodecode.model.pull_request import PullRequestModel
from rhodecode.model.user import UserModel
@ -256,29 +256,32 @@ class TestPullrequestsController(object):
'csrf_token': csrf_token},
extra_environ=xhr_header,)
action = 'user_closed_pull_request:%d' % pull_request_id
journal = UserLog.query()\
.filter(UserLog.user_id == author)\
.filter(UserLog.repository_id == repo)\
.filter(UserLog.action == action)\
.filter(UserLog.repository_id == repo) \
.order_by('user_log_id') \
.all()
assert len(journal) == 1
assert journal[-1].action == 'repo.pull_request.close'
pull_request = PullRequest.get(pull_request_id)
assert pull_request.is_closed()
# check only the latest status, not the review status
status = ChangesetStatusModel().get_status(
pull_request.source_repo, pull_request=pull_request)
assert status == ChangesetStatus.STATUS_APPROVED
assert pull_request.comments[-1].text == 'Closing a PR'
comments = ChangesetComment().query() \
.filter(ChangesetComment.pull_request == pull_request) \
.order_by(ChangesetComment.comment_id.asc())\
.all()
assert comments[-1].text == 'Closing a PR'
def test_comment_force_close_pull_request_rejected(
self, pr_util, csrf_token, xhr_header):
pull_request = pr_util.create_pull_request()
pull_request_id = pull_request.pull_request_id
PullRequestModel().update_reviewers(
pull_request_id, [(1, ['reason'], False), (2, ['reason2'], False)])
pull_request_id, [(1, ['reason'], False), (2, ['reason2'], False)],
pull_request.author)
author = pull_request.user_id
repo = pull_request.target_repo.repo_id
@ -294,12 +297,11 @@ class TestPullrequestsController(object):
pull_request = PullRequest.get(pull_request_id)
action = 'user_closed_pull_request:%d' % pull_request_id
journal = UserLog.query().filter(
UserLog.user_id == author,
UserLog.repository_id == repo,
UserLog.action == action).all()
assert len(journal) == 1
journal = UserLog.query()\
.filter(UserLog.user_id == author, UserLog.repository_id == repo) \
.order_by('user_log_id') \
.all()
assert journal[-1].action == 'repo.pull_request.close'
# check only the latest status, not the review status
status = ChangesetStatusModel().get_status(
@ -449,7 +451,8 @@ class TestPullrequestsController(object):
# Change reviewers and check that a notification was made
PullRequestModel().update_reviewers(
pull_request.pull_request_id, [(1, [], False)])
pull_request.pull_request_id, [(1, [], False)],
pull_request.author)
assert len(notifications.all()) == 2
def test_create_pull_request_stores_ancestor_commit_id(self, backend,
@ -541,25 +544,20 @@ class TestPullrequestsController(object):
pull_request, ChangesetStatus.STATUS_APPROVED)
# Check the relevant log entries were added
user_logs = UserLog.query() \
.filter(UserLog.version == UserLog.VERSION_1) \
.order_by('-user_log_id').limit(3)
user_logs = UserLog.query().order_by('-user_log_id').limit(3)
actions = [log.action for log in user_logs]
pr_commit_ids = PullRequestModel()._get_commit_ids(pull_request)
expected_actions = [
u'user_closed_pull_request:%d' % pull_request_id,
u'user_merged_pull_request:%d' % pull_request_id,
# The action below reflect that the post push actions were executed
u'user_commented_pull_request:%d' % pull_request_id,
u'repo.pull_request.close',
u'repo.pull_request.merge',
u'repo.pull_request.comment.create'
]
assert actions == expected_actions
user_logs = UserLog.query() \
.filter(UserLog.version == UserLog.VERSION_2) \
.order_by('-user_log_id').limit(1)
actions = [log.action for log in user_logs]
assert actions == ['user.push']
assert user_logs[0].action_data['commit_ids'] == pr_commit_ids
user_logs = UserLog.query().order_by('-user_log_id').limit(4)
actions = [log for log in user_logs]
assert actions[-1].action == 'user.push'
assert actions[-1].action_data['commit_ids'] == pr_commit_ids
# Check post_push rcextension was really executed
push_calls = rhodecode.EXTENSIONS.calls['post_push']