main
 1# frozen_string_literal: true
 2
 3module Saml
 4  module Kit
 5    # This module is responsible for validating
 6    # xml documents against the SAML XSD's
 7    module XsdValidatable
 8      PROTOCOL_XSD = File.expand_path(
 9        '../xsd/saml-schema-protocol-2.0.xsd', File.dirname(__FILE__)
10      ).freeze
11
12      METADATA_XSD = File.expand_path(
13        '../xsd/saml-schema-metadata-2.0.xsd', File.dirname(__FILE__)
14      ).freeze
15
16      # @!visibility private
17      def matches_xsd?(xsd)
18        return unless to_nokogiri.present?
19
20        Dir.chdir(File.dirname(xsd)) do
21          xsd = Nokogiri::XML::Schema(IO.read(xsd))
22          xsd.validate(to_nokogiri.document).each do |error|
23            errors.add(:base, error.message)
24          end
25        end
26      end
27    end
28  end
29end