Commit d3c3421

mokha <mokha@cisco.com>
2019-01-12 00:19:17
disable meta and ids unless present
1 parent e734114
Changed files (4)
lib/scim/kit/v2/templates/resource.json.jbuilder
@@ -1,12 +1,14 @@
 # frozen_string_literal: true
 
 json.key_format! camelize: :lower
-json.meta do
-  render meta, json: json
+if meta.location
+  json.meta do
+    render meta, json: json
+  end
 end
 json.schemas schemas.map(&:id)
-json.id id
-json.external_id external_id
+json.id id if id
+json.external_id external_id if external_id
 schemas.each do |schema|
   if schema.core?
     schema.attributes.each do |type|
lib/scim/kit/v2/meta.rb
@@ -17,6 +17,10 @@ module Scim
           @created = @last_modified = Time.now
           @version = @created.to_i
         end
+
+        def disable_timestamps
+          @version = @created = @last_modified = nil
+        end
       end
     end
   end
lib/scim/kit/v2/resource.rb
@@ -18,6 +18,7 @@ module Scim
 
         def initialize(schemas:, location:)
           @meta = Meta.new(schemas[0].name, location)
+          @meta.disable_timestamps
           @schemas = schemas
           schemas.each do |schema|
             define_attributes_for(schema.attributes)
spec/scim/kit/v2/resource_spec.rb
@@ -158,4 +158,12 @@ RSpec.describe Scim::Kit::V2::Resource do
       specify { expect(subject.errors[:hero]).to be_present }
     end
   end
+
+  context 'when submitting new record' do
+    subject { described_class.new(schemas: schemas, location: nil) }
+
+    specify { expect(subject.as_json.key?(:meta)).to be(false) }
+    specify { expect(subject.as_json.key?(:id)).to be(false) }
+    specify { expect(subject.as_json.key?(:externalId)).to be(false) }
+  end
 end