diff --git a/lib/jcr/check_groups.rb b/lib/jcr/check_groups.rb index 272fa66..17b970d 100644 --- a/lib/jcr/check_groups.rb +++ b/lib/jcr/check_groups.rb @@ -56,7 +56,7 @@ def self.disallowed_group_in_value? node, mapping disallowed_group_in_value?( groupee[:group_rule], mapping ) elsif groupee[:target_rule_name] trule = get_name_mapping( groupee[:target_rule_name][:rule_name], mapping ) - disallowed_group_in_value?( trule[:rule], mapping ) + disallowed_group_in_value?( trule, mapping ) elsif groupee[:member_rule] raise_group_error( "groups in value rules cannot have member rules", groupee[:member_rule] ) elsif groupee[:object_rule] @@ -132,9 +132,7 @@ def self.disallowed_group_in_array? node, mapping disallowed_group_in_array?( groupee[:group_rule], mapping ) elsif groupee[:target_rule_name] trule = get_name_mapping( groupee[:target_rule_name][:rule_name], mapping ) - if trule[:group_rule] - disallowed_group_in_array?( trule[:group_rule], mapping ) - end + disallowed_group_in_array?( trule, mapping ) elsif groupee[:member_rule] raise_group_error( "groups in array rules cannot have member rules", groupee[:member_rule] ) else @@ -169,9 +167,7 @@ def self.disallowed_group_in_object? node, mapping disallowed_group_in_object?( groupee[:group_rule], mapping ) elsif groupee[:target_rule_name] trule = get_name_mapping( groupee[:target_rule_name][:rule_name], mapping ) - if trule[:group_rule] - disallowed_group_in_object?( trule[:group_rule], mapping ) - end + disallowed_group_in_object?( trule, mapping ) elsif groupee[:array_rule] raise_group_error( "groups in object rules cannot have array rules", groupee[:member_rule] ) elsif groupee[:object_rule] diff --git a/spec/check_groups_spec.rb b/spec/check_groups_spec.rb index 41c636f..998bbbd 100644 --- a/spec/check_groups_spec.rb +++ b/spec/check_groups_spec.rb @@ -169,6 +169,13 @@ expect{ JCR.check_groups( tree, mapping ) }.to raise_error JCR::JcrValidatorError end + it 'should error with array with group referencing a member' do + tree = JCR.parse( '$t=[$g] $g=($m) $m="foo":string' ) + mapping = JCR.map_rule_names( tree ) + JCR.check_rule_target_names( tree, mapping ) + expect{ JCR.check_groups( tree, mapping ) }.to raise_error JCR::JcrValidatorError + end + # # object rule tests # @@ -263,4 +270,11 @@ expect{ JCR.check_groups( tree, mapping ) }.to raise_error JCR::JcrValidatorError end + it 'should error with group with both object-rule' do + tree = JCR.parse( '$t={$g} $g=($m) $m={"foo":string}' ) + mapping = JCR.map_rule_names( tree ) + JCR.check_rule_target_names( tree, mapping ) + expect{ JCR.check_groups( tree, mapping ) }.to raise_error JCR::JcrValidatorError + end + end