From e022107e40e3428b33147f76f3acf2908c760fae Mon Sep 17 00:00:00 2001 From: Will Meek <wmeek@gitlab.com> Date: Mon, 10 Oct 2022 02:27:06 +0000 Subject: [PATCH] Add E2E test to check Security Config License Compliance status --- .../security_configuration/components/app.vue | 7 ++- .../page/project/secure/configuration_form.rb | 26 ++++++++++ ...enable_scanning_from_configuration_spec.rb | 47 +++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/security_configuration/components/app.vue b/app/assets/javascripts/security_configuration/components/app.vue index 4fb70a9225427..7828efc358aa1 100644 --- a/app/assets/javascripts/security_configuration/components/app.vue +++ b/app/assets/javascripts/security_configuration/components/app.vue @@ -167,7 +167,12 @@ export default { </template> </user-callout-dismisser> - <gl-tabs content-class="gl-pt-0" sync-active-tab-with-query-params lazy> + <gl-tabs + content-class="gl-pt-0" + data-qa-selector="security_configuration_container" + sync-active-tab-with-query-params + lazy + > <gl-tab data-testid="security-testing-tab" :title="$options.i18n.securityTesting" diff --git a/qa/qa/page/project/secure/configuration_form.rb b/qa/qa/page/project/secure/configuration_form.rb index fa1fad4427310..20999f7c92af5 100644 --- a/qa/qa/page/project/secure/configuration_form.rb +++ b/qa/qa/page/project/secure/configuration_form.rb @@ -9,6 +9,7 @@ class ConfigurationForm < QA::Page::Base include QA::Page::Settings::Common view 'app/assets/javascripts/security_configuration/components/app.vue' do + element :security_configuration_container element :security_configuration_history_link end @@ -17,6 +18,7 @@ class ConfigurationForm < QA::Page::Base element :sast_status, "`${feature.type}_status`" # rubocop:disable QA/ElementWithPattern element :sast_enable_button, "`${feature.type}_enable_button`" # rubocop:disable QA/ElementWithPattern element :dependency_scanning_mr_button, "`${feature.type}_mr_button`" # rubocop:disable QA/ElementWithPattern + element :license_scanning_status, "`${feature.type}_status`" # rubocop:disable QA/ElementWithPattern end view 'app/assets/javascripts/security_configuration/components/auto_dev_ops_alert.vue' do @@ -67,6 +69,18 @@ def has_no_dependency_scanning_status?(status_text) end end + def has_license_compliance_status?(status_text) + within_element(:license_scanning_status) do + has_text?(status_text) + end + end + + def has_no_license_compliance_status?(status_text) + within_element(:license_scanning_status) do + has_no_text?(status_text) + end + end + def has_auto_devops_container? has_element?(:autodevops_container) end @@ -80,6 +94,18 @@ def has_auto_devops_container_description? has_text?('Quickly enable all continuous testing and compliance tools by enabling Auto DevOps') end end + + def go_to_compliance_tab + go_to_tab('Compliance') + end + + private + + def go_to_tab(name) + within_element(:security_configuration_container) do + find('.nav-item', text: name).click + end + end end end end diff --git a/qa/qa/specs/features/ee/browser_ui/13_secure/enable_scanning_from_configuration_spec.rb b/qa/qa/specs/features/ee/browser_ui/13_secure/enable_scanning_from_configuration_spec.rb index 9df374795e15f..467ee57e87d22 100644 --- a/qa/qa/specs/features/ee/browser_ui/13_secure/enable_scanning_from_configuration_spec.rb +++ b/qa/qa/specs/features/ee/browser_ui/13_secure/enable_scanning_from_configuration_spec.rb @@ -173,6 +173,53 @@ def sast_config_expects(current_page, sast_string_fields, sast_int_fields) end end end + + describe 'license compliance shows status in configuration' do + it( + 'shows correct status in configuration', + testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/375460' + ) do + Page::Project::Menu.perform(&:click_on_security_configuration_link) + Page::Project::Secure::ConfigurationForm.perform do |config_form| + config_form.go_to_compliance_tab + + expect(config_form).to have_license_compliance_status('Not enabled') + expect(config_form).to have_no_license_compliance_status('Enabled') + end + + # Push fixture to generate Secure reports + Resource::Repository::Commit.fabricate_via_api! do |commit| + commit.project = project + + commit.add_files([{ file_path: '.gitlab-ci.yml', + content: File.read( + Pathname + .new(__dir__) + .join('../../../../../ee/fixtures/secure_license_files/.gitlab-ci.yml')) }, + { file_path: 'gl-license-scanning-report.json', + content: File.read( + Pathname + .new(__dir__) + .join('../../../../../ee/fixtures/secure_premade_reports/gl-license-scanning-report.json')) }]) + commit.commit_message = 'Add license scanning to project' + end + Flow::Login.sign_in_unless_signed_in + project.visit! + Flow::Pipeline.visit_latest_pipeline + + Page::Project::Pipeline::Show.perform do |pipeline| + expect(pipeline).to have_job('license_scanning') + end + + Page::Project::Menu.perform(&:click_on_security_configuration_link) + Page::Project::Secure::ConfigurationForm.perform do |config_form| + config_form.go_to_compliance_tab + + expect(config_form).to have_no_license_compliance_status('Not enabled') + expect(config_form).to have_license_compliance_status('Enabled') + end + end + end end end end -- GitLab