Commit 4061deb

mo <mo.khan@gmail.com>
2018-01-14 20:28:34
generate service provider config.
1 parent 705d35c
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