Skip to content

Commit 3652ece

Browse files
change test
1 parent 55089cd commit 3652ece

1 file changed

Lines changed: 113 additions & 1 deletion

File tree

.github/tests/test/script_test.rb

Lines changed: 113 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,113 @@
1-
classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('main')&.[]("require_code_owner_reviews")
1+
require 'test/unit'
2+
require_relative '../src/script'
3+
4+
class ScriptTest < Test::Unit::TestCase
5+
6+
def setup
7+
url = ENV['URL'].nil? ? '' : ENV["URL"]
8+
token = ENV['TOKEN'].nil? ? '' : ENV["TOKEN"]
9+
@secrets_token = ENV['SECRETS_TOKEN']
10+
@obj = GithubApi.new(url, token)
11+
end
12+
13+
def test_health_check
14+
assert_not_nil(@obj.instance_variable_get('@repo_uri'), 'Url alive')
15+
assert_not_nil(@obj.instance_variable_get('@token'), 'Token alive')
16+
end
17+
18+
def test_token_present
19+
actual = @secrets_token =~ /^ghp_\w{36}$/
20+
assert_not_nil(actual, "Secret with name 'PAT' with valid personal access token doesn't exist")
21+
end
22+
23+
def test_deploy_key_present
24+
response = @obj.deploy_keys
25+
assert_not_nil(response, "Access denied")
26+
deploy_key = response.find {|element| element['title'] == 'DEPLOY_KEY'}
27+
assert_not_nil(deploy_key, "The deploy key with name 'DEPLOY_KEY' doesn't exist")
28+
end
29+
30+
def test_main_present
31+
actual = @obj.branch_exist?('main')
32+
assert(actual, 'Branch main is not present')
33+
end
34+
35+
def test_main_protected
36+
actual = @obj.branch_protected?('main')
37+
assert(actual, 'Branch main is not protected')
38+
end
39+
40+
def test_develop_present
41+
actual = @obj.branch_exist?('develop')
42+
assert(actual, 'Branch develop is not present')
43+
end
44+
45+
def test_develop_protected
46+
actual = @obj.branch_protected?('develop')
47+
assert(actual, 'Branch develop is not protected')
48+
end
49+
50+
def test_develop_default
51+
actual = @obj.default_branch
52+
expected = 'develop'
53+
assert_equal(expected, actual, 'Default branch isn\'t develop')
54+
end
55+
56+
def test_codeowners_contains_user
57+
user_name = 'softservedata'
58+
content = @obj.file_branch('CODEOWNERS', 'main') || @obj.file_branch('.github/CODEOWNERS', 'main') || @obj.file_branch('docs/CODEOWNERS', 'main')
59+
assert_not_nil(content, 'File CODEOWNERS doesn\'t exist on main branch')
60+
assert(content.include?(user_name), "User #{user_name} doesn't present in CODEOWNERS")
61+
end
62+
63+
def test_codeowners_not_present_develop
64+
content = @obj.file_branch('CODEOWNERS', 'develop')
65+
assert_nil(content, 'File CODEOWNERS exist on develop branch')
66+
end
67+
68+
def test_deny_merge_main
69+
classic_rules = @obj.rules_required_pull_request_reviews('main')
70+
rulesets = @obj.get_branch_ruleset('main')
71+
rulesets_rules = rulesets&.find { |rule| rule['type'] == 'pull_request' }
72+
assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to main branch without PR')
73+
end
74+
75+
def test_deny_merge_develop
76+
classic_rules = @obj.rules_required_pull_request_reviews('develop')
77+
rulesets = @obj.get_branch_ruleset('develop')
78+
rulesets_rules = rulesets&.find { |rule| rule['type'] == 'pull_request' }
79+
assert_not_nil(classic_rules || rulesets_rules, 'We should not allow merge to develop branch without PR ')
80+
end
81+
82+
def test_2_approvals_develop
83+
classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('develop').nil? || @obj.rules_required_pull_request_reviews('develop')["required_approving_review_count"]
84+
pull_request_rulesets_rules = @obj.get_branch_ruleset('develop')
85+
rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('required_approving_review_count')
86+
expected = 2
87+
required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected
88+
assert_true(required_approving_review_count, 'We should have 2 approvals before merge to develop branch')
89+
end
90+
91+
def test_without_approval_main
92+
classic_required_approving_review_count = @obj.rules_required_pull_request_reviews('main').nil? || @obj.rules_required_pull_request_reviews('main')["required_approving_review_count"]
93+
pull_request_rulesets_rules = @obj.get_branch_ruleset('main')
94+
rulesets_required_approving_review_count = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('required_approving_review_count')
95+
expected = 0
96+
required_approving_review_count = classic_required_approving_review_count == expected || rulesets_required_approving_review_count == expected
97+
assert_true(required_approving_review_count, 'We shouldn\'t have any approvals before merge to main branch')
98+
end
99+
100+
def test_approve_from_user
101+
user_name = 'softservedata'
102+
classic_require_code_owner_review = @obj.rules_required_pull_request_reviews('main')["require_code_owner_reviews"]
103+
pull_request_rulesets_rules = @obj.get_branch_ruleset('main')
104+
rulesets_require_code_owner_review = pull_request_rulesets_rules&.find { |rule| rule['type'] == 'pull_request' }&.[]('parameters')&.[]('require_code_owner_review')
105+
assert(classic_require_code_owner_review || rulesets_require_code_owner_review, "We should not allow merge to main branch without approve from #{user_name}")
106+
end
107+
108+
def test_PR_template_present
109+
actual = @obj.file_branch('.github/pull_request_template.md', 'main')
110+
assert_not_nil(actual, 'Pull request template is absent')
111+
end
112+
113+
end

0 commit comments

Comments
 (0)