Commit d22635c
Changed files (4)
app
controllers
scim
views
scim
v2
spec
requests
scim
app/controllers/scim/v2/users_controller.rb
@@ -9,11 +9,8 @@ module Scim
end
def index
- render json: {
- schemas: [Scim::Kit::V2::Messages::LIST_RESPONSE],
- totalResults: 0,
- Resources: [],
- }.to_json, status: :ok
+ @users = User.all.limit(25)
+ render formats: :scim, status: :ok
end
def show
app/views/scim/v2/users/_user.scim.jbuilder
@@ -1,23 +1,23 @@
# frozen_string_literal: true
json.schemas ["urn:ietf:params:scim:schemas:core:2.0:User"]
-json.id @user.to_param
+json.id user.to_param
json.meta do
json.resourceType 'User'
- json.created @user.created_at.iso8601
- json.lastModified @user.updated_at.iso8601
+ json.created user.created_at.iso8601
+ json.lastModified user.updated_at.iso8601
json.version response.headers['ETag']
- json.location scim_v2_user_url(id: @user.to_param)
+ json.location scim_v2_user_url(id: user.to_param)
end
-json.userName @user.email
+json.userName user.email
json.name do
- json.formatted @user.email
- json.familyName @user.email
- json.givenName @user.email
+ json.formatted user.email
+ json.familyName user.email
+ json.givenName user.email
end
-json.displayName @user.email
-json.locale @user.locale
-json.timezone @user.timezone
+json.displayName user.email
+json.locale user.locale
+json.timezone user.timezone
json.active true
-json.emails [{ value: @user.email, primary: true }]
+json.emails [{ value: user.email, primary: true }]
json.groups []
app/views/scim/v2/users/index.scim.jbuilder
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+json.schemas [Scim::Kit::V2::Messages::LIST_RESPONSE]
+json.totalResults @users.count
+json.Resources do
+ json.array! @users do |user|
+ json.partial! user, as: :user
+ end
+end
spec/requests/scim/v2/users_spec.rb
@@ -108,16 +108,19 @@ describe '/scim/v2/users' do
end
describe "GET /scim/v2/users" do
- let(:json) { JSON.parse(response.body, symbolize_names: true) }
+ context "when fetching all users" do
+ let(:json) { JSON.parse(response.body, symbolize_names: true) }
+ let!(:user) { create(:user) }
- before { get "/scim/v2/users?attributes=userName", headers: headers }
+ before { get "/scim/v2/users", 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 }
- specify { expect(json[:schemas]).to match_array([Scim::Kit::V2::Messages::LIST_RESPONSE]) }
- specify { expect(json[:totalResults]).to be_zero }
- specify { expect(json[:Resources]).to be_empty }
+ 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 }
+ specify { expect(json[:schemas]).to match_array([Scim::Kit::V2::Messages::LIST_RESPONSE]) }
+ specify { expect(json[:totalResults]).to be(1) }
+ specify { expect(json[:Resources]).not_to be_empty }
+ end
end
describe "PUT /scim/v2/users" do