Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
119 lines
2.2 KiB
Go
119 lines
2.2 KiB
Go
package actionlog
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestPolicyMatchers(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
actn *Action
|
|
mtch policyMatcher
|
|
want bool
|
|
}{
|
|
{
|
|
"simple any",
|
|
&Action{},
|
|
NewPolicyAny(),
|
|
false,
|
|
},
|
|
{
|
|
"simple all",
|
|
&Action{},
|
|
NewPolicyAll(),
|
|
true,
|
|
},
|
|
{
|
|
"should match resource",
|
|
&Action{Resource: "foo"},
|
|
NewPolicyMatchResource("foo"),
|
|
true,
|
|
},
|
|
{
|
|
"should not match resource",
|
|
&Action{Resource: "bar"},
|
|
NewPolicyMatchResource("foo"),
|
|
false,
|
|
},
|
|
{
|
|
"should match one of resource",
|
|
&Action{Resource: "baz"},
|
|
NewPolicyMatchResource("foo", "bar", "baz"),
|
|
true,
|
|
},
|
|
{
|
|
"should match action",
|
|
&Action{Action: "foo"},
|
|
NewPolicyMatchAction("foo"),
|
|
true,
|
|
},
|
|
{
|
|
"should not match action",
|
|
&Action{Action: "bar"},
|
|
NewPolicyMatchAction("foo"),
|
|
false,
|
|
},
|
|
{
|
|
"should match one of action",
|
|
&Action{Action: "baz"},
|
|
NewPolicyMatchAction("foo", "bar", "baz"),
|
|
true,
|
|
},
|
|
{
|
|
"should match severity",
|
|
&Action{Severity: Emergency},
|
|
NewPolicyMatchSeverity(Emergency),
|
|
true,
|
|
},
|
|
{
|
|
"should not match severity",
|
|
&Action{Severity: Debug},
|
|
NewPolicyMatchSeverity(Alert),
|
|
false,
|
|
},
|
|
{
|
|
"should match one of severity",
|
|
&Action{Severity: Warning},
|
|
NewPolicyMatchSeverity(Emergency, Debug, Warning),
|
|
true,
|
|
},
|
|
{
|
|
"should not match one of severity",
|
|
&Action{Severity: Info},
|
|
NewPolicyNegate(NewPolicyMatchSeverity(Emergency, Debug, Warning)),
|
|
true,
|
|
},
|
|
{
|
|
"complex match",
|
|
&Action{Severity: Warning, Resource: "foo", Action: "do"},
|
|
NewPolicyAll(
|
|
NewPolicyMatchResource("foo"),
|
|
NewPolicyMatchAction("do"),
|
|
NewPolicyMatchSeverity(Warning),
|
|
),
|
|
true,
|
|
},
|
|
{
|
|
"complex miss",
|
|
&Action{Severity: Warning, Resource: "bar", Action: "do"},
|
|
NewPolicyAll(
|
|
NewPolicyMatchResource("foo"),
|
|
NewPolicyMatchAction("do"),
|
|
NewPolicyMatchSeverity(Warning),
|
|
),
|
|
false,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if tt.want != tt.mtch.Match(tt.actn) {
|
|
if tt.want {
|
|
t.Errorf("expecting to match")
|
|
} else {
|
|
t.Errorf("expecting not to match ")
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|