Commit 28090028 authored by Thong Kuah's avatar Thong Kuah

Merge branch...

Merge branch '221199-unclear-error-is-shown-when-trying-to-update-codeowners-enabled-files-via-gitlab-ui' into 'master'

Improve codeowners validation errors in file edit

Closes #221199

See merge request gitlab-org/gitlab!34600
parents 3f2e13f4 2adf2d5c
...@@ -11,19 +11,21 @@ module EE ...@@ -11,19 +11,21 @@ module EE
private private
# rubocop:disable Gitlab/ModuleWithInstanceVariables
def validate_codeowner_rules def validate_codeowner_rules
return unless ::Feature.enabled?(:use_legacy_codeowner_validations) return unless ::Feature.enabled?(:use_legacy_codeowner_validations)
return if params[:file_path].blank? return if @file_path.blank?
codeowners_error = codeowners_check_error(project, branch_name, params[:file_path]) codeowners_error = codeowners_check_error(project, branch_name, @file_path)
if codeowners_error.present? if codeowners_error.present?
flash.now[:alert] = codeowners_error flash.now[:alert] = codeowners_error.tr("\n", " ")
view = params[:action] == 'update' ? :edit : :new view = params[:action] == 'update' ? :edit : :new
render view render view
end end
end end
# rubocop:enable Gitlab/ModuleWithInstanceVariables
def codeowners_check_error(project, branch_name, paths) def codeowners_check_error(project, branch_name, paths)
::Gitlab::CodeOwners::Validator.new(project, branch_name, paths).execute ::Gitlab::CodeOwners::Validator.new(project, branch_name, paths).execute
......
---
title: Fix issue with displaying Code Owner error messages in the UI
merge_request: 34600
author:
type: fixed
...@@ -4,6 +4,7 @@ require 'spec_helper' ...@@ -4,6 +4,7 @@ require 'spec_helper'
RSpec.describe Projects::BlobController do RSpec.describe Projects::BlobController do
include ProjectForksHelper include ProjectForksHelper
include FakeBlobHelpers
let(:project) { create(:project, :public, :repository) } let(:project) { create(:project, :public, :repository) }
...@@ -29,15 +30,34 @@ RSpec.describe Projects::BlobController do ...@@ -29,15 +30,34 @@ RSpec.describe Projects::BlobController do
end end
shared_examples "renders to the expected_view with an error msg" do shared_examples "renders to the expected_view with an error msg" do
let(:error_msg) { "Example error msg" } let(:error_msg) do
"Pushes to protected branches that contain changes to files that match " \
"patterns defined in `CODEOWNERS` are disabled for this project. " \
"Please submit these changes via a merge request. The following " \
"pattern(s) from `CODEOWNERS` were matched: - docs/ "
end
before do
allow(::ProtectedBranch).to receive(:branch_requires_code_owner_approval?)
.and_return(true)
it "renders to the expected_view with an error msg" do expect_next_instance_of(Repository) do |repo|
default_params[:file_path] = "CHANGELOG" allow(repo).to receive(:code_owners_blob)
.with(ref: "master")
.and_return(
fake_blob(
path: "CODEOWNERS",
data: "*.rb @#{user.username}\ndocs/ @#{user.username}"
)
)
end
expect_next_instance_of(Gitlab::CodeOwners::Validator) do |validator| stub_licensed_features(code_owner_approval_required: true)
expect(validator).to receive(:execute).and_return(error_msg)
end end
it "renders to the edit page with an error msg" do
default_params[:file_path] = "docs/EXAMPLE_FILE"
subject subject
expect(flash[:alert]).to eq(error_msg) expect(flash[:alert]).to eq(error_msg)
...@@ -53,7 +73,7 @@ RSpec.describe Projects::BlobController do ...@@ -53,7 +73,7 @@ RSpec.describe Projects::BlobController do
project_id: project, project_id: project,
id: 'master', id: 'master',
branch_name: 'master', branch_name: 'master',
file_name: 'CHANGELOG', file_name: 'docs/EXAMPLE_FILE',
content: 'Added changes', content: 'Added changes',
commit_message: 'Create CHANGELOG' commit_message: 'Create CHANGELOG'
} }
...@@ -68,7 +88,7 @@ RSpec.describe Projects::BlobController do ...@@ -68,7 +88,7 @@ RSpec.describe Projects::BlobController do
it 'redirects to blob' do it 'redirects to blob' do
post :create, params: default_params post :create, params: default_params
expect(response).to be_ok expect(response).to be_redirect
end end
it_behaves_like "file matches a codeowners rule" do it_behaves_like "file matches a codeowners rule" do
...@@ -91,10 +111,6 @@ RSpec.describe Projects::BlobController do ...@@ -91,10 +111,6 @@ RSpec.describe Projects::BlobController do
} }
end end
def blob_after_edit_path
project_blob_path(project, 'master/CHANGELOG')
end
before do before do
project.add_maintainer(user) project.add_maintainer(user)
......
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