Commit 363108c
Changed files (5)
lib
scim
kit
spec
scim
kit
lib/scim/kit/v2/configuration.rb
@@ -46,6 +46,18 @@ module Scim
yield Builder.new(self) if block_given?
end
+
+ def load_from(base_url)
+ uri = URI.join(base_url, 'ServiceProviderConfig')
+ self.service_provider_configuration =
+ ServiceProviderConfiguration.parse(client.get(uri).body)
+ end
+
+ private
+
+ def client
+ @client ||= Net::Hippie::Client.new
+ end
end
end
end
lib/scim/kit.rb
@@ -4,6 +4,7 @@ require 'active_model'
require 'active_support/core_ext/hash/indifferent_access'
require 'json'
require 'logger'
+require 'net/hippie'
require 'pathname'
require 'tilt'
require 'tilt/jbuilder'
spec/scim/kit/v2/configuration_spec.rb
@@ -37,4 +37,19 @@ RSpec.describe Scim::Kit::V2::Configuration do
specify { expect(subject.schemas['User'].name).to eql('User') }
specify { expect(subject.schemas['User'].meta.location).to eql(user_schema_location) }
specify { expect(subject.schemas['User'].attributes[0].name).to eql('user_name') }
+
+ describe '#load_from' do
+ let(:base_url) { FFaker::Internet.uri('https') }
+ let(:service_provider_configuration) do
+ Scim::Kit::V2::ServiceProviderConfiguration.new(location: FFaker::Internet.uri('https'))
+ end
+
+ before do
+ stub_request(:get, "#{base_url}/ServiceProviderConfig")
+ .to_return(status: 200, body: service_provider_configuration.to_json)
+ subject.load_from(base_url)
+ end
+
+ specify { expect(subject.service_provider_configuration.to_h).to eql(service_provider_configuration.to_h) }
+ end
end
spec/spec_helper.rb
@@ -5,6 +5,7 @@ require 'scim/kit'
require 'ffaker'
require 'json'
require 'byebug'
+require 'webmock/rspec'
Scim::Kit.logger = Logger.new('/dev/null')
scim-kit.gemspec
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
spec.required_ruby_version = '>= 2.5.0'
spec.add_dependency 'activemodel', '>= 5.2.0'
+ spec.add_dependency 'net-hippie', '~> 0.2'
spec.add_dependency 'tilt', '~> 2.0'
spec.add_dependency 'tilt-jbuilder', '~> 0.7'
spec.add_development_dependency 'bundler', '~> 1.17'
@@ -40,4 +41,5 @@ Gem::Specification.new do |spec|
spec.add_development_dependency 'rspec', '~> 3.0'
spec.add_development_dependency 'rubocop', '~> 0.52'
spec.add_development_dependency 'rubocop-rspec', '~> 1.22'
+ spec.add_development_dependency 'webmock', '~> 3.5'
end