Commit 1ce0672

mo <mo.khan@gmail.com>
2019-01-04 23:24:51
with etag support
1 parent 5ef4d24
lib/scim/kit/v2/templates/service_provider_configuration.json.jbuilder
@@ -19,7 +19,7 @@ json.sort do
   json.supported false
 end
 json.etag do
-  json.supported false
+  render etag, json: json
 end
 json.authentication_schemes authentication_schemes do |authentication_scheme|
   render authentication_scheme, json: json
lib/scim/kit/v2/templates/supportable.json.jbuilder
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+json.supported supported
lib/scim/kit/v2/service_provider_configuration.rb
@@ -10,11 +10,13 @@ module Scim
         attr_accessor :documentation_uri
         attr_accessor :created, :last_modified, :version
         attr_reader :authentication_schemes
+        attr_reader :etag
 
         def initialize(location:)
           @location = location
           @version = @created = @last_modified = Time.now
           @authentication_schemes = []
+          @etag = Supportable.new
         end
 
         def add_authentication(type)
lib/scim/kit/v2/supportable.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Scim
+  module Kit
+    module V2
+      class Supportable
+        include Templatable
+
+        attr_accessor :supported
+
+        def initialize
+          @supported = false
+        end
+      end
+    end
+  end
+end
lib/scim/kit.rb
@@ -14,6 +14,7 @@ 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/supportable'
 require 'scim/kit/v2/uniqueness'
 
 module Scim
spec/scim/kit/v2/service_provider_configuration_spec.rb
@@ -68,5 +68,13 @@ RSpec.describe Scim::Kit::V2::ServiceProviderConfiguration do
       specify { expect(result[:authenticationSchemes][0][:documentationUri]).to eql('http://example.com/help/custom.html') }
       specify { expect(result[:authenticationSchemes][0][:type]).to eql('custom') }
     end
+
+    context "with etag support" do
+      before do
+        subject.etag.supported = true
+      end
+
+      specify { expect(result[:etag][:supported]).to be(true) }
+    end
   end
 end