Commit 4d8cc8e

mokha <mokha@cisco.com>
2019-05-10 21:55:07
allow compValue to repeat
1 parent d02cc08
Changed files (2)
lib
scim
spec
scim
lib/scim/kit/v2/parser.rb
@@ -43,7 +43,7 @@ subAttr   = "." ATTRNAME
         rule(:valFilter) { attrExp | logExp | (not_op? >> lparen >> valFilter >> rparen) }
         rule(:attrExp) { (attrPath >> space >> presence) | (attrPath >> space >> compareOp >> space >> quote >> compValue >> quote) }
         rule(:logExp) { filter >> space >> (and_op | or_op) >> space >> filter }
-        rule(:compValue) { falsey | null | truthy | number | string | scim_schema_uri }
+        rule(:compValue) { (falsey | null | truthy | number | string | scim_schema_uri).repeat(1) }
         rule(:compareOp) { equal | not_equal | contains | starts_with | ends_with | greater_than | less_than | less_than_equals | greater_than_equals }
         rule(:attrPath) { scim_schema_uri | attrname >> subAttr.maybe }
         rule(:attrname) { alpha >> nameChar.repeat(1) }
spec/scim/kit/v2/parser_spec.rb
@@ -5,30 +5,34 @@ RSpec.describe Scim::Kit::V2::Parser do
 
   [
     'userName',
-    #'name.familyName',
-    #'urn:ietf:params:scim:schemas:core:2.0:User:userName',
-    #'meta.lastModified',
-    #'schemas',
+    'name.familyName',
+    'urn:ietf:params:scim:schemas:core:2.0:User:userName',
+    'meta.lastModified',
+    'schemas',
   ].each do |attribute|
     [
       "eq",
-      #"ne",
-      #"co",
-      #"sw",
-      #"ew",
-      #"gt",
-      #"lt",
-      #"ge",
-      #"le"
+      "ne",
+      "co",
+      "sw",
+      "ew",
+      "gt",
+      "lt",
+      "ge",
+      "le"
     ].each do |operator|
       [
-        #"bjensen",
-        #"O'Malley",
-        #"J",
-        #"2011-05-13T04:42:34Z",
+        "bjensen",
+        "O'Malley",
+        "J",
+        "2011-05-13T04:42:34Z",
         "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
       ].each do |value|
-        specify { expect(subject).to parse(%Q(#{attribute} #{operator} \"#{value}\")) }
+        let(:query) { %Q(#{attribute} #{operator} \"#{value}\") }
+        specify { expect(subject).to parse(query) }
+        specify do
+          expect(subject.parse_with_debug(query)).to be_truthy
+        end
       end
     end
   end