summaryrefslogtreecommitdiff
path: root/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb')
-rw-r--r--spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb b/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb
new file mode 100644
index 00000000000..92b8c526e88
--- /dev/null
+++ b/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb
@@ -0,0 +1,50 @@
+require 'spec_helper'
+
+describe Banzai::Filter::CrossProjectIssuableInformationFilter do
+ include ActionView::Helpers::UrlHelper
+ include FilterSpecHelper
+
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :public) }
+ let(:context) { { project: project, current_user: user } }
+ let(:other_project) { create(:project, :public) }
+
+ def create_link(issuable)
+ type = issuable.class.name.underscore.downcase
+ link_to(issuable.to_reference, '',
+ class: 'gfm has-tooltip',
+ title: issuable.title,
+ data: {
+ reference_type: type,
+ "#{type}": issuable.id
+ })
+ end
+
+ context 'when the user cannot read cross project' do
+ before do
+ allow(Ability).to receive(:allowed?) { false }
+ end
+
+ it 'skips links to issues within the same project' do
+ issue = create(:issue, project: project)
+ link = create_link(issue)
+ doc = filter(link, context)
+
+ result = doc.css('a').last
+
+ expect(result['class']).to include('has-tooltip')
+ expect(result['title']).to eq(issue.title)
+ end
+
+ it 'removes info from a cross project reference' do
+ issue = create(:issue, project: other_project)
+ link = create_link(issue)
+ doc = filter(link, context)
+
+ result = doc.css('a').last
+
+ expect(result['class']).not_to include('has-tooltip')
+ expect(result['title']).to be_empty
+ end
+ end
+end