|
|
@@ -5,6 +5,7 @@ package syspolicy
|
|
|
|
|
|
import (
|
|
|
"errors"
|
|
|
+ "slices"
|
|
|
"testing"
|
|
|
"time"
|
|
|
)
|
|
|
@@ -408,6 +409,63 @@ func TestGetDuration(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func TestGetStringArray(t *testing.T) {
|
|
|
+ tests := []struct {
|
|
|
+ name string
|
|
|
+ key Key
|
|
|
+ handlerValue []string
|
|
|
+ handlerError error
|
|
|
+ defaultValue []string
|
|
|
+ wantValue []string
|
|
|
+ wantError error
|
|
|
+ }{
|
|
|
+ {
|
|
|
+ name: "read existing value",
|
|
|
+ key: AllowedSuggestedExitNodes,
|
|
|
+ handlerValue: []string{"foo", "bar"},
|
|
|
+ wantValue: []string{"foo", "bar"},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "read non-existing value",
|
|
|
+ key: AllowedSuggestedExitNodes,
|
|
|
+ handlerError: ErrNoSuchKey,
|
|
|
+ wantError: nil,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "read non-existing value, non nil default",
|
|
|
+ key: AllowedSuggestedExitNodes,
|
|
|
+ handlerError: ErrNoSuchKey,
|
|
|
+ defaultValue: []string{"foo", "bar"},
|
|
|
+ wantValue: []string{"foo", "bar"},
|
|
|
+ wantError: nil,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "reading value returns other error",
|
|
|
+ key: AllowedSuggestedExitNodes,
|
|
|
+ handlerError: someOtherError,
|
|
|
+ wantError: someOtherError,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, tt := range tests {
|
|
|
+ t.Run(tt.name, func(t *testing.T) {
|
|
|
+ SetHandlerForTest(t, &testHandler{
|
|
|
+ t: t,
|
|
|
+ key: tt.key,
|
|
|
+ sArr: tt.handlerValue,
|
|
|
+ err: tt.handlerError,
|
|
|
+ })
|
|
|
+ value, err := GetStringArray(tt.key, tt.defaultValue)
|
|
|
+ if err != tt.wantError {
|
|
|
+ t.Errorf("err=%q, want %q", err, tt.wantError)
|
|
|
+ }
|
|
|
+ if !slices.Equal(tt.wantValue, value) {
|
|
|
+ t.Errorf("value=%v, want %v", value, tt.wantValue)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func TestSelectControlURL(t *testing.T) {
|
|
|
tests := []struct {
|
|
|
reg, disk, want string
|