206 lines
3.8 KiB
Go
206 lines
3.8 KiB
Go
package config
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSeverity_Validate(t *testing.T) {
|
|
testCases := []struct {
|
|
desc string
|
|
severity *Severity
|
|
}{
|
|
{
|
|
desc: "default with rules",
|
|
severity: &Severity{
|
|
Default: "high",
|
|
Rules: []SeverityRule{
|
|
{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
Path: "test",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
desc: "default without rules",
|
|
severity: &Severity{
|
|
Default: "high",
|
|
},
|
|
},
|
|
{
|
|
desc: "same severity between default and rule",
|
|
severity: &Severity{
|
|
Default: "high",
|
|
Rules: []SeverityRule{
|
|
{
|
|
Severity: "high",
|
|
BaseRule: BaseRule{
|
|
Path: "test",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
test := test
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := test.severity.Validate()
|
|
require.NoError(t, err)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSeverity_Validate_error(t *testing.T) {
|
|
testCases := []struct {
|
|
desc string
|
|
severity *Severity
|
|
expected string
|
|
}{
|
|
{
|
|
desc: "missing default severity",
|
|
severity: &Severity{
|
|
Default: "",
|
|
Rules: []SeverityRule{
|
|
{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
Path: "test",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expected: "can't set severity rule option: no default severity defined",
|
|
},
|
|
{
|
|
desc: "missing rule severity",
|
|
severity: &Severity{
|
|
Default: "high",
|
|
Rules: []SeverityRule{
|
|
{
|
|
BaseRule: BaseRule{
|
|
Path: "test",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expected: "error in severity rule #0: severity should be set",
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
test := test
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := test.severity.Validate()
|
|
require.EqualError(t, err, test.expected)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSeverityRule_Validate(t *testing.T) {
|
|
rule := &SeverityRule{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
Path: "test",
|
|
},
|
|
}
|
|
|
|
err := rule.Validate()
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestSeverityRule_Validate_error(t *testing.T) {
|
|
testCases := []struct {
|
|
desc string
|
|
rule *SeverityRule
|
|
expected string
|
|
}{
|
|
{
|
|
desc: "missing severity",
|
|
rule: &SeverityRule{
|
|
BaseRule: BaseRule{
|
|
Path: "test",
|
|
},
|
|
},
|
|
expected: "severity should be set",
|
|
},
|
|
{
|
|
desc: "empty rule",
|
|
rule: &SeverityRule{
|
|
Severity: "low",
|
|
},
|
|
expected: "at least 1 of (text, source, path[-except], linters) should be set",
|
|
},
|
|
{
|
|
desc: "invalid path rule",
|
|
rule: &SeverityRule{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
Path: "**test",
|
|
},
|
|
},
|
|
expected: "invalid path regex: error parsing regexp: missing argument to repetition operator: `*`",
|
|
},
|
|
{
|
|
desc: "invalid path-except rule",
|
|
rule: &SeverityRule{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
PathExcept: "**test",
|
|
},
|
|
},
|
|
expected: "invalid path-except regex: error parsing regexp: missing argument to repetition operator: `*`",
|
|
},
|
|
{
|
|
desc: "invalid text rule",
|
|
rule: &SeverityRule{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
Text: "**test",
|
|
},
|
|
},
|
|
expected: "invalid text regex: error parsing regexp: missing argument to repetition operator: `*`",
|
|
},
|
|
{
|
|
desc: "invalid source rule",
|
|
rule: &SeverityRule{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
Source: "**test",
|
|
},
|
|
},
|
|
expected: "invalid source regex: error parsing regexp: missing argument to repetition operator: `*`",
|
|
},
|
|
{
|
|
desc: "path and path-expect",
|
|
rule: &SeverityRule{
|
|
Severity: "low",
|
|
BaseRule: BaseRule{
|
|
Path: "test",
|
|
PathExcept: "test",
|
|
},
|
|
},
|
|
expected: "path and path-except should not be set at the same time",
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
test := test
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := test.rule.Validate()
|
|
require.EqualError(t, err, test.expected)
|
|
})
|
|
}
|
|
}
|