diff options
author | Tiago Botelho <tiagonbotelho@hotmail.com> | 2017-07-05 17:01:38 +0100 |
---|---|---|
committer | Tiago Botelho <tiagonbotelho@hotmail.com> | 2017-07-05 19:10:14 +0100 |
commit | 1207d451ed934f3ce2d8c02130a8e6b2cac88a70 (patch) | |
tree | 35f501038ecc6cde3927666d4011d0fb03f9b771 | |
parent | d1e0b1b3a8404f3a7b54db09c46fb614ca3fcb93 (diff) | |
download | gitlab-ce-32408-allow-creation-of-files-and-dirs-with-spaces-in-web-ui.tar.gz |
Removes file_name_regex from Gitlab::Regex32408-allow-creation-of-files-and-dirs-with-spaces-in-web-ui
-rw-r--r-- | app/models/snippet.rb | 4 | ||||
-rw-r--r-- | features/project/source/browse_files.feature | 10 | ||||
-rw-r--r-- | features/steps/project/source/browse_files.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/git/index.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/regex.rb | 8 | ||||
-rw-r--r-- | spec/features/projects/files/creating_a_file_spec.rb | 5 | ||||
-rw-r--r-- | spec/lib/gitlab/git/index_spec.rb | 19 | ||||
-rw-r--r-- | spec/lib/gitlab/regex_spec.rb | 6 | ||||
-rw-r--r-- | spec/models/repository_spec.rb | 9 |
9 files changed, 6 insertions, 63 deletions
diff --git a/app/models/snippet.rb b/app/models/snippet.rb index 54014df43b0..b3aa7bb986e 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -37,9 +37,7 @@ class Snippet < ActiveRecord::Base validates :author, presence: true validates :title, presence: true, length: { maximum: 255 } validates :file_name, - length: { maximum: 255 }, - format: { with: Gitlab::Regex.file_name_regex, - message: Gitlab::Regex.file_name_regex_message } + length: { maximum: 255 } validates :content, presence: true validates :visibility_level, inclusion: { in: Gitlab::VisibilityLevel.values } diff --git a/features/project/source/browse_files.feature b/features/project/source/browse_files.feature index 472ec9544f3..59a625056d6 100644 --- a/features/project/source/browse_files.feature +++ b/features/project/source/browse_files.feature @@ -131,16 +131,6 @@ Feature: Project Source Browse Files Then I can see the new text file @javascript - Scenario: If I enter an illegal file name I see an error message - Given I click on "New file" link in repo - And I fill the new file name with an illegal name - And I edit code - And I fill the commit message - And I click on "Commit changes" - Then I am on the new file page - And I see "Path can contain only..." - - @javascript Scenario: I can create file with a directory name Given I click on "New file" link in repo And I fill the new file name with a new directory diff --git a/features/steps/project/source/browse_files.rb b/features/steps/project/source/browse_files.rb index 45c47b1a575..17fe4a970be 100644 --- a/features/steps/project/source/browse_files.rb +++ b/features/steps/project/source/browse_files.rb @@ -92,10 +92,6 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps fill_in :branch_name, with: 'new_branch_name', visible: true end - step 'I fill the new file name with an illegal name' do - fill_in :file_name, with: 'Filename/Slash' - end - step 'I fill the new file name with a new directory' do fill_in :file_name, with: new_file_name_with_directory end diff --git a/lib/gitlab/git/index.rb b/lib/gitlab/git/index.rb index 1add037fa5f..666743006e5 100644 --- a/lib/gitlab/git/index.rb +++ b/lib/gitlab/git/index.rb @@ -110,10 +110,6 @@ module Gitlab if segment == '..' raise IndexError, 'Path cannot include directory traversal' end - - unless segment =~ Gitlab::Regex.file_name_regex - raise IndexError, "Path #{Gitlab::Regex.file_name_regex_message}" - end end pathname.to_s diff --git a/lib/gitlab/regex.rb b/lib/gitlab/regex.rb index a5bd2175921..057f32eaef7 100644 --- a/lib/gitlab/regex.rb +++ b/lib/gitlab/regex.rb @@ -19,14 +19,6 @@ module Gitlab "It must start with letter, digit, emoji or '_'." end - def file_name_regex - @file_name_regex ||= /\A[^\/\0]*\z/.freeze - end - - def file_name_regex_message - "can contain only letters, digits, '_', '-', '@', '+' and '.'." - end - def container_registry_reference_regex Gitlab::PathRegex.git_reference_regex end diff --git a/spec/features/projects/files/creating_a_file_spec.rb b/spec/features/projects/files/creating_a_file_spec.rb index 2a1cc01fe68..f67cb46eaaa 100644 --- a/spec/features/projects/files/creating_a_file_spec.rb +++ b/spec/features/projects/files/creating_a_file_spec.rb @@ -30,11 +30,6 @@ feature 'User wants to create a file', feature: true do expect(page).to have_content 'The file has been successfully created' end - scenario 'file name contains invalid characters' do - submit_new_file(file_name: '\\') - expect(page).to have_content 'Path can contain only' - end - scenario 'file name contains directory traversal' do submit_new_file(file_name: '../README.md') expect(page).to have_content 'Path cannot include directory traversal' diff --git a/spec/lib/gitlab/git/index_spec.rb b/spec/lib/gitlab/git/index_spec.rb index 8d63f81e4fd..21b71654251 100644 --- a/spec/lib/gitlab/git/index_spec.rb +++ b/spec/lib/gitlab/git/index_spec.rb @@ -25,16 +25,6 @@ describe Gitlab::Git::Index, seed_helper: true do expect(entry).not_to be_nil expect(repository.lookup(entry[:oid]).content).to eq(options[:content]) end - - it 'creates the file if file_path has spaces in between words' do - options[:file_path] = 'new file.txt' - - index.create(options) - entry = index.get(options[:file_path]) - - expect(entry).not_to be_nil - expect(repository.lookup(entry[:oid]).content).to eq(options[:content]) - end end context 'when a file at that path exists' do @@ -91,15 +81,6 @@ describe Gitlab::Git::Index, seed_helper: true do expect(entry).not_to be_nil end - - it 'creates the dir if it has spaces in between words' do - options[:file_path] = 'new dir' - - index.create_dir(options) - entry = index.get(options[:file_path] + '/.gitkeep') - - expect(entry).not_to be_nil - end end context 'when a file at that path exists' do diff --git a/spec/lib/gitlab/regex_spec.rb b/spec/lib/gitlab/regex_spec.rb index 979f4fefcb6..51e2c3c38c6 100644 --- a/spec/lib/gitlab/regex_spec.rb +++ b/spec/lib/gitlab/regex_spec.rb @@ -14,12 +14,6 @@ describe Gitlab::Regex, lib: true do it { is_expected.not_to match('?gitlab') } end - describe '.file_name_regex' do - subject { described_class.file_name_regex } - - it { is_expected.to match('foo@bar') } - end - describe '.environment_slug_regex' do subject { described_class.environment_name_regex } diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 80b363355da..af305e9b234 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -347,14 +347,15 @@ describe Repository, models: true do expect(blob.data).to eq('Changelog!') end - it 'creates new file with spaces in between successfully' do + it 'creates new file and dir when file_path has a forward slash' do expect do - repository.create_file(user, 'NEW FILE', 'File!', - message: 'Create NEW FILE', + repository.create_file(user, 'new_dir/new_file.txt', 'File!', + message: 'Create new_file with new_dir', branch_name: 'master') end.to change { repository.commits('master').count }.by(1) - expect(repository.blob_at('master', 'NEW FILE').data).to eq('File!') + expect(repository.tree('master', 'new_dir').path).to eq('new_dir') + expect(repository.blob_at('master', 'new_dir/new_file.txt').data).to eq('File!') end it 'respects the autocrlf setting' do |