diff options
Diffstat (limited to 'lib/saml/kit')
| -rw-r--r-- | lib/saml/kit/assertion.rb | 2 | ||||
| -rw-r--r-- | lib/saml/kit/composite_metadata.rb | 4 | ||||
| -rw-r--r-- | lib/saml/kit/concerns/buildable.rb | 12 | ||||
| -rw-r--r-- | lib/saml/kit/concerns/translatable.rb | 2 | ||||
| -rw-r--r-- | lib/saml/kit/concerns/trustable.rb | 2 | ||||
| -rw-r--r-- | lib/saml/kit/concerns/validatable.rb | 25 | ||||
| -rw-r--r-- | lib/saml/kit/document.rb | 2 | ||||
| -rw-r--r-- | lib/saml/kit/metadata.rb | 4 | ||||
| -rw-r--r-- | lib/saml/kit/null_assertion.rb | 2 | ||||
| -rw-r--r-- | lib/saml/kit/response.rb | 5 | ||||
| -rw-r--r-- | lib/saml/kit/signature.rb | 2 | ||||
| -rw-r--r-- | lib/saml/kit/version.rb | 2 |
12 files changed, 44 insertions, 20 deletions
diff --git a/lib/saml/kit/assertion.rb b/lib/saml/kit/assertion.rb index 6099fb0..eff28c2 100644 --- a/lib/saml/kit/assertion.rb +++ b/lib/saml/kit/assertion.rb @@ -126,7 +126,7 @@ module Saml def must_have_valid_signature return if !signed? || signature.valid? - signature.errors.each do |attribute, message| + signature.each_error do |attribute, message| errors.add(attribute, message) end end diff --git a/lib/saml/kit/composite_metadata.rb b/lib/saml/kit/composite_metadata.rb index 2c61a29..113f7e3 100644 --- a/lib/saml/kit/composite_metadata.rb +++ b/lib/saml/kit/composite_metadata.rb @@ -51,9 +51,9 @@ module Saml @metadatum.each(&block) end - def method_missing(name, *args) + def method_missing(name, *args, **kwargs) if (target = find { |x| x.respond_to?(name) }) - target.public_send(name, *args) + target.public_send(name, *args, **kwargs) else super end diff --git a/lib/saml/kit/concerns/buildable.rb b/lib/saml/kit/concerns/buildable.rb index 32e26e2..ccbe1a2 100644 --- a/lib/saml/kit/concerns/buildable.rb +++ b/lib/saml/kit/concerns/buildable.rb @@ -9,20 +9,20 @@ module Saml extend ActiveSupport::Concern class_methods do - def build(*args) - builder(*args) do |builder| + def build(*args, **kwargs) + builder(*args, **kwargs) do |builder| yield builder if block_given? end.build end - def build_xml(*args) - builder(*args) do |builder| + def build_xml(*args, **kwargs) + builder(*args, **kwargs) do |builder| yield builder if block_given? end.to_xml end - def builder(*args) - builder_class.new(*args).tap do |builder| + def builder(*args, **kwargs) + builder_class.new(*args, **kwargs).tap do |builder| yield builder if block_given? end end diff --git a/lib/saml/kit/concerns/translatable.rb b/lib/saml/kit/concerns/translatable.rb index b35f31b..38e94ba 100644 --- a/lib/saml/kit/concerns/translatable.rb +++ b/lib/saml/kit/concerns/translatable.rb @@ -9,7 +9,7 @@ module Saml # @!visibility private def error_message(attribute, options = {}) default_options = { scope: "saml/kit.errors.#{name}" } - I18n.translate(attribute, default_options.merge(options)) + I18n.translate(attribute, **default_options.merge(options)) end end end diff --git a/lib/saml/kit/concerns/trustable.rb b/lib/saml/kit/concerns/trustable.rb index 127570b..f6eb6c9 100644 --- a/lib/saml/kit/concerns/trustable.rb +++ b/lib/saml/kit/concerns/trustable.rb @@ -53,7 +53,7 @@ module Saml return unless signature.present? signature.valid? - signature.errors.each do |attribute, error| + signature.each_error do |attribute, error| errors.add(attribute, error) end end diff --git a/lib/saml/kit/concerns/validatable.rb b/lib/saml/kit/concerns/validatable.rb new file mode 100644 index 0000000..26e6706 --- /dev/null +++ b/lib/saml/kit/concerns/validatable.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Saml + module Kit + # This module is responsible for + # providing an adapter to the ActiveModel::Validations + # module. + module Validatable + extend ActiveSupport::Concern + include ActiveModel::Validations + + def each_error + if Gem::Requirement.new('>= 6.1').satisfied_by?(ActiveModel.version) + errors.each do |error| + yield error.attribute, error.message + end + else + errors.each do |attribute, message| + yield attribute, message + end + end + end + end + end +end diff --git a/lib/saml/kit/document.rb b/lib/saml/kit/document.rb index 77b3cc3..ea0b0e7 100644 --- a/lib/saml/kit/document.rb +++ b/lib/saml/kit/document.rb @@ -4,7 +4,7 @@ module Saml module Kit # This class is a base class for SAML documents. class Document - include ActiveModel::Validations + include Validatable include Buildable include Translatable include Trustable diff --git a/lib/saml/kit/metadata.rb b/lib/saml/kit/metadata.rb index cdd68cc..a3d810e 100644 --- a/lib/saml/kit/metadata.rb +++ b/lib/saml/kit/metadata.rb @@ -26,7 +26,7 @@ module Saml # for a list of options that can be specified. # {include:file:spec/examples/metadata_spec.rb} class Metadata - include ActiveModel::Validations + include Validatable include Buildable include Translatable include XmlParseable @@ -192,7 +192,7 @@ module Saml def must_have_valid_signature return if !signature.present? || signature.valid? - signature.errors.each do |attribute, error| + signature.each_error do |attribute, error| errors.add(attribute, error) end end diff --git a/lib/saml/kit/null_assertion.rb b/lib/saml/kit/null_assertion.rb index ab10619..d7a56b2 100644 --- a/lib/saml/kit/null_assertion.rb +++ b/lib/saml/kit/null_assertion.rb @@ -6,7 +6,7 @@ module Saml # Null Object pattern for when a Response # is missing an Assertion. class NullAssertion - include ActiveModel::Validations + include Validatable include Translatable validate :invalid diff --git a/lib/saml/kit/response.rb b/lib/saml/kit/response.rb index 31907ca..baf7df7 100644 --- a/lib/saml/kit/response.rb +++ b/lib/saml/kit/response.rb @@ -43,9 +43,8 @@ module Saml def must_be_valid_assertion assertion.valid? - assertion.errors.each do |attribute, error| - attribute = :assertion if attribute == :base - errors.add(attribute, error) + assertion.each_error do |attribute, error| + errors.add(attribute == :base ? :assertion : attribute, error) end end diff --git a/lib/saml/kit/signature.rb b/lib/saml/kit/signature.rb index 395b5f2..6ec92ab 100644 --- a/lib/saml/kit/signature.rb +++ b/lib/saml/kit/signature.rb @@ -6,7 +6,7 @@ module Saml # validating an xml digital signature # in an xml document. class Signature - include ActiveModel::Validations + include Validatable include Translatable validate :validate_signature diff --git a/lib/saml/kit/version.rb b/lib/saml/kit/version.rb index 1fa1732..5a59ff1 100644 --- a/lib/saml/kit/version.rb +++ b/lib/saml/kit/version.rb @@ -2,6 +2,6 @@ module Saml module Kit - VERSION = '1.2.0' + VERSION = '1.3.0' end end |
