Commit fb9d90f2 authored by Michael Kozono's avatar Michael Kozono

Merge branch '216345-revert-revert-of-codeowners-applying-to-web-requests' into 'master'

Revert "Revert CODEOWNERS validation of Web requests in diff check"

See merge request gitlab-org/gitlab!31025
parents 907466b6 c90bbb43
---
title: Revert CODEOWNERS validation of Web requests in diff check
merge_request: 30936
author:
type: fixed
......@@ -12,7 +12,7 @@ module EE
def path_validations
validations = [super].flatten
if !updated_from_web? && project.branch_requires_code_owner_approval?(branch_name)
if project.branch_requires_code_owner_approval?(branch_name)
validations << validate_code_owners
end
......@@ -34,11 +34,13 @@ module EE
matched_rules = loader.entries.collect { |e| "- #{e.pattern}" }
code_owner_path = project.repository.code_owners_blob(ref: branch_name).path || "CODEOWNERS"
"Pushes to protected branches that contain changes to files that\n" \
msg = "Pushes to protected branches that contain changes to files that\n" \
"match patterns defined in `#{code_owner_path}` are disabled for\n" \
"this project. Please submit these changes via a merge request.\n\n" \
"The following pattern(s) from `#{code_owner_path}` were matched:\n" \
"#{matched_rules.join('\n')}\n"
updated_from_web? ? msg.tr("\n", " ") : msg
end
def validate_path_locks?
......
......@@ -88,6 +88,32 @@ describe Gitlab::Checks::DiffCheck do
end
end
context "and the user is not listed as a code owner" do
before do
stub_feature_flags(sectional_codeowners: false)
end
context "for a non-web-based request" do
it_behaves_like "returns an error message"
it "returns an error message with newline chars" do
expect(validation_result).to include("\n")
end
end
context "for a web-based request" do
before do
expect(subject).to receive(:updated_from_web?).and_return(true)
end
it_behaves_like "returns an error message"
it "returns an error message with newline chars removed" do
expect(validation_result).not_to include("\n")
end
end
end
context "and the user is not listed as a code owner" do
it_behaves_like "returns an error message"
end
......@@ -152,30 +178,16 @@ describe Gitlab::Checks::DiffCheck do
end
context "when the feature is enabled on the project" do
context "updated_from_web? == false" do
before do
expect(subject).to receive(:updated_from_web?).and_return(false)
expect(project).to receive(:branch_requires_code_owner_approval?)
.once.and_return(true)
end
it "returns an array of Proc(s)" do
validations = subject.send(:path_validations)
expect(validations.any?).to be_truthy
expect(validations.any? { |v| !v.is_a? Proc }).to be_falsy
end
before do
expect(project).to receive(:branch_requires_code_owner_approval?)
.once.and_return(true)
end
context "updated_from_web? == true" do
before do
expect(subject).to receive(:updated_from_web?).and_return(true)
expect(project).not_to receive(:branch_requires_code_owner_approval?)
end
it "returns an array of Proc(s)" do
validations = subject.send(:path_validations)
it "returns an empty array" do
expect(subject.send(:path_validations)).to eq([])
end
expect(validations.any?).to be_truthy
expect(validations.any? { |v| !v.is_a? Proc }).to be_falsy
end
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment