Skip to content

Commit 3ab203b

Browse files
committed
Use filter.ParseFilter() every where
1 parent a8d38a7 commit 3ab203b

File tree

2 files changed

+37
-36
lines changed

2 files changed

+37
-36
lines changed

internal/config/runtime.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ func (r *RuntimeConfig) UpdateRulesFromDatabase(ctx context.Context, db *icingad
393393
}
394394

395395
if rule.ObjectFilterExpr.Valid {
396-
f, err := filter.Parse(rule.ObjectFilterExpr.String)
396+
f, err := filter.ParseFilter(rule.ObjectFilterExpr.String)
397397
if err != nil {
398398
ruleLogger.Warnw("ignoring rule as parsing object_filter failed", zap.Error(err))
399399
rules[i] = nil

internal/filter/parser_test.go

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,48 +10,48 @@ func TestParser(t *testing.T) {
1010
t.Parallel()
1111

1212
t.Run("MissingLogicalOperatorsAfterConditionsAreDetected", func(t *testing.T) {
13-
_, err := Parse("(a=b|c=d)e=f")
13+
_, err := ParseFilter("(a=b|c=d)e=f")
1414

1515
expected := "invalid filter '(a=b|c=d)e=f', unexpected e at pos 10: Expected logical operator"
1616
assert.EqualError(t, err, expected, "Errors should be the same")
1717
})
1818

1919
t.Run("MissingLogicalOperatorsAfterOperatorsAreDetected", func(t *testing.T) {
20-
_, err := Parse("(a=b|c=d|)e=f")
20+
_, err := ParseFilter("(a=b|c=d|)e=f")
2121

2222
expected := "invalid filter '(a=b|c=d|)e=f', unexpected e at pos 11: Expected logical operator"
2323
assert.EqualError(t, err, expected, "Errors should be the same")
2424
})
2525

2626
t.Run("ParserIdentifiesInvalidExpression", func(t *testing.T) {
27-
_, err := Parse("col=(")
27+
_, err := ParseFilter("col=(")
2828
assert.EqualError(t, err, "invalid filter 'col=(', unexpected ( at pos 5", "Errors should be the same")
2929

30-
_, err = Parse("(((x=a)&y=b")
30+
_, err = ParseFilter("(((x=a)&y=b")
3131
assert.EqualError(t, err, "invalid filter '(((x=a)&y=b', missing 2 closing ')' at pos 11", "Errors should be the same")
3232

33-
_, err = Parse("(x=a)&y=b)")
33+
_, err = ParseFilter("(x=a)&y=b)")
3434
assert.EqualError(t, err, "invalid filter '(x=a)&y=b)', unexpected ) at pos 10", "Errors should be the same")
3535

36-
_, err = Parse("!(&")
36+
_, err = ParseFilter("!(&")
3737
assert.EqualError(t, err, "invalid filter '!(&', unexpected & at pos 3", "Errors should be the same")
3838

39-
_, err = Parse("!(!&")
39+
_, err = ParseFilter("!(!&")
4040
assert.EqualError(t, err, "invalid filter '!(!&', unexpected & at pos 4: operator level 1", "Errors should be the same")
4141

42-
_, err = Parse("!(|test")
42+
_, err = ParseFilter("!(|test")
4343
assert.EqualError(t, err, "invalid filter '!(|test', unexpected | at pos 3", "Errors should be the same")
4444

45-
_, err = Parse("foo&bar=(te(st)")
45+
_, err = ParseFilter("foo&bar=(te(st)")
4646
assert.EqualError(t, err, "invalid filter 'foo&bar=(te(st)', unexpected ( at pos 9", "Errors should be the same")
4747

48-
_, err = Parse("foo&bar=te(st)")
48+
_, err = ParseFilter("foo&bar=te(st)")
4949
assert.EqualError(t, err, "invalid filter 'foo&bar=te(st)', unexpected ( at pos 11", "Errors should be the same")
5050

51-
_, err = Parse("foo&bar=test)")
51+
_, err = ParseFilter("foo&bar=test)")
5252
assert.EqualError(t, err, "invalid filter 'foo&bar=test)', unexpected ) at pos 13", "Errors should be the same")
5353

54-
_, err = Parse("!()|&()&)")
54+
_, err = ParseFilter("!()|&()&)")
5555
assert.EqualError(t, err, "invalid filter '!()|&()&)', unexpected closing ')' at pos 9", "Errors should be the same")
5656
})
5757
}
@@ -60,60 +60,61 @@ func TestFilter(t *testing.T) {
6060
t.Parallel()
6161

6262
t.Run("ParserIdentifiesAllKindOfFilters", func(t *testing.T) {
63-
rule, err := Parse("foo=bar")
63+
rule, err := ParseFilter("foo=bar")
6464
assert.Nil(t, err, "There should be no errors but got: %s", err)
6565
assert.IsType(t, &Equal{}, rule)
6666

67-
rule, err = Parse("foo!=bar")
67+
rule, err = ParseFilter("foo!=bar")
6868
assert.Nil(t, err, "There should be no errors but got: %s", err)
6969
assert.IsType(t, &UnEqual{}, rule)
7070

71-
rule, err = Parse("foo=bar*")
71+
rule, err = ParseFilter("foo=bar*")
7272
assert.Nil(t, err, "There should be no errors but got: %s", err)
7373
assert.IsType(t, &Like{}, rule)
7474

75-
rule, err = Parse("foo!=bar*")
75+
rule, err = ParseFilter("foo!=bar*")
7676
assert.Nil(t, err, "There should be no errors but got: %s", err)
7777
assert.IsType(t, &Unlike{}, rule)
7878

79-
rule, err = Parse("foo<bar")
79+
rule, err = ParseFilter("foo<bar")
8080
assert.Nil(t, err, "There should be no errors but got: %s", err)
8181
assert.IsType(t, &LessThan{}, rule)
8282

83-
rule, err = Parse("foo<=bar")
83+
rule, err = ParseFilter("foo<=bar")
8484
assert.Nil(t, err, "There should be no errors but got: %s", err)
8585
assert.IsType(t, &LessThanOrEqual{}, rule)
8686

87-
rule, err = Parse("foo>bar")
87+
rule, err = ParseFilter("foo>bar")
8888
assert.Nil(t, err, "There should be no errors but got: %s", err)
8989
assert.IsType(t, &GreaterThan{}, rule)
9090

91-
rule, err = Parse("foo>=bar")
91+
rule, err = ParseFilter("foo>=bar")
9292
assert.Nil(t, err, "There should be no errors but got: %s", err)
9393
assert.IsType(t, &GreaterThanOrEqual{}, rule)
9494

95-
rule, err = Parse("foo=bar&bar=foo")
95+
rule, err = ParseFilter("foo=bar&bar=foo")
9696
assert.Nil(t, err, "There should be no errors but got: %s", err)
9797
assert.IsType(t, &All{}, rule)
9898

99-
rule, err = Parse("foo=bar|bar=foo")
99+
rule, err = ParseFilter("foo=bar|bar=foo")
100100
assert.Nil(t, err, "There should be no errors but got: %s", err)
101101
assert.IsType(t, &Any{}, rule)
102102

103-
rule, err = Parse("!(foo=bar|bar=foo)")
103+
rule, err = ParseFilter("!(foo=bar|bar=foo)")
104104
assert.Nil(t, err, "There should be no errors but got: %s", err)
105105
assert.IsType(t, &None{}, rule)
106106

107-
rule, err = Parse("!foo")
107+
rule, err = ParseFilter("!foo")
108108
assert.Nil(t, err, "There should be no errors but got: %s", err)
109109

110-
assert.Equal(t, &None{rules: []Filter{NewExists("foo")}}, rule)
110+
exists, _ := NewExists("foo")
111+
assert.Equal(t, &None{rules: []Filter{exists}}, rule)
111112

112-
rule, err = Parse("foo")
113+
rule, err = ParseFilter("foo")
113114
assert.Nil(t, err, "There should be no errors but got: %s", err)
114-
assert.Equal(t, NewExists("foo"), rule)
115+
assert.Equal(t, exists, rule)
115116

116-
rule, err = Parse("!(foo=bar|bar=foo)&(foo=bar|bar=foo)")
117+
rule, err = ParseFilter("!(foo=bar|bar=foo)&(foo=bar|bar=foo)")
117118
assert.Nil(t, err, "There should be no errors but got: %s", err)
118119

119120
expected := &All{rules: []Filter{
@@ -130,31 +131,31 @@ func TestFilter(t *testing.T) {
130131
})
131132

132133
t.Run("ParserIdentifiesSingleCondition", func(t *testing.T) {
133-
rule, err := Parse("foo=bar")
134+
rule, err := ParseFilter("foo=bar")
134135
assert.Nil(t, err, "There should be no errors but got: %s", err)
135136

136137
expected := &Equal{column: "foo", value: "bar"}
137138
assert.Equal(t, expected, rule, "Parser doesn't parse single condition correctly")
138139
})
139140

140141
t.Run("UrlEncodedFilterExpression", func(t *testing.T) {
141-
rule, err := Parse("col%3Cumn<val%3Cue")
142+
rule, err := ParseFilter("col%3Cumn<val%3Cue")
142143
assert.Nil(t, err, "There should be no errors but got: %s", err)
143144
assert.Equal(t, &LessThan{column: "col<umn", value: "val<ue"}, rule)
144145

145-
rule, err = Parse("col%7Cumn=val%7Cue")
146+
rule, err = ParseFilter("col%7Cumn=val%7Cue")
146147
assert.Nil(t, err, "There should be no errors but got: %s", err)
147148
assert.Equal(t, &Equal{column: "col|umn", value: "val|ue"}, rule)
148149

149-
rule, err = Parse("col%26umn<=val%26ue")
150+
rule, err = ParseFilter("col%26umn<=val%26ue")
150151
assert.Nil(t, err, "There should be no errors but got: %s", err)
151152
assert.Equal(t, &LessThanOrEqual{column: "col&umn", value: "val&ue"}, rule)
152153

153-
rule, err = Parse("col%28umn>val%28ue")
154+
rule, err = ParseFilter("col%28umn>val%28ue")
154155
assert.Nil(t, err, "There should be no errors but got: %s", err)
155156
assert.Equal(t, &GreaterThan{column: "col(umn", value: "val(ue"}, rule)
156157

157-
rule, err = Parse("col%29umn>=val%29ue")
158+
rule, err = ParseFilter("col%29umn>=val%29ue")
158159
assert.Nil(t, err, "There should be no errors but got: %s", err)
159160
assert.Equal(t, &GreaterThanOrEqual{column: "col)umn", value: "val)ue"}, rule)
160161
})
@@ -193,7 +194,7 @@ func FuzzParser(f *testing.F) {
193194
f.Add("col%29umn>val%29ue")
194195

195196
f.Fuzz(func(t *testing.T, expr string) {
196-
_, err := Parse(expr)
197+
_, err := ParseFilter(expr)
197198

198199
if strings.Count(expr, "(") != strings.Count(expr, ")") {
199200
assert.Error(t, err)

0 commit comments

Comments
 (0)