Commit 707ad20

mo <mo.khan@gmail.com>
2018-01-13 22:47:24
use scim-shady to generate json hash
1 parent 9e366b4
Changed files (4)
app
controllers
models
views
scim
spec
requests
app/controllers/scim/v2/users_controller.rb
@@ -8,7 +8,7 @@ module Scim
         )
         response.headers['Content-Type'] = 'application/scim+json'
         response.headers['Location'] = scim_v2_users_url(@user)
-        render status: :created
+        render json: @user.to_scim(self), status: :created
       end
 
       private
app/models/user.rb
@@ -23,6 +23,17 @@ class User < ApplicationRecord
     nil
   end
 
+  def to_scim(url_helpers)
+    Scim::Shady::User.build do |x|
+      x.id = uuid
+      x.username = email
+      x.created_at = created_at
+      x.updated_at = updated_at
+      x.location = url_helpers.scim_v2_users_url(self)
+      x.version = lock_version
+    end
+  end
+
   private
 
   def access_token
app/views/scim/v2/users/create.jbuilder
@@ -1,10 +0,0 @@
-json.schemas [Scim::Shady::Schemas::USER]
-json.id @user.id
-json.userName @user.email
-json.meta do
-  json.resourceType "User"
-  json.created @user.created_at.iso8601
-  json.lastModified @user.updated_at.iso8601
-  json.location scim_v2_users_url(@user)
-  json.version @user.lock_version
-end
spec/requests/scim/v2/users_spec.rb
@@ -29,8 +29,8 @@ describe '/scim/v2/users' do
       expect(json[:meta][:resourceType]).to eql('User')
       expect(json[:meta][:created]).to be_present
       expect(json[:meta][:lastModified]).to be_present
-      expect(json[:meta][:location]).to be_present
       expect(json[:meta][:version]).to be_present
+      expect(json[:meta][:location]).to be_present
     end
   end
 end