Commit 57baa49b authored by gitlabhq's avatar gitlabhq

project path & code regexp validation

parent 29158ea3
...@@ -16,6 +16,8 @@ class Project < ActiveRecord::Base ...@@ -16,6 +16,8 @@ class Project < ActiveRecord::Base
validates :path, validates :path,
:uniqueness => true, :uniqueness => true,
:presence => true, :presence => true,
:format => { :with => /^[a-zA-Z0-9_\-]*$/,
:message => "only letters, digits & '_' '-' allowed" },
:length => { :within => 0..255 } :length => { :within => 0..255 }
validates :description, validates :description,
...@@ -24,14 +26,15 @@ class Project < ActiveRecord::Base ...@@ -24,14 +26,15 @@ class Project < ActiveRecord::Base
validates :code, validates :code,
:presence => true, :presence => true,
:uniqueness => true, :uniqueness => true,
:length => { :within => 3..12 } :format => { :with => /^[a-zA-Z0-9_\-]*$/,
:message => "only letters, digits & '_' '-' allowed" },
:length => { :within => 3..16 }
validates :owner, validates :owner,
:presence => true :presence => true
validate :check_limit validate :check_limit
before_save :format_code
after_destroy :destroy_gitosis_project after_destroy :destroy_gitosis_project
after_save :update_gitosis_project after_save :update_gitosis_project
...@@ -47,10 +50,6 @@ class Project < ActiveRecord::Base ...@@ -47,10 +50,6 @@ class Project < ActiveRecord::Base
notes.where(:noteable_type => ["", nil]) notes.where(:noteable_type => ["", nil])
end end
def format_code
read_attribute(:code).downcase.strip.gsub(' ', '')
end
def update_gitosis_project def update_gitosis_project
Gitosis.new.configure do |c| Gitosis.new.configure do |c|
c.update_project(path, gitosis_writers) c.update_project(path, gitosis_writers)
......
if defined?(Footnotes) && Rails.env.development? if defined?(Footnotes) && Rails.env.development?
Footnotes.run! # first of all #Footnotes.run! # first of all
# ... other init code # ... other init code
end end
...@@ -32,7 +32,7 @@ Gitlab::Application.routes.draw do ...@@ -32,7 +32,7 @@ Gitlab::Application.routes.draw do
get "tree/:commit_id/:path" => "projects#tree", get "tree/:commit_id/:path" => "projects#tree",
:as => :tree_file, :as => :tree_file,
:constraints => { :constraints => {
:id => /[a-zA-Z0-9]+/, :id => /[a-zA-Z0-9_\-]+/,
:commit_id => /[a-zA-Z0-9]+/, :commit_id => /[a-zA-Z0-9]+/,
:path => /.*/ :path => /.*/
} }
......
...@@ -88,7 +88,7 @@ describe "Admin::Projects" do ...@@ -88,7 +88,7 @@ describe "Admin::Projects" do
visit new_admin_project_path visit new_admin_project_path
fill_in 'Name', :with => 'NewProject' fill_in 'Name', :with => 'NewProject'
fill_in 'Code', :with => 'NPR' fill_in 'Code', :with => 'NPR'
fill_in 'Path', :with => '/tmp/legit_test/legit' fill_in 'Path', :with => 'legit_1'
expect { click_button "Save" }.to change { Project.count }.by(1) expect { click_button "Save" }.to change { Project.count }.by(1)
@project = Project.last @project = Project.last
end end
......
...@@ -39,7 +39,7 @@ describe "Projects" do ...@@ -39,7 +39,7 @@ describe "Projects" do
visit new_project_path visit new_project_path
fill_in 'Name', :with => 'NewProject' fill_in 'Name', :with => 'NewProject'
fill_in 'Code', :with => 'NPR' fill_in 'Code', :with => 'NPR'
fill_in 'Path', :with => '/tmp/legit_test/legit' fill_in 'Path', :with => 'newproject'
expect { click_button "Create Project" }.to change { Project.count }.by(1) expect { click_button "Create Project" }.to change { Project.count }.by(1)
@project = Project.last @project = Project.last
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