diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-07-18 15:38:06 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-07-18 15:38:06 +0200 |
commit | 7cef4f1908d99743bf1dfb9c1cfdd6b2936b2b3d (patch) | |
tree | 3f6eb86dffcf85d8184663f6da8593bf5181eaf4 /lib/gitlab/ci | |
parent | 24b686ebb64e2f5a02d812e9aa726f1ba0868c2e (diff) | |
download | gitlab-ce-7cef4f1908d99743bf1dfb9c1cfdd6b2936b2b3d.tar.gz |
Improve valid keys validation for CI config nodes
Diffstat (limited to 'lib/gitlab/ci')
-rw-r--r-- | lib/gitlab/ci/config/node/artifacts.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/cache.rb | 8 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/validator.rb | 8 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/validators.rb | 9 |
4 files changed, 12 insertions, 15 deletions
diff --git a/lib/gitlab/ci/config/node/artifacts.rb b/lib/gitlab/ci/config/node/artifacts.rb index 7b3eb7e1992..2c301cf2917 100644 --- a/lib/gitlab/ci/config/node/artifacts.rb +++ b/lib/gitlab/ci/config/node/artifacts.rb @@ -13,6 +13,8 @@ module Gitlab validations do validates :config, type: Hash + validates :config, + allowed_keys: %i[name untracked paths when expire_in] with_options allow_nil: true do validates :name, type: String diff --git a/lib/gitlab/ci/config/node/cache.rb b/lib/gitlab/ci/config/node/cache.rb index cdf8ba2e35d..21d96b220b8 100644 --- a/lib/gitlab/ci/config/node/cache.rb +++ b/lib/gitlab/ci/config/node/cache.rb @@ -8,6 +8,10 @@ module Gitlab class Cache < Entry include Configurable + validations do + validates :config, allowed_keys: %i[key untracked paths] + end + node :key, Node::Key, description: 'Cache key used to define a cache affinity.' @@ -16,10 +20,6 @@ module Gitlab node :paths, Node::Paths, description: 'Specify which paths should be cached across builds.' - - validations do - validates :config, allowed_keys: true - end end end end diff --git a/lib/gitlab/ci/config/node/validator.rb b/lib/gitlab/ci/config/node/validator.rb index ca000f245aa..43c7e102b50 100644 --- a/lib/gitlab/ci/config/node/validator.rb +++ b/lib/gitlab/ci/config/node/validator.rb @@ -21,12 +21,6 @@ module Gitlab 'Validator' end - def unknown_keys - return [] unless config.is_a?(Hash) - - config.keys - @node.class.nodes.keys - end - private def location @@ -35,7 +29,7 @@ module Gitlab end def key_name - if key.blank? || key.nil? + if key.blank? @node.class.name.demodulize.underscore.humanize else key diff --git a/lib/gitlab/ci/config/node/validators.rb b/lib/gitlab/ci/config/node/validators.rb index 5568be80166..b43a0bc0bab 100644 --- a/lib/gitlab/ci/config/node/validators.rb +++ b/lib/gitlab/ci/config/node/validators.rb @@ -5,10 +5,11 @@ module Gitlab module Validators class AllowedKeysValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) - if record.unknown_keys.any? - unknown_list = record.unknown_keys.join(', ') - record.errors.add(:config, - "contains unknown keys: #{unknown_list}") + unknown_keys = record.config.try(:keys).to_a - options[:in] + + if unknown_keys.any? + record.errors.add(:config, 'contains unknown keys: ' + + unknown_keys.join(', ')) end end end |