Commit dd3febc
Changed files (5)
lib
scim
spec
scim
lib/scim/kit/v2/templates/service_provider_configuration.json.jbuilder
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+json.key_format! camelize: :lower
+json.schemas [Scim::Kit::V2::Schema::SERVICE_PROVIDER_CONFIGURATION]
+json.documentation_uri documentation_uri
+json.patch do
+ json.supported false
+end
+json.bulk do
+ json.supported false
+end
+json.filter do
+ json.supported false
+end
+json.change_password do
+ json.supported false
+end
+json.sort do
+ json.supported false
+end
+json.etag do
+ json.supported false
+end
+json.authentication_schemes []
lib/scim/kit/v2/schema.rb
@@ -9,6 +9,7 @@ module Scim
ERROR = 'urn:ietf:params:scim:api:messages:2.0:Error'
GROUP = 'urn:ietf:params:scim:schemas:core:2.0:Group'
RESOURCE_TYPE = 'urn:ietf:params:scim:schemas:core:2.0:ResourceType'
+ SERVICE_PROVIDER_CONFIGURATION = 'urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig'
USER = 'urn:ietf:params:scim:schemas:core:2.0:User'
attr_reader :id, :name, :location, :attributes
lib/scim/kit/v2/service_provider_configuration.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module Scim
+ module Kit
+ module V2
+ # Represents a scim Service Provider Configuration
+ class ServiceProviderConfiguration
+ include Templatable
+ attr_accessor :documentation_uri
+ end
+ end
+ end
+end
lib/scim/kit.rb
@@ -12,6 +12,7 @@ require 'scim/kit/v2/mutability'
require 'scim/kit/v2/resource_type'
require 'scim/kit/v2/returned'
require 'scim/kit/v2/schema'
+require 'scim/kit/v2/service_provider_configuration'
require 'scim/kit/v2/uniqueness'
module Scim
spec/scim/kit/v2/service_provider_configuration_spec.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+RSpec.describe Scim::Kit::V2::ServiceProviderConfiguration do
+ describe "#to_json" do
+ let(:result) { JSON.parse(subject.to_json, symbolize_names: true) }
+
+ specify { expect(result[:schemas]).to match_array(["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"]) }
+ specify { expect(result[:documentationUri]).to be_blank }
+ specify { expect(result[:patch][:supported]).to be(false) }
+ specify { expect(result[:bulk][:supported]).to be(false) }
+ specify { expect(result[:filter][:supported]).to be(false) }
+ specify { expect(result[:changePassword][:supported]).to be(false) }
+ specify { expect(result[:sort][:supported]).to be(false) }
+ specify { expect(result[:etag][:supported]).to be(false) }
+ specify { expect(result[:authenticationSchemes]).to be_empty }
+
+ context "with documentation uri" do
+ before do
+ subject.documentation_uri = FFaker::Internet.uri('https')
+ end
+
+ specify { expect(result[:documentationUri]).to eql(subject.documentation_uri) }
+ end
+ end
+end