Fix invalid visibility string comparison in project import
This resolves an "ArgumentError: comparison of String with 0 failed" issue where the visibility_level is stored as a string in the project import data because the value comes directly from the Web form. This problem happened upon creating a project from a template or restoring a project. We now cast the value to an integer to guard against these kinds of failures. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/61692
This commit is contained in:
parent
20375f811a
commit
5c8cd42bbd
3 changed files with 19 additions and 1 deletions
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix invalid visibility string comparison in project import
|
||||
merge_request: 28612
|
||||
author:
|
||||
type: fixed
|
|
@ -129,7 +129,7 @@ module Gitlab
|
|||
|
||||
def visibility_level
|
||||
level = override_params['visibility_level'] || json_params['visibility_level'] || @project.visibility_level
|
||||
level = @project.group.visibility_level if @project.group && level > @project.group.visibility_level
|
||||
level = @project.group.visibility_level if @project.group && level.to_i > @project.group.visibility_level
|
||||
|
||||
{ 'visibility_level' => level }
|
||||
end
|
||||
|
|
|
@ -328,6 +328,19 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
|
|||
end
|
||||
|
||||
context 'when the project has overridden params in import data' do
|
||||
it 'handles string versions of visibility_level' do
|
||||
# Project needs to be in a group for visibility level comparison
|
||||
# to happen
|
||||
group = create(:group)
|
||||
project.group = group
|
||||
|
||||
project.create_import_data(data: { override_params: { visibility_level: Gitlab::VisibilityLevel::INTERNAL.to_s } })
|
||||
|
||||
restored_project_json
|
||||
|
||||
expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::INTERNAL)
|
||||
end
|
||||
|
||||
it 'overwrites the params stored in the JSON' do
|
||||
project.create_import_data(data: { override_params: { description: "Overridden" } })
|
||||
|
||||
|
|
Loading…
Reference in a new issue