Skip to content

Commit

Permalink
Merge 8bc63c8 into 1a5923b
Browse files Browse the repository at this point in the history
  • Loading branch information
aaronfuj committed Mar 29, 2022
2 parents 1a5923b + 8bc63c8 commit 0c299b2
Show file tree
Hide file tree
Showing 5 changed files with 1,779 additions and 168 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

To build hippo you should use [Eathly](https://earthly.dev/)
```
eartly +all
earthly +all
```

That will regenerate propobuf files and run build + test process.
That will regenerate protobuf files and run build + test process.
112 changes: 112 additions & 0 deletions tag_criteria_validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,118 @@ func (c *TagCriteria) Validate(isPopulator bool) (bool, map[string]string) {
hasCriteria = true
}
}
if len(c.Str17) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str17); !success {
ret["str17"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str18) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str18); !success {
ret["str18"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str19) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str19); !success {
ret["str19"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str20) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str20); !success {
ret["str20"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str21) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str21); !success {
ret["str21"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str22) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str22); !success {
ret["str22"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str23) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str23); !success {
ret["str23"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str24) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str24); !success {
ret["str24"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str25) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str25); !success {
ret["str25"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str26) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str26); !success {
ret["str26"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str27) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str27); !success {
ret["str27"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str28) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str28); !success {
ret["str28"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str29) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str29); !success {
ret["str29"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str30) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str30); !success {
ret["str30"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str31) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str31); !success {
ret["str31"] = errMsg
} else {
hasCriteria = true
}
}
if len(c.Str32) > 0 {
if success, errMsg := validateFlexStringCriteria(c.Str32); !success {
ret["str32"] = errMsg
} else {
hasCriteria = true
}
}

if len(c.Int00) > 0 {
if _, errMsg := NewFlexUint32RangesFromStrings(c.Int00); errMsg != "" {
Expand Down
112 changes: 112 additions & 0 deletions tag_criteria_validate_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package hippo

import (
"fmt"
"testing"

"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -41,3 +42,114 @@ func TestSanitizeBGPASPaths2(t *testing.T) {
assert.Equal(t, "_(19|62|81|188|210|264|549|555|784|792|794|803|1280|1313)_", sanitizedASPaths[0])
assert.Equal(t, "", errMessage)
}

func Test_validateFlexStringCriteria(t *testing.T) {
type args struct {
flexCriteria []FlexStringCriteria
}
tests := []struct {
name string
args args
want bool
}{
{
"simple_valid",
args{flexCriteria: []FlexStringCriteria{
{Action: FlexStringActionExact, Value: "exact match"},
{Action: FlexStringActionPrefix, Value: "prefix match"},
}},
true,
},
{
"invalid_action",
args{flexCriteria: []FlexStringCriteria{
{Action: "invalid_action", Value: "bad criteria"},
}},
false,
},
{
"mixed_with_no_value",
args{flexCriteria: []FlexStringCriteria{
{Action: FlexStringActionExact, Value: "valid value"},
{Action: FlexStringActionPrefix, Value: ""},
}},
false,
},
{
"too_long",
args{flexCriteria: []FlexStringCriteria{
{
Action: FlexStringActionExact,
Value: `this is a value that is going to be way too long, in fact it will be over 200 characters ` +
`long which is beyond the maximum supported length of a value. Enjoy reading this really ` +
`long string as a test case to ensure validation works as expected`,
},
}},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
isValid, errorString := validateFlexStringCriteria(tt.args.flexCriteria)
if isValid != tt.want {
t.Errorf("validateFlexStringCriteria() isValid = %v, want %v", isValid, tt.want)
}

if tt.want {
assert.Equal(t, 0, len(errorString), "expected an empty error")
} else {
assert.NotEqual(t, 0, len(errorString), "expected non empty error")
}
})
}
}

func TestTagCriteria_ValidateStrings(t *testing.T) {
invalidCriteria := []FlexStringCriteria{
{Action: "invalid_action", Value: "bad criteria"},
}
c := TagCriteria{
Str00: invalidCriteria,
Str01: invalidCriteria,
Str02: invalidCriteria,
Str03: invalidCriteria,
Str04: invalidCriteria,
Str05: invalidCriteria,
Str06: invalidCriteria,
Str07: invalidCriteria,
Str08: invalidCriteria,
Str09: invalidCriteria,
Str10: invalidCriteria,
Str11: invalidCriteria,
Str12: invalidCriteria,
Str13: invalidCriteria,
Str14: invalidCriteria,
Str15: invalidCriteria,
Str16: invalidCriteria,
Str17: invalidCriteria,
Str18: invalidCriteria,
Str19: invalidCriteria,
Str20: invalidCriteria,
Str21: invalidCriteria,
Str22: invalidCriteria,
Str23: invalidCriteria,
Str24: invalidCriteria,
Str25: invalidCriteria,
Str26: invalidCriteria,
Str27: invalidCriteria,
Str28: invalidCriteria,
Str29: invalidCriteria,
Str30: invalidCriteria,
Str31: invalidCriteria,
Str32: invalidCriteria,
}

isValid, errors := c.Validate(true)
assert.False(t, isValid)

for i := 0; i <= 32; i++ {
field := fmt.Sprintf("str%02d", i)
_, errorFound := errors[field]
assert.True(t, errorFound, "missing expected error for %s", field)
}
}
Loading

0 comments on commit 0c299b2

Please sign in to comment.