From d298e8778a142f5caa52f2657dab0a0b0103eba3 Mon Sep 17 00:00:00 2001 From: andronache Date: Tue, 24 Nov 2020 14:52:37 +0200 Subject: [PATCH] Modified rsrfilters.go and added tests for it --- utils/rsrfilters.go | 16 +++++++--------- utils/rsrfilters_test.go | 21 +++++++++++++++++++-- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/utils/rsrfilters.go b/utils/rsrfilters.go index 8d3bc61b3..71058618e 100644 --- a/utils/rsrfilters.go +++ b/utils/rsrfilters.go @@ -28,22 +28,22 @@ import ( func NewRSRFilter(fltrVal string) (rsrFltr *RSRFilter, err error) { rsrFltr = new(RSRFilter) if fltrVal == "" { - return rsrFltr, nil + return } if fltrVal[:1] == NegativePrefix { rsrFltr.negative = true fltrVal = fltrVal[1:] if fltrVal == "" { - return rsrFltr, nil + return } } rsrFltr.filterRule = fltrVal if fltrVal[:1] == DynamicDataPrefix { if rsrFltr.fltrRgxp, err = regexp.Compile(fltrVal[1:]); err != nil { - return nil, err + return } } - return rsrFltr, nil + return } // NewRSRFilterMustCompile is used mostly in tests @@ -141,13 +141,11 @@ func ParseRSRFilters(fldsStr, sep string) (RSRFilters, error) { func ParseRSRFiltersFromSlice(fltrStrs []string) (RSRFilters, error) { rsrFltrs := make(RSRFilters, len(fltrStrs)) for i, rlStr := range fltrStrs { - if rsrFltr, err := NewRSRFilter(rlStr); err != nil { + rsrFltr, err := NewRSRFilter(rlStr) + if err != nil { return nil, err - } else if rsrFltr == nil { - return nil, fmt.Errorf("Empty RSRFilter in rule: %s", rlStr) - } else { - rsrFltrs[i] = rsrFltr } + rsrFltrs[i] = rsrFltr } return rsrFltrs, nil } diff --git a/utils/rsrfilters_test.go b/utils/rsrfilters_test.go index fcdb8a885..986e75488 100644 --- a/utils/rsrfilters_test.go +++ b/utils/rsrfilters_test.go @@ -405,10 +405,27 @@ func TestParseRSRFiltersNil(t *testing.T) { } -func TestParseRSRFilterssPass(t *testing.T) { +func TestParseRSRFilterssPassZeroLength(t *testing.T) { err := new(RSRFilters).Pass("", false) if !reflect.DeepEqual(err, true) { t.Errorf("Expected ,received: <%+v>", err) } - +} + +func TestParseRSRFilterRules(t *testing.T) { + filter1, _ := NewRSRFilter("^rule1$") + filter2, _ := NewRSRFilter("^rule2$") + filters := RSRFilters{filter1, filter2} + result := filters.FilterRules() + if !reflect.DeepEqual(result, "^rule1$^rule2$") { + t.Errorf("Expected <^rule1$^rule2$> ,received: <%+v>", result) + } +} + +func TestParseRSRFiltersFromSliceError(t *testing.T) { + stringSlice := []string{"~(^_^", "^rule2$"} + _, err := ParseRSRFiltersFromSlice(stringSlice) + if err == nil || err.Error() != "error parsing regexp: missing closing ): `(^_^`" { + t.Errorf("Expected ,received: <%+v>", err) + } }