Commit ef2a594

mokha <mokha@cisco.com>
2019-01-13 04:24:46
do not return fields that are restricted to the server
1 parent 1fcc324
Changed files (2)
lib
scim
spec
lib/scim/kit/v2/attribute.rb
@@ -32,15 +32,27 @@ module Scim
         end
 
         def renderable?
-          return false if read_only? && _resource.mode?(:client)
-          return false if write_only? &&
-                          (_resource.mode?(:server) || _value.blank?)
+          return false if server_only?
+          return false if client_only?
+          return false if restricted?
 
           true
         end
 
         private
 
+        def server_only?
+          read_only? && _resource.mode?(:client)
+        end
+
+        def client_only?
+          write_only? && (_resource.mode?(:server) || _value.blank?)
+        end
+
+        def restricted?
+          _resource.mode?(:server) && type.returned == Returned::NEVER
+        end
+
         def presence_of_value
           return unless type.required && _value.blank?
 
spec/scim/kit/v2/attribute_spec.rb
@@ -282,7 +282,7 @@ RSpec.describe Scim::Kit::V2::Attribute do
     context 'when returned type is `never`' do
       before { type.returned = :never }
 
-      xspecify { expect(subject).not_to be_renderable }
+      specify { expect(subject).not_to be_renderable }
     end
   end