summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2017-07-05 17:01:38 +0100
committerTiago Botelho <tiagonbotelho@hotmail.com>2017-07-05 19:10:14 +0100
commit1207d451ed934f3ce2d8c02130a8e6b2cac88a70 (patch)
tree35f501038ecc6cde3927666d4011d0fb03f9b771
parentd1e0b1b3a8404f3a7b54db09c46fb614ca3fcb93 (diff)
downloadgitlab-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.rb4
-rw-r--r--features/project/source/browse_files.feature10
-rw-r--r--features/steps/project/source/browse_files.rb4
-rw-r--r--lib/gitlab/git/index.rb4
-rw-r--r--lib/gitlab/regex.rb8
-rw-r--r--spec/features/projects/files/creating_a_file_spec.rb5
-rw-r--r--spec/lib/gitlab/git/index_spec.rb19
-rw-r--r--spec/lib/gitlab/regex_spec.rb6
-rw-r--r--spec/models/repository_spec.rb9
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