Commit 88ceddd

mo <mo.khan@gmail.com>
2017-12-24 23:49:17
implement each on registry
1 parent a901f1d
Changed files (2)
lib/saml/kit/default_registry.rb
@@ -29,6 +29,8 @@ module Saml
     #
     # {include:file:spec/saml/default_registry_spec.rb}
     class DefaultRegistry
+      include Enumerable
+
       def initialize(items = {})
         @items = items
       end
@@ -58,6 +60,13 @@ module Saml
         @items[entity_id]
       end
 
+      # Yields each registered [Saml::Kit::Metadata] to the block.
+      def each
+        @items.each do |key, value|
+          yield value
+        end
+      end
+
       class HttpApi # :nodoc:
         def initialize(url, verify_ssl: true)
           @uri = URI.parse(url)
spec/saml/default_registry_spec.rb
@@ -74,4 +74,20 @@ RSpec.describe Saml::Kit::DefaultRegistry do
       expect(result).to be_instance_of(Saml::Kit::CompositeMetadata)
     end
   end
+
+  describe "#each" do
+    it 'yields each registered metadata' do
+      idp = Saml::Kit::IdentityProviderMetadata.build do |config|
+        config.entity_id = "idp"
+      end
+      sp = Saml::Kit::ServiceProviderMetadata.build do |config|
+        config.entity_id = "sp"
+      end
+
+      subject.register(idp)
+      subject.register(sp)
+
+      expect(subject.map(&:to_xml)).to match_array([idp.to_xml, sp.to_xml])
+    end
+  end
 end