Skip to content
Snippets Groups Projects
Commit 67b0a06e authored by Thong Kuah's avatar Thong Kuah
Browse files

Merge branch 'id-apply_report_approver_rules_to-cross-joins' into 'master'

Fix cross-join test failure for ApprovalProjectRule method

See merge request !136619



Merged-by: Thong Kuah's avatarThong Kuah <tkuah@gitlab.com>
Approved-by: Thong Kuah's avatarThong Kuah <tkuah@gitlab.com>
Co-authored-by: Igor Drozdov's avatarIgor Drozdov <idrozdov@gitlab.com>
parents 8ae5114a 723c0bd5
No related branches found
No related tags found
1 merge request!136619Fix cross-join test failure for ApprovalProjectRule method
Pipeline #1069720022 passed
Pipeline: E2E Omnibus GitLab EE

#1069758999

    Pipeline: GitLab

    #1069721502

      Pipeline: E2E GDK

      #1069721119

        +22
        ......@@ -84,24 +84,20 @@ def section
        end
        def apply_report_approver_rules_to(merge_request)
        Gitlab::Database::QueryAnalyzers::PreventCrossDatabaseModification.temporary_ignore_tables_in_transaction(
        %w[approval_merge_request_rules users namespaces approval_merge_request_rules_users approval_merge_request_rules_groups],
        url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/417459') do
        ApplicationRecord.transaction do
        rule = merge_request_report_approver_rule(merge_request)
        rule.update!(report_approver_attributes)
        next rule unless Feature.enabled?(:scan_result_any_merge_request, merge_request.project)
        next rule unless rule.scan_result_policy_id
        Security::ScanResultPolicyViolation.upsert_all(
        [merge_request_id: merge_request.id,
        scan_result_policy_id: rule.scan_result_policy_id,
        project_id: merge_request.project_id],
        unique_by: %w[scan_result_policy_id merge_request_id])
        rule
        end
        ApplicationRecord.transaction do
        rule = merge_request_report_approver_rule(merge_request)
        rule.update!(report_approver_attributes)
        next rule unless Feature.enabled?(:scan_result_any_merge_request, merge_request.project)
        next rule unless rule.scan_result_policy_id
        Security::ScanResultPolicyViolation.upsert_all(
        [merge_request_id: merge_request.id,
        scan_result_policy_id: rule.scan_result_policy_id,
        project_id: merge_request.project_id],
        unique_by: %w[scan_result_policy_id merge_request_id])
        rule
        end
        end
        ......
        ......@@ -402,11 +402,14 @@
        describe "#apply_report_approver_rules_to" do
        using RSpec::Parameterized::TableSyntax
        let(:project) { merge_request.target_project }
        let(:merge_request) { create(:merge_request) }
        let(:user) { create(:user) }
        let(:group) { create(:group) }
        let(:security_orchestration_policy_configuration) { create(:security_orchestration_policy_configuration, project: project) }
        let_it_be(:merge_request) { create(:merge_request) }
        let_it_be(:project) { merge_request.target_project }
        let_it_be(:user) { create(:user) }
        let_it_be(:group) { create(:group) }
        let_it_be(:security_orchestration_policy_configuration) do
        create(:security_orchestration_policy_configuration, project: project)
        end
        describe 'attributes' do
        where(:default_name, :report_type, :rules_count) do
        ......@@ -426,11 +429,12 @@
        with_them do
        subject(:rules) { create_list(:approval_project_rule, rules_count, report_type, :requires_approval, project: project, orchestration_policy_idx: 1, scanners: [:sast], severity_levels: [:high], vulnerability_states: [:confirmed], vulnerabilities_allowed: 2, security_orchestration_policy_configuration: security_orchestration_policy_configuration) }
        let!(:result) { rules.map { |rule| rule.apply_report_approver_rules_to(merge_request) } }
        it 'creates merge_request approval rules with correct attributes', :aggregate_failures do
        result = rules.map { |rule| rule.apply_report_approver_rules_to(merge_request) }
        expect(merge_request.reload.approval_rules).to match_array(result)
        expect(rules.count).to eq rules_count
        result.each do |result_rule|
        expect(result_rule.users).to match_array([user])
        expect(result_rule.groups).to match_array([group])
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Finish editing this message first!
        Please register or to comment