Commit 249151c
Changed files (3)
lib
scim
kit
spec
scim
kit
lib/scim/kit/v2/configuration.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+module Scim
+ module Kit
+ module V2
+ class Configuration
+ class Builder
+ def service_provider_configuration(location:)
+ @sp_config = ServiceProviderConfiguration.new(location: location)
+ yield @sp_config
+ end
+
+ def apply_to(configuration)
+ configuration.service_provider_configuration = @sp_config
+ end
+ end
+
+ attr_accessor :service_provider_configuration
+
+ def initialize
+ builder = Builder.new
+ yield builder
+ builder.apply_to(self)
+ end
+ end
+ end
+ end
+end
lib/scim/kit/v2.rb
@@ -4,6 +4,7 @@ require 'scim/kit/v2/attributable'
require 'scim/kit/v2/attribute'
require 'scim/kit/v2/attribute_type'
require 'scim/kit/v2/authentication_scheme'
+require 'scim/kit/v2/configuration'
require 'scim/kit/v2/messages'
require 'scim/kit/v2/meta'
require 'scim/kit/v2/mutability'
spec/scim/kit/v2/configuration_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+RSpec.describe Scim::Kit::V2::Configuration do
+ subject do
+ described_class.new do |x|
+ x.service_provider_configuration(location: sp_location) do |y|
+ y.add_authentication(:oauthbearertoken)
+ y.change_password.supported = true
+ end
+ end
+ end
+
+ let(:sp_location) { FFaker::Internet.uri('https') }
+
+ specify { expect(subject.service_provider_configuration.meta.location).to eql(sp_location) }
+ specify { expect(subject.service_provider_configuration.authentication_schemes[0].type).to be(:oauthbearertoken) }
+ specify { expect(subject.service_provider_configuration.change_password.supported).to be(true) }
+end