Commit 4061deb
Changed files (7)
lib
scim
spec
scim
lib/scim/shady/builders/service_provider_configuration.rb
@@ -0,0 +1,24 @@
+module Scim
+ module Shady
+ module Builders
+ class ServiceProviderConfiguration
+ attr_accessor :documentation_uri
+
+ def build
+ Scim::Shady::ServiceProviderConfiguration.new(to_json)
+ end
+
+ def to_json
+ JSON.generate(to_h)
+ end
+
+ def to_h
+ {
+ 'schemas' => [Schemas::SERVICE_PROVIDER_CONFIG],
+ 'documentationUri' => documentation_uri,
+ }
+ end
+ end
+ end
+ end
+end
lib/scim/shady/builders.rb
@@ -1,2 +1,3 @@
require "scim/shady/builders/resource"
+require "scim/shady/builders/service_provider_configuration"
require "scim/shady/builders/user"
lib/scim/shady/schemas.rb
@@ -1,6 +1,8 @@
module Scim
module Shady
class Schemas
+ GROUP = "urn:ietf:params:scim:schemas:core:2.0:Group"
+ SERVICE_PROVIDER_CONFIG = "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"
USER = "urn:ietf:params:scim:schemas:core:2.0:User"
end
end
lib/scim/shady/service_provider_configuration.rb
@@ -0,0 +1,21 @@
+module Scim
+ module Shady
+ class ServiceProviderConfiguration
+ def initialize(json)
+ @json = json
+ end
+
+ def documentation_uri
+ to_h['documentationUri']
+ end
+
+ def to_h
+ @hash ||= JSON.parse(to_json)
+ end
+
+ def to_json
+ @json
+ end
+ end
+ end
+end
lib/scim/shady.rb
@@ -4,6 +4,7 @@ require "time"
require "scim/shady/builders"
require "scim/shady/resource"
require "scim/shady/schemas"
+require "scim/shady/service_provider_configuration"
require "scim/shady/user"
require "scim/shady/version"
spec/scim/builders/service_provider_configuration_spec.rb
@@ -0,0 +1,12 @@
+RSpec.describe Scim::Shady::Builders::ServiceProviderConfiguration do
+ subject { described_class.new }
+
+ describe ".build" do
+ let(:documentation_uri) { FFaker::Internet.uri("https") }
+
+ it 'can specify the documentation url' do
+ subject.documentation_uri = documentation_uri
+ expect(subject.build.documentation_uri).to eql(documentation_uri)
+ end
+ end
+end
spec/scim/builders/user_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe Scim::Shady::Builders::User do
let(:user_version) { SecureRandom.uuid }
let(:username) { FFaker::Internet.user_name }
- it 'builds a scim user' do
+ it 'builds a minimal scim user' do
subject.id = id
subject.username = username
subject.created_at = created_at