Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/helpers/projects_helper_spec.rb')
-rw-r--r--spec/helpers/projects_helper_spec.rb98
1 files changed, 66 insertions, 32 deletions
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index b920e2e5600..b61db537159 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -398,6 +398,45 @@ RSpec.describe ProjectsHelper do
helper.send(:get_project_nav_tabs, project, user)
end
+ context 'Security & Compliance tabs' do
+ before do
+ stub_feature_flags(secure_security_and_compliance_configuration_page_on_ce: feature_flag_enabled)
+ allow(helper).to receive(:can?).with(user, :read_security_configuration, project).and_return(can_read_security_configuration)
+ end
+
+ context 'when user cannot read security configuration' do
+ let(:can_read_security_configuration) { false }
+
+ context 'when feature flag is disabled' do
+ let(:feature_flag_enabled) { false }
+
+ it { is_expected.not_to include(:security_configuration) }
+ end
+
+ context 'when feature flag is enabled' do
+ let(:feature_flag_enabled) { true }
+
+ it { is_expected.not_to include(:security_configuration) }
+ end
+ end
+
+ context 'when user can read security configuration' do
+ let(:can_read_security_configuration) { true }
+
+ context 'when feature flag is disabled' do
+ let(:feature_flag_enabled) { false }
+
+ it { is_expected.not_to include(:security_configuration) }
+ end
+
+ context 'when feature flag is enabled' do
+ let(:feature_flag_enabled) { true }
+
+ it { is_expected.to include(:security_configuration) }
+ end
+ end
+ end
+
context 'when builds feature is enabled' do
before do
allow(project).to receive(:builds_enabled?).and_return(true)
@@ -657,31 +696,6 @@ RSpec.describe ProjectsHelper do
end
end
- describe 'link_to_filter_repo' do
- subject { helper.link_to_filter_repo }
-
- it 'generates a hardcoded link to git filter-repo' do
- result = helper.link_to_filter_repo
- doc = Nokogiri::HTML.fragment(result)
-
- expect(doc.children.size).to eq(1)
-
- link = doc.children.first
-
- aggregate_failures do
- expect(result).to be_html_safe
-
- expect(link.name).to eq('a')
- expect(link[:target]).to eq('_blank')
- expect(link[:rel]).to eq('noopener noreferrer')
- expect(link[:href]).to eq('https://github.com/newren/git-filter-repo')
- expect(link.inner_html).to eq('git filter-repo')
-
- expect(result).to be_html_safe
- end
- end
- end
-
describe '#explore_projects_tab?' do
subject { helper.explore_projects_tab? }
@@ -854,16 +868,36 @@ RSpec.describe ProjectsHelper do
end
describe '#can_import_members?' do
- let(:owner) { project.owner }
+ context 'when user is project owner' do
+ before do
+ allow(helper).to receive(:current_user) { project.owner }
+ end
- it 'returns false if user cannot admin_project_member' do
- allow(helper).to receive(:current_user) { user }
- expect(helper.can_import_members?).to eq false
+ it 'returns true for owner of project' do
+ expect(helper.can_import_members?).to eq true
+ end
end
- it 'returns true if user can admin_project_member' do
- allow(helper).to receive(:current_user) { owner }
- expect(helper.can_import_members?).to eq true
+ context 'when user is not a project owner' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:user_project_role, :can_import) do
+ :maintainer | true
+ :developer | false
+ :reporter | false
+ :guest | false
+ end
+
+ with_them do
+ before do
+ project.add_role(user, user_project_role)
+ allow(helper).to receive(:current_user) { user }
+ end
+
+ it 'resolves if the user can import members' do
+ expect(helper.can_import_members?).to eq can_import
+ end
+ end
end
end