Commit 4c7efd1
Changed files (3)
spec
scim
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