Commit 4c7efd1

mo <mo.khan@gmail.com>
2018-01-14 19:14:08
render json.
1 parent 14e516f
Changed files (3)
lib
spec
lib/scim/shady/user.rb
@@ -12,9 +12,16 @@ module Scim
 
       class << self
         def build
-          user = new
-          yield user
-          user.to_h
+          resource = new
+          yield resource
+          resource.to_h
+        end
+
+        def build_json
+          hash = build do |resource|
+            yield resource
+          end
+          JSON.dump(hash)
         end
       end
     end
lib/scim/shady.rb
@@ -1,3 +1,4 @@
+require "json"
 require "time"
 
 require "scim/shady/resource"
spec/scim/user_spec.rb
@@ -27,5 +27,26 @@ RSpec.describe Scim::Shady::User do
       expect(result['meta']['location']).to eql(user_url)
       expect(result['meta']['version']).to eql(user_version)
     end
+
+    it 'produces valid json' do
+      result = subject.build_json do |builder|
+        builder.id = id
+        builder.username = username
+        builder.created_at = created_at
+        builder.updated_at = updated_at
+        builder.location = user_url
+        builder.version = user_version
+      end
+      result = JSON.parse(result)
+
+      expect(result['schemas']).to match_array([Scim::Shady::Schemas::USER])
+      expect(result['id']).to eql(id)
+      expect(result['userName']).to eql(username)
+      expect(result['meta']['resourceType']).to eql('User')
+      expect(result['meta']['created']).to eql(created_at.utc.iso8601)
+      expect(result['meta']['lastModified']).to eql(updated_at.utc.iso8601)
+      expect(result['meta']['location']).to eql(user_url)
+      expect(result['meta']['version']).to eql(user_version)
+    end
   end
 end