From f4e3d2137b332da683208ff10a6bbd4bfe58f74c Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Tue, 24 Oct 2023 10:30:12 +0200 Subject: [PATCH] fix(champ regex): same timeout across validations, and more agressive value --- app/models/type_de_champ.rb | 2 +- app/validators/expression_reguliere_validator.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/models/type_de_champ.rb b/app/models/type_de_champ.rb index 42eac1d5e..da3835549 100644 --- a/app/models/type_de_champ.rb +++ b/app/models/type_de_champ.rb @@ -618,7 +618,7 @@ class TypeDeChamp < ApplicationRecord def invalid_regexp? return false if expression_reguliere.blank? return false if expression_reguliere_exemple_text.blank? - return false if expression_reguliere_exemple_text.match?(Regexp.new(expression_reguliere, timeout: 2.0)) + return false if expression_reguliere_exemple_text.match?(Regexp.new(expression_reguliere, timeout: ExpressionReguliereValidator::TIMEOUT)) self.errors.add(:expression_reguliere_exemple_text, I18n.t('errors.messages.mismatch_regexp')) true diff --git a/app/validators/expression_reguliere_validator.rb b/app/validators/expression_reguliere_validator.rb index 08ed96dde..568357856 100644 --- a/app/validators/expression_reguliere_validator.rb +++ b/app/validators/expression_reguliere_validator.rb @@ -1,7 +1,9 @@ class ExpressionReguliereValidator < ActiveModel::Validator + TIMEOUT = 1.second.freeze + def validate(record) if record.value.present? - if !record.value.match?(Regexp.new(record.expression_reguliere, timeout: 5.0)) + if !record.value.match?(Regexp.new(record.expression_reguliere, timeout: TIMEOUT)) record.errors.add(:value, :invalid_regexp, expression_reguliere_error_message: record.expression_reguliere_error_message) end end