diff options
author | Nick Thomas <nick@gitlab.com> | 2018-09-21 15:13:15 +0100 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2018-09-21 15:13:15 +0100 |
commit | e5f83afc60439d5b22a8604d6429218ff9ddf4c2 (patch) | |
tree | 87c3a7a8a4177fff4b0c6e949c4332305c3f3530 | |
parent | 45ced6c5de760ef64b1f5e201ce518b1912c7704 (diff) | |
download | gitlab-ce-e5f83afc60439d5b22a8604d6429218ff9ddf4c2.tar.gz |
Fix Event#visible_to_user? for milestones
-rw-r--r-- | app/models/event.rb | 2 | ||||
-rw-r--r-- | spec/models/event_spec.rb | 37 |
2 files changed, 38 insertions, 1 deletions
diff --git a/app/models/event.rb b/app/models/event.rb index 596155a9525..2d9097a7769 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -160,7 +160,7 @@ class Event < ActiveRecord::Base elsif merge_request? || merge_request_note? Ability.allowed?(user, :read_merge_request, note? ? note_target : target) elsif milestone? - Ability.allowed?(user, :read_project, project) + Ability.allowed?(user, :read_milestone, project) else false # No other event types are visible end diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index c1eac4fa489..15bcaa19d5b 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -151,6 +151,7 @@ describe Event do let(:note_on_commit) { create(:note_on_commit, project: project) } let(:note_on_issue) { create(:note_on_issue, noteable: issue, project: project) } let(:note_on_confidential_issue) { create(:note_on_issue, noteable: confidential_issue, project: project) } + let(:milestone_on_project) { create(:milestone, project: project) } let(:event) { described_class.new(project: project, target: target, author_id: author.id) } before do @@ -268,6 +269,42 @@ describe Event do end end end + + context 'milestone event' do + let(:target) { milestone_on_project } + + it do + expect(event.visible_to_user?(nil)).to be_truthy + expect(event.visible_to_user?(non_member)).to be_truthy + expect(event.visible_to_user?(member)).to be_truthy + expect(event.visible_to_user?(guest)).to be_truthy + expect(event.visible_to_user?(admin)).to be_truthy + end + + context 'on public project with private issue tracker and merge requests' do + let(:project) { create(:project, :public, :issues_private, :merge_requests_private) } + + it do + expect(event.visible_to_user?(nil)).to be_falsy + expect(event.visible_to_user?(non_member)).to be_falsy + expect(event.visible_to_user?(member)).to be_truthy + expect(event.visible_to_user?(guest)).to be_truthy + expect(event.visible_to_user?(admin)).to be_truthy + end + end + + context 'on private project' do + let(:project) { create(:project, :private) } + + it do + expect(event.visible_to_user?(nil)).to be_falsy + expect(event.visible_to_user?(non_member)).to be_falsy + expect(event.visible_to_user?(member)).to be_truthy + expect(event.visible_to_user?(guest)).to be_truthy + expect(event.visible_to_user?(admin)).to be_truthy + end + end + end end describe '.limit_recent' do |