Commit 8e113cd

mokha <mokha@cisco.com>
2018-01-15 20:21:09
add meta to service provider config.
1 parent e1d0c60
lib/scim/shady/builders/metadata.rb
@@ -0,0 +1,24 @@
+module Scim
+  module Shady
+    module Builders
+      module Metadata
+        attr_accessor :created_at
+        attr_accessor :updated_at
+        attr_accessor :location
+        attr_accessor :version
+
+        def to_h
+          {
+            'meta' => {
+              'resourceType' => self.class.name.split(/::/).last,
+              'created' => created_at.to_time.utc.iso8601,
+              'lastModified' => updated_at.to_time.utc.iso8601,
+              'location' => location,
+              'version' => version,
+            },
+          }
+        end
+      end
+    end
+  end
+end
lib/scim/shady/builders/resource.rb
@@ -2,24 +2,18 @@ module Scim
   module Shady
     module Builders
       class Resource
+        include Metadata
         attr_accessor :id
-        attr_accessor :created_at
-        attr_accessor :updated_at
-        attr_accessor :location
-        attr_accessor :version
+
+        def initialize
+          @created_at = @updated_at = Time.now
+        end
 
         def to_h
-          {
+          super.merge({
             'schemas' => [],
             'id' => id,
-            'meta' => {
-              'resourceType' => self.class.name.split(/::/).last,
-              'created' => created_at.to_time.utc.iso8601,
-              'lastModified' => updated_at.to_time.utc.iso8601,
-              'location' => location,
-              'version' => version,
-            },
-          }
+          })
         end
       end
     end
lib/scim/shady/builders/service_provider_configuration.rb
@@ -2,6 +2,7 @@ module Scim
   module Shady
     module Builders
       class ServiceProviderConfiguration
+        include Metadata
         attr_accessor :documentation_uri
         attr_accessor :patch
         attr_accessor :change_password_supported
@@ -10,6 +11,7 @@ module Scim
 
         def initialize
           @authentication_schemes = []
+          @created_at = @updated_at = Time.now
         end
 
         def bulk
@@ -51,7 +53,7 @@ module Scim
         end
 
         def to_h
-          {
+          super.merge({
             'schemas' => [Schemas::SERVICE_PROVIDER_CONFIG],
             'documentationUri' => documentation_uri,
             'patch' => { "supported" => patch },
@@ -70,7 +72,7 @@ module Scim
               scheme['primary'] = true if index.zero?
               scheme
             end
-          }
+          })
         end
 
         class Bulk
lib/scim/shady/builders.rb
@@ -1,3 +1,4 @@
+require "scim/shady/builders/metadata"
 require "scim/shady/builders/resource"
 require "scim/shady/builders/service_provider_configuration"
 require "scim/shady/builders/user"
lib/scim/shady/metadata.rb
@@ -0,0 +1,21 @@
+module Scim
+  module Shady
+    module Metadata
+      def created
+        DateTime.parse(to_h['meta']['created'])
+      end
+
+      def last_modified
+        DateTime.parse(to_h['meta']['lastModified'])
+      end
+
+      def version
+        to_h['meta']['version']
+      end
+
+      def location
+        to_h['meta']['location']
+      end
+    end
+  end
+end
lib/scim/shady/resource.rb
@@ -1,6 +1,8 @@
 module Scim
   module Shady
     class Resource
+      include Metadata
+
       def initialize(json)
         @json = json
       end
@@ -9,22 +11,6 @@ module Scim
         to_h['id']
       end
 
-      def created
-        DateTime.parse(to_h['meta']['created'])
-      end
-
-      def last_modified
-        DateTime.parse(to_h['meta']['lastModified'])
-      end
-
-      def version
-        to_h['meta']['version']
-      end
-
-      def location
-        to_h['meta']['location']
-      end
-
       def to_h
         @json_hash ||= JSON.parse(to_json)
       end
lib/scim/shady/service_provider_configuration.rb
@@ -1,6 +1,8 @@
 module Scim
   module Shady
     class ServiceProviderConfiguration
+      include Metadata
+
       def initialize(json)
         @json = json
       end
lib/scim/shady.rb
@@ -2,6 +2,7 @@ require "json"
 require "time"
 
 require "scim/shady/builders"
+require "scim/shady/metadata"
 require "scim/shady/resource"
 require "scim/shady/schemas"
 require "scim/shady/service_provider_configuration"
spec/scim/builders/service_provider_configuration_spec.rb
@@ -89,8 +89,8 @@ RSpec.describe Scim::Shady::Builders::ServiceProviderConfiguration do
       result = subject.build
 
       expect(result.location).to eql(subject.location)
-      expect(result.created).to eql(subject.created)
-      expect(result.last_modified).to eql(subject.last_modified)
+      expect(result.created).to eql(DateTime.parse(subject.created_at.iso8601))
+      expect(result.last_modified).to eql(DateTime.parse(subject.updated_at.iso8601))
       expect(result.version).to eql(subject.version)
     end
   end