From dbea8d815c13ef3dfee52ef42a17472119ac6cd1 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 13:30:06 +0200 Subject: [PATCH 01/13] updated tests --- .github/tests/src/script.rb | 15 +++++++++++++-- .github/tests/test/script_test.rb | 32 ++++++++++++++++++++----------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/.github/tests/src/script.rb b/.github/tests/src/script.rb index 7c15fd2..32d1b67 100644 --- a/.github/tests/src/script.rb +++ b/.github/tests/src/script.rb @@ -61,6 +61,19 @@ def rules_required_pull_request_reviews(branch_name) JSON.parse(response.body)["required_pull_request_reviews"] end + def get_branch_ruleset(branch_name) + branch_ruleset = nil + response = get("rulesets") + JSON.parse(response.body).each do |ruleset| + id = ruleset['id'] + details = get("rulesets/#{id}") + if JSON.parse(details.body)['conditions']['ref_name']['include'].any? {|elem| elem.include?(branch_name)} + branch_ruleset = JSON.parse(details.body)['rules'] + end + end + branch_ruleset + end + def deploy_keys response = get("keys") return nil if response.code != '200' @@ -68,5 +81,3 @@ def deploy_keys end end - - diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index d2858e4..40dea30 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -29,7 +29,7 @@ def test_deploy_key_present def test_main_present actual = @obj.branch_exist?('main') - assert(actual, 'Branch nain is not present') + assert(actual, 'Branch main is not present') end def test_main_protected @@ -66,31 +66,41 @@ def test_codeowners_not_present_develop end def test_deny_merge_main - actual = @obj.rules_required_pull_request_reviews('main') - assert_not_nil(actual, 'We should not allow merge to main branch without PR') + classic_rules = @obj.rules_required_pull_request_reviews('main') + rulesets = @obj.get_branch_ruleset('main').find { |rule| rule['type'] == 'pull_request' } + assert_not_nil(classic_rules || rulesets, 'We should not allow merge to main branch without PR') end def test_deny_merge_develop - actual = @obj.rules_required_pull_request_reviews('develop') - assert_not_nil(actual, 'We should not allow merge to develop branch without PR ') + classic_rules = @obj.rules_required_pull_request_reviews('develop') + rulesets = @obj.get_branch_ruleset('develop').find { |rule| rule['type'] == 'pull_request' } + assert_not_nil(classic_rules || rulesets, 'We should not allow merge to develop branch without PR ') end def test_2_approvals_develop - actual = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] + classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] + pull_request_rulesets_rules = @obj.get_branch_ruleset('develop').find { |rule| rule['type'] == 'pull_request' } + rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] expected = 2 - assert_equal(expected, actual, 'We should have 2 approvals before merge to develop branch') + required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected + assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') end def test_without_approval_main - actual = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] + classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] + pull_request_rulesets_rules = @obj.get_branch_ruleset('main').find { |rule| rule['type'] == 'pull_request' } + rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] expected = 0 - assert_equal(expected, actual, 'We shouldn\'t have any approvals before merge to main branch') + required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected + assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') end def test_approve_from_user user_name = 'online-marathon' - actual = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] - assert_not_nil(actual, "We should not allow merge to main branch without approve from #{user_name}") + classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] + pull_request_rulesets_rules = @obj.get_branch_ruleset('develop').find { |rule| rule['type'] == 'pull_request' } + rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] + assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end def test_PR_template_present From 44b8e68a80b53c28bd4a52a692a56f1040173988 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 13:46:37 +0200 Subject: [PATCH 02/13] Update script_test.rb --- .github/tests/test/script_test.rb | 33 ++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 40dea30..47e1a0d 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -67,20 +67,29 @@ def test_codeowners_not_present_develop def test_deny_merge_main classic_rules = @obj.rules_required_pull_request_reviews('main') - rulesets = @obj.get_branch_ruleset('main').find { |rule| rule['type'] == 'pull_request' } - assert_not_nil(classic_rules || rulesets, 'We should not allow merge to main branch without PR') + rulesets_rules = @obj.get_branch_ruleset('main') + if rulesets_rules !== nil + rulesets_rules = rulesets.find { |rule| rule['type'] == 'pull_request' } + end + assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to main branch without PR') end def test_deny_merge_develop classic_rules = @obj.rules_required_pull_request_reviews('develop') - rulesets = @obj.get_branch_ruleset('develop').find { |rule| rule['type'] == 'pull_request' } + rulesets_rules = @obj.get_branch_ruleset('develop') + if rulesets_rules !== nil + rulesets_rules = rulesets_rules.find { |rule| rule['type'] == 'pull_request' } + end assert_not_nil(classic_rules || rulesets, 'We should not allow merge to develop branch without PR ') end def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] - pull_request_rulesets_rules = @obj.get_branch_ruleset('develop').find { |rule| rule['type'] == 'pull_request' } - rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] + pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') + if pull_request_rulesets_rules != nil + pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } + rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] + end expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') @@ -88,8 +97,11 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] - pull_request_rulesets_rules = @obj.get_branch_ruleset('main').find { |rule| rule['type'] == 'pull_request' } - rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] + pull_request_rulesets_rules = @obj.get_branch_ruleset('main') + if pull_request_rulesets_rules != nil + pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } + rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] + end expected = 0 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') @@ -98,8 +110,11 @@ def test_without_approval_main def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] - pull_request_rulesets_rules = @obj.get_branch_ruleset('develop').find { |rule| rule['type'] == 'pull_request' } - rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] + pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') + if pull_request_rulsets_rules != nil + pull_request_rulsets_rules = pull_request_rulsets_rules.find { |rule| rule['type'] == 'pull_request' } + rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] + end assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end From 843b549bd789a9d2199ee826cfbdcadcb718e630 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 13:51:26 +0200 Subject: [PATCH 03/13] Update script_test.rb --- .github/tests/test/script_test.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 47e1a0d..771679f 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -68,7 +68,7 @@ def test_codeowners_not_present_develop def test_deny_merge_main classic_rules = @obj.rules_required_pull_request_reviews('main') rulesets_rules = @obj.get_branch_ruleset('main') - if rulesets_rules !== nil + if rulesets_rules.class == Array rulesets_rules = rulesets.find { |rule| rule['type'] == 'pull_request' } end assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to main branch without PR') @@ -77,7 +77,7 @@ def test_deny_merge_main def test_deny_merge_develop classic_rules = @obj.rules_required_pull_request_reviews('develop') rulesets_rules = @obj.get_branch_ruleset('develop') - if rulesets_rules !== nil + if rulesets_rules.class == Array rulesets_rules = rulesets_rules.find { |rule| rule['type'] == 'pull_request' } end assert_not_nil(classic_rules || rulesets, 'We should not allow merge to develop branch without PR ') @@ -86,7 +86,7 @@ def test_deny_merge_develop def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - if pull_request_rulesets_rules != nil + if rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] end @@ -98,7 +98,7 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('main') - if pull_request_rulesets_rules != nil + if rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] end @@ -111,7 +111,7 @@ def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - if pull_request_rulsets_rules != nil + if rulesets_rules.class == Array pull_request_rulsets_rules = pull_request_rulsets_rules.find { |rule| rule['type'] == 'pull_request' } rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] end From d1eba5f5732648f0398d5e8dd885ca52352795a0 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 13:54:36 +0200 Subject: [PATCH 04/13] Update script_test.rb --- .github/tests/test/script_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 771679f..a0ab7fb 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -86,7 +86,7 @@ def test_deny_merge_develop def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - if rulesets_rules.class == Array + if pull_request_rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] end @@ -98,7 +98,7 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('main') - if rulesets_rules.class == Array + if pull_request_rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] end @@ -112,7 +112,7 @@ def test_approve_from_user classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') if rulesets_rules.class == Array - pull_request_rulsets_rules = pull_request_rulsets_rules.find { |rule| rule['type'] == 'pull_request' } + pull_request_rulesets_rules = pull_request_rulsets_rules.find { |rule| rule['type'] == 'pull_request' } rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] end assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") From 5e178bce4d79d9a536b259e7ecf561fb51d9edbd Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 13:56:30 +0200 Subject: [PATCH 05/13] Update script_test.rb --- .github/tests/test/script_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index a0ab7fb..322ae17 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -111,7 +111,7 @@ def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - if rulesets_rules.class == Array + if pull_request_rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulsets_rules.find { |rule| rule['type'] == 'pull_request' } rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] end From f985141077bd64e8d9d684054f32be9a5c0e53bf Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 14:01:49 +0200 Subject: [PATCH 06/13] Update script_test.rb --- .github/tests/test/script_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 322ae17..2e75323 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -88,8 +88,8 @@ def test_2_approvals_develop pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') if pull_request_rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } - rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] end + rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') @@ -100,8 +100,8 @@ def test_without_approval_main pull_request_rulesets_rules = @obj.get_branch_ruleset('main') if pull_request_rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } - rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] end + rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] expected = 0 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') @@ -113,8 +113,8 @@ def test_approve_from_user pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') if pull_request_rulesets_rules.class == Array pull_request_rulesets_rules = pull_request_rulsets_rules.find { |rule| rule['type'] == 'pull_request' } - rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] end + rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end From 78cadbcf836713a0de172010d2df3458cac7d647 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 14:20:41 +0200 Subject: [PATCH 07/13] Update script_test.rb --- .github/tests/test/script_test.rb | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 2e75323..a776c09 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -67,29 +67,22 @@ def test_codeowners_not_present_develop def test_deny_merge_main classic_rules = @obj.rules_required_pull_request_reviews('main') - rulesets_rules = @obj.get_branch_ruleset('main') - if rulesets_rules.class == Array - rulesets_rules = rulesets.find { |rule| rule['type'] == 'pull_request' } - end + rulesets = @obj.get_branch_ruleset('main') + rulesets_rules = rulesets.nil? || rulesets.find { |rule| rule['type'] == 'pull_request' } assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to main branch without PR') end def test_deny_merge_develop classic_rules = @obj.rules_required_pull_request_reviews('develop') - rulesets_rules = @obj.get_branch_ruleset('develop') - if rulesets_rules.class == Array - rulesets_rules = rulesets_rules.find { |rule| rule['type'] == 'pull_request' } - end - assert_not_nil(classic_rules || rulesets, 'We should not allow merge to develop branch without PR ') + rulesets = @obj.get_branch_ruleset('develop') + rulesets_rules = rulesets.nil? || rulesets.find { |rule| rule['type'] == 'pull_request' } + assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to develop branch without PR ') end def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - if pull_request_rulesets_rules.class == Array - pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } - end - rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules.nil? || pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') @@ -98,10 +91,7 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('main') - if pull_request_rulesets_rules.class == Array - pull_request_rulesets_rules = pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' } - end - rulesets_required_approving_review_count = pull_request_rulesets_rules['parameters']['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules.nil? || pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] expected = 0 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') @@ -111,10 +101,7 @@ def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - if pull_request_rulesets_rules.class == Array - pull_request_rulesets_rules = pull_request_rulsets_rules.find { |rule| rule['type'] == 'pull_request' } - end - rulesets_require_code_owner_review = pull_request_rulesets_rules['parameters']['require_code_owner_review'] + rulesets_require_code_owner_review = pull_request_rulesets_rules.nil? || pull_request_rulesets_rules('develop').find { |rule| rule['type'] == 'pull_request' }['parameters']['require_code_owner_review'] assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end From 120dedc789ea6bc7b263c98bda50f8b9da2a3fb7 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 15:55:47 +0200 Subject: [PATCH 08/13] Update script_test.rb --- .github/tests/test/script_test.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index a776c09..13fa7b4 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -68,21 +68,21 @@ def test_codeowners_not_present_develop def test_deny_merge_main classic_rules = @obj.rules_required_pull_request_reviews('main') rulesets = @obj.get_branch_ruleset('main') - rulesets_rules = rulesets.nil? || rulesets.find { |rule| rule['type'] == 'pull_request' } + rulesets_rules = rulesets&.find { |rule| rule['type'] == 'pull_request' } assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to main branch without PR') end def test_deny_merge_develop classic_rules = @obj.rules_required_pull_request_reviews('develop') rulesets = @obj.get_branch_ruleset('develop') - rulesets_rules = rulesets.nil? || rulesets.find { |rule| rule['type'] == 'pull_request' } + rulesets_rules = rulesets&.find { |rule| rule['type'] == 'pull_request' } assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to develop branch without PR ') end def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_required_approving_review_count = pull_request_rulesets_rules.nil? || pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') @@ -91,7 +91,7 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('main') - rulesets_required_approving_review_count = pull_request_rulesets_rules.nil? || pull_request_rulesets_rules.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] expected = 0 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') @@ -101,7 +101,7 @@ def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_require_code_owner_review = pull_request_rulesets_rules.nil? || pull_request_rulesets_rules('develop').find { |rule| rule['type'] == 'pull_request' }['parameters']['require_code_owner_review'] + rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }['parameters']['require_code_owner_review'] assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end From 7942becbc0a671b2413e919ff40ef64d3ff0b0ff Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 16:12:25 +0200 Subject: [PATCH 09/13] Update script_test.rb --- .github/tests/test/script_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 13fa7b4..ce2618e 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -82,7 +82,7 @@ def test_deny_merge_develop def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }?['parameters']?['required_approving_review_count'] expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') From 8e8de147e88cd85a4d4e226d0d50ee91d1d6e515 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 16:19:51 +0200 Subject: [PATCH 10/13] Update script_test.rb --- .github/tests/test/script_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index ce2618e..554eb59 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -82,7 +82,7 @@ def test_deny_merge_develop def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }?['parameters']?['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&['parameters']&['required_approving_review_count'] expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') @@ -91,7 +91,7 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('main') - rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }['parameters']['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&['parameters']&['required_approving_review_count'] expected = 0 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') @@ -101,7 +101,7 @@ def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }['parameters']['require_code_owner_review'] + rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }&['parameters']&['require_code_owner_review'] assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end From 579213e89dff5762ccf1deb5fcb70e7699f72985 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 16:23:43 +0200 Subject: [PATCH 11/13] tests fixed --- .github/tests/test/script_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 554eb59..244f382 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -82,7 +82,7 @@ def test_deny_merge_develop def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&['parameters']&['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.['parameters']&.['required_approving_review_count'] expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') @@ -91,7 +91,7 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('main') - rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&['parameters']&['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.['parameters']&.['required_approving_review_count'] expected = 0 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') @@ -101,7 +101,7 @@ def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }&['parameters']&['require_code_owner_review'] + rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }&.['parameters']&.['require_code_owner_review'] assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end From 507fd10b3c46d421bcae5974c21366af9291d61f Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 16:28:45 +0200 Subject: [PATCH 12/13] Update script_test.rb --- .github/tests/test/script_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 244f382..576adb7 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -82,7 +82,7 @@ def test_deny_merge_develop def test_2_approvals_develop classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.['parameters']&.['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('required_approving_review_count') expected = 2 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch') @@ -91,7 +91,7 @@ def test_2_approvals_develop def test_without_approval_main classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"] pull_request_rulesets_rules = @obj.get_branch_ruleset('main') - rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.['parameters']&.['required_approving_review_count'] + rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('required_approving_review_count') expected = 0 required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch') @@ -101,7 +101,7 @@ def test_approve_from_user user_name = 'online-marathon' classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }&.['parameters']&.['require_code_owner_review'] + rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('require_code_owner_review') assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end From 6ed67cfb29fa34b63290f418c86fc10694c28159 Mon Sep 17 00:00:00 2001 From: mplesha Date: Tue, 28 Jan 2025 16:43:30 +0200 Subject: [PATCH 13/13] Update script_test.rb --- .github/tests/test/script_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/tests/test/script_test.rb b/.github/tests/test/script_test.rb index 576adb7..81b6772 100644 --- a/.github/tests/test/script_test.rb +++ b/.github/tests/test/script_test.rb @@ -99,9 +99,9 @@ def test_without_approval_main def test_approve_from_user user_name = 'online-marathon' - classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] - pull_request_rulesets_rules = @obj.get_branch_ruleset('develop') - rulesets_require_code_owner_review = pull_request_rulesets_rules('develop')&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('require_code_owner_review') + classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('develop')["require_code_owner_reviews"] + pull_request_rulesets_rules = @obj.get_branch_ruleset('main') + rulesets_require_code_owner_review = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('require_code_owner_review') assert_not_nil(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}") end