Commit e06db66
Changed files (3)
lib
scim
spec
scim
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