diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-01-14 10:36:39 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2016-01-14 10:36:39 +0000 |
commit | 9f8c38bdac3d6f532b50ecab1d769652ffb5acc3 (patch) | |
tree | 4ed39c5ad4d840d3852836efafbd1dd6b59ee50b /spec/models | |
parent | 54734fa6132de6ba2430cba6b279723d1aec8c19 (diff) | |
parent | e918493f55eb27cdb779f0bc2d8cbbace8b69aa9 (diff) | |
download | gitlab-ce-9f8c38bdac3d6f532b50ecab1d769652ffb5acc3.tar.gz |
Merge branch 'fix/private-references' into 'master'
Show referenced MRs & Issues only when the current viewer can access them
This addresses both issues identified in #6066.
## The private MR by user `remy2` with a note referencing to a public issue
![Screen_Shot_2016-01-12_at_16.45.02](/uploads/c245ec2c1fdea1f9ba05183c24e142d9/Screen_Shot_2016-01-12_at_16.45.02.png)
---
## The public issue viewed by user `remy` **who doesn't have access to `remy2/private-project`** before the fix
![Screen_Shot_2016-01-12_at_18.14.50](/uploads/8db5580e803f5bddd6cb935233c579a0/Screen_Shot_2016-01-12_at_18.14.50.png)
---
## The public issue viewed by user `remy` **who doesn't have access to `remy2/private-project`** with the fix
![Screen_Shot_2016-01-13_at_12.02.32](/uploads/cb199f7b78191fba486a11412412e307/Screen_Shot_2016-01-13_at_12.02.32.png)
---
## The public issue viewed by user `remy2` with the fix (no change)
![Screen_Shot_2016-01-13_at_11.54.06](/uploads/ddece590d69f597a95559beddcd36660/Screen_Shot_2016-01-13_at_11.54.06.png)
See merge request !2405
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/note_spec.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb index 151a29e974b..9182b42661d 100644 --- a/spec/models/note_spec.rb +++ b/spec/models/note_spec.rb @@ -178,6 +178,30 @@ describe Note, models: true do end end + describe "cross_reference_not_visible_for?" do + let(:private_user) { create(:user) } + let(:private_project) { create(:project, namespace: private_user.namespace).tap { |p| p.team << [private_user, :master] } } + let(:private_issue) { create(:issue, project: private_project) } + + let(:ext_proj) { create(:project, :public) } + let(:ext_issue) { create(:issue, project: ext_proj) } + + let(:note) do + create :note, + noteable: ext_issue, project: ext_proj, + note: "mentioned in issue #{private_issue.to_reference(ext_proj)}", + system: true + end + + it "returns true" do + expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_truthy + end + + it "returns false" do + expect(note.cross_reference_not_visible_for?(private_user)).to be_falsy + end + end + describe "set_award!" do let(:issue) { create :issue } |