]> source.dussan.org Git - redmine.git/commitdiff
Validate custom field regexp (#8865).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 20 Jul 2011 16:29:34 +0000 (16:29 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 20 Jul 2011 16:29:34 +0000 (16:29 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6298 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/custom_field.rb
test/unit/custom_field_test.rb

index 0e8151ee0cfd0bfa0a314cb7096e5df3f87475a0..6697a192a15041c25c3845077cc36ce2953e648f 100644 (file)
@@ -42,6 +42,14 @@ class CustomField < ActiveRecord::Base
       errors.add(:possible_values, :invalid) unless self.possible_values.is_a? Array
     end
     
+    if regexp.present?
+      begin
+        Regexp.new(regexp)
+      rescue
+        errors.add(:regexp, :invalid)
+      end
+    end
+    
     # validate default value
     v = CustomValue.new(:custom_field => self.clone, :value => default_value, :customized => nil)
     v.custom_field.is_required = false
index 4d80f5f3ad819c4166f8c930ad72f75bcb65338b..d19e890958d51fd2a5156e71c4b5ad7718e30053 100644 (file)
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006-2007  Jean-Philippe Lang
+# Redmine - project management software
+# Copyright (C) 2006-2011  Jean-Philippe Lang
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -25,6 +25,15 @@ class CustomFieldTest < ActiveSupport::TestCase
     assert field.save
   end
   
+  def test_regexp_validation
+    field = IssueCustomField.new(:name => 'regexp', :field_format => 'text', :regexp => '[a-z0-9')
+    assert !field.save
+    assert_equal I18n.t('activerecord.errors.messages.invalid'), field.errors.on(:regexp)
+    
+    field.regexp = '[a-z0-9]'
+    assert field.save
+  end
+  
   def test_possible_values_should_accept_an_array
     field = CustomField.new
     field.possible_values = ["One value", ""]