Commit 8e113cd
Changed files (9)
lib
spec
scim
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