Commit abb5152
Changed files (5)
app
controllers
scim
spec
requests
scim
routing
app/controllers/scim/v2/service_providers_controller.rb
@@ -2,7 +2,30 @@ module Scim
module V2
class ServiceProvidersController < ::Scim::Controller
def show
- render json: { schemas: [Scim::Shady::Schemas::SERVICE_PROVIDER_CONFIG] }, status: :ok
+ render json: configuration.to_json, status: :ok
+ end
+
+ private
+
+ def configuration
+ Scim::Shady::ServiceProviderConfig.build do |x|
+ x.patch = true
+ x.bulk do |y|
+ y.supported = false
+ end
+ x.filter do |y|
+ y.supported = false
+ end
+ x.change_password_supported = false
+ x.sort_supported = false
+ x.etag_supported = false
+ x.add_authentication_scheme(:oauth_bearer_token)
+ x.meta do |y|
+ y.location = scim_v2_ServiceProviderConfig_url
+ y.created_at = y.updated_at = Time.now
+ y.version = 1
+ end
+ end
end
end
end
spec/requests/scim/v2/service_provider_config_spec.rb
@@ -9,5 +9,25 @@ describe "/ServiceProviderConfig" do
json = JSON.parse(response.body, symbolize_names: true)
expect(json[:schemas]).to match_array([Scim::Shady::Schemas::SERVICE_PROVIDER_CONFIG])
+ expect(json[:documentationUri]).to be_blank
+ expect(json[:patch][:supported]).to be(true)
+ expect(json[:bulk][:supported]).to be(false)
+ expect(json[:filter][:supported]).to be(false)
+ expect(json[:changePassword][:supported]).to be(false)
+ expect(json[:sort][:supported]).to be(false)
+ expect(json[:etag][:supported]).to be(false)
+ expect(json[:authenticationSchemes]).to match_array([
+ name: 'OAuth Bearer Token',
+ description: 'Authentication scheme using the OAuth Bearer Token Standard',
+ specUri: 'http://www.rfc-editor.org/info/rfc6750',
+ documentationUri: 'http://example.com/help/oauth.html',
+ type: 'oauthbearertoken',
+ primary: true,
+ ])
+ expect(json[:meta][:location]).to eql(scim_v2_ServiceProviderConfig_url)
+ expect(json[:meta][:resourceType]).to eql('ServiceProviderConfig')
+ expect(json[:meta][:created]).to be_present
+ expect(json[:meta][:lastModified]).to be_present
+ expect(json[:meta][:version]).to be_present
end
end
spec/routing/scim_spec.rb
@@ -15,7 +15,7 @@ describe "/scim" do
#it { expect(delete: "scim/v2/groups/#{id}").to route_to(controller: "scim/v2/groups", action: "destroy", id: id, format: :scim) }
#it { expect(get: "/scim/v2/me").to route_to(controller: 'hi') }
- it { expect(get: "scim/v2/ServiceProviderConfig").to route_to(controller: "scim/v2/service_providers", action: "index", format: :scim) }
+ it { expect(get: "scim/v2/ServiceProviderConfig").to route_to(controller: "scim/v2/service_providers", action: "show", format: :scim) }
it { expect(get: "scim/v2/ResourceTypes").to route_to(controller: "scim/v2/resource_types", action: "index", format: :scim) }
it { expect(get: "scim/v2/schemas").to route_to(controller: "scim/v2/schemas", action: "index", format: :scim) }
#it { expect(post: "scim/v2/bulk").to route_to(controller: "scim/v2/bulk", action: "update", format: :scim) }
Gemfile
@@ -67,6 +67,6 @@ gem 'rails-assets-bootstrap', source: 'https://rails-assets.org'
gem 'jwt'
gem 'activerecord-session_store'
gem "email_validator"
-gem 'scim-shady', "0.2.0"
+gem 'scim-shady', path: '../scim-shady'
gem 'spank'
gem 'webpacker'
Gemfile.lock
@@ -1,3 +1,9 @@
+PATH
+ remote: ../scim-shady
+ specs:
+ scim-shady (0.2.0)
+ activesupport (>= 4.2.0)
+
GEM
remote: https://rubygems.org/
remote: https://rails-assets.org/
@@ -200,8 +206,6 @@ GEM
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
- scim-shady (0.2.0)
- activesupport (>= 4.2.0)
selenium-webdriver (3.6.0)
childprocess (~> 0.5)
rubyzip (~> 1.0)
@@ -283,7 +287,7 @@ DEPENDENCIES
rspec-rails (~> 3.6)
saml-kit (= 1.0.1)
sass-rails (~> 5.0)
- scim-shady (= 0.2.0)
+ scim-shady!
selenium-webdriver
spank
spring