Commit f426f8b
Changed files (4)
app
controllers
scim
models
scim
config
spec
requests
scim
app/controllers/scim/v2/groups_controller.rb
@@ -0,0 +1,16 @@
+
+# frozen_string_literal: true
+
+module Scim
+ module V2
+ class GroupsController < ::Scim::Controller
+ def index
+ render json: {
+ schemas: [Scim::Shady::Messages::LIST_RESPONSE],
+ totalResults: 0,
+ Resources: [],
+ }.to_json, status: :ok
+ end
+ end
+ end
+end
app/models/scim/user_repository.rb
@@ -14,7 +14,12 @@ module SCIM
def create!(params)
password = SecureRandom.hex(32)
- mapper.map_from(User.create!(email: params[:userName], password: password))
+ mapper.map_from(
+ User.create!(
+ email: params[:userName],
+ password: password
+ )
+ )
end
def update!(id, params)
config/routes.rb
@@ -13,7 +13,7 @@ Rails.application.routes.draw do
post ".search", to: "search#index"
resources :users, only: [:index, :show, :create, :update, :destroy]
get :ServiceProviderConfig, to: "service_providers#show"
- #resources :groups
+ resources :groups, only: [:index]
resources :resource_types, only: [:index]
get :ResourceTypes, to: "resource_types#index"
resources :schemas, only: [:index]
spec/requests/scim/v2/groups_spec.rb
@@ -0,0 +1,26 @@
+require 'rails_helper'
+
+describe "/scim/v2/groups" do
+ let(:token) { SecureRandom.uuid }
+ let(:headers) do
+ {
+ 'Authorization' => "Bearer #{token}",
+ 'Accept' => 'application/scim+json',
+ 'Content-Type' => 'application/scim+json',
+ }
+ end
+
+ describe "GET /scim/v2/groups" do
+ context "when retrieving all groups" do
+ before { get '/scim/v2/groups', headers: headers }
+
+ specify { expect(response).to have_http_status(:ok) }
+ specify { expect(response.headers['Content-Type']).to eql('application/scim+json') }
+ specify { expect(response.body).to be_present }
+ let(:json) { JSON.parse(response.body, symbolize_names: true) }
+ specify { expect(json[:schemas]).to match_array([Scim::Shady::Messages::LIST_RESPONSE]) }
+ specify { expect(json[:totalResults]).to be_zero }
+ specify { expect(json[:Resources]).to be_empty }
+ end
+ end
+end