mirror of
https://github.com/filebrowser/filebrowser.git
synced 2026-07-25 17:04:17 +00:00
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package cmd
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/samber/lo"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/pflag"
|
|
|
|
"github.com/filebrowser/filebrowser/v2/auth"
|
|
"github.com/filebrowser/filebrowser/v2/settings"
|
|
)
|
|
|
|
// TestEnvCollisions ensures that there are no collisions in the produced environment
|
|
// variable names for all commands and their flags.
|
|
func TestEnvCollisions(t *testing.T) {
|
|
testEnvCollisions(t, rootCmd)
|
|
}
|
|
|
|
func testEnvCollisions(t *testing.T, cmd *cobra.Command) {
|
|
for _, cmd := range cmd.Commands() {
|
|
testEnvCollisions(t, cmd)
|
|
}
|
|
|
|
replacements := generateEnvKeyReplacements(cmd)
|
|
envVariables := []string{}
|
|
|
|
for i := range replacements {
|
|
if i%2 != 0 {
|
|
envVariables = append(envVariables, replacements[i])
|
|
}
|
|
}
|
|
|
|
duplicates := lo.FindDuplicates(envVariables)
|
|
|
|
if len(duplicates) > 0 {
|
|
t.Errorf("Found duplicate environment variable keys for command %q: %v", cmd.Name(), duplicates)
|
|
}
|
|
}
|
|
|
|
// TestGetSettingsFollowExternalSymlinks ensures that the followExternalSymlinks
|
|
// flag is persisted to the server config when set via "config set".
|
|
func TestGetSettingsFollowExternalSymlinks(t *testing.T) {
|
|
flags := pflag.NewFlagSet("test", pflag.ContinueOnError)
|
|
addConfigFlags(flags)
|
|
|
|
if err := flags.Parse([]string{"--followExternalSymlinks"}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
set := &settings.Settings{AuthMethod: auth.MethodJSONAuth}
|
|
ser := &settings.Server{}
|
|
|
|
if _, err := getSettings(flags, set, ser, &auth.JSONAuth{}, false); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if !ser.FollowExternalSymlinks {
|
|
t.Error("expected FollowExternalSymlinks to be persisted as true")
|
|
}
|
|
}
|