Commit e06db66

mo <mo.khan@gmail.com>
2018-01-14 20:37:20
allow bulk config.
1 parent 4061deb
lib/scim/shady/builders/service_provider_configuration.rb
@@ -3,6 +3,12 @@ module Scim
     module Builders
       class ServiceProviderConfiguration
         attr_accessor :documentation_uri
+        attr_accessor :patch
+
+        def bulk
+          @bulk = Bulk.new
+          yield @bulk
+        end
 
         def build
           Scim::Shady::ServiceProviderConfiguration.new(to_json)
@@ -16,8 +22,25 @@ module Scim
           {
             'schemas' => [Schemas::SERVICE_PROVIDER_CONFIG],
             'documentationUri' => documentation_uri,
+            'patch' => {
+              "supported" => patch
+            },
+            'bulk' => @bulk.to_h,
           }
         end
+        class Bulk
+          attr_accessor :supported
+          attr_accessor :max_operations
+          attr_accessor :max_payload_size
+
+          def to_h
+            {
+              'supported' => supported,
+              'maxOperations' => max_operations,
+              'maxPayloadSize' => max_payload_size,
+            }
+          end
+        end
       end
     end
   end
lib/scim/shady/service_provider_configuration.rb
@@ -9,6 +9,22 @@ module Scim
         to_h['documentationUri']
       end
 
+      def patch
+        to_h['patch']['supported']
+      end
+
+      def bulk_supported
+        to_h['bulk']['supported']
+      end
+
+      def bulk_max_operations
+        to_h['bulk']['maxOperations']
+      end
+
+      def bulk_max_payload_size
+        to_h['bulk']['maxPayloadSize']
+      end
+
       def to_h
         @hash ||= JSON.parse(to_json)
       end
spec/scim/builders/service_provider_configuration_spec.rb
@@ -8,5 +8,26 @@ RSpec.describe Scim::Shady::Builders::ServiceProviderConfiguration do
       subject.documentation_uri = documentation_uri
       expect(subject.build.documentation_uri).to eql(documentation_uri)
     end
+
+    it 'can specitify patch support' do
+      subject.patch = false
+      expect(subject.build.patch).to be(false)
+
+      subject.patch = true
+      expect(subject.build.patch).to be(true)
+    end
+
+    it 'can configure bulk support' do
+      subject.bulk do |x|
+        x.supported = true
+        x.max_operations = 1_000
+        x.max_payload_size = 1_048_576
+      end
+
+      result = subject.build
+      expect(result.bulk_supported).to be(true)
+      expect(result.bulk_max_operations).to eql(1_000)
+      expect(result.bulk_max_payload_size).to eql(1_048_576)
+    end
   end
 end