mirror of
https://github.com/photoprism/photoprism.git
synced 2025-09-27 13:13:32 +08:00
67 lines
2.1 KiB
Go
67 lines
2.1 KiB
Go
package config
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestExpandVars(t *testing.T) {
|
|
t.Run("Unset", func(t *testing.T) {
|
|
assert.Equal(t, "", ExpandVars("", nil))
|
|
})
|
|
t.Run("DefaultPortalUrl", func(t *testing.T) {
|
|
assert.Equal(t,
|
|
"https://portal.foo.bar.baz",
|
|
ExpandVars(DefaultPortalUrl, Vars{"PHOTOPRISM_CLUSTER_DOMAIN": "foo.bar.baz"}))
|
|
})
|
|
t.Run("UnbracedUppercase", func(t *testing.T) {
|
|
in := "https://portal.$CLUSTER_DOMAIN"
|
|
out := ExpandVars(in, Vars{"CLUSTER_DOMAIN": "example.com"})
|
|
assert.Equal(t, "https://portal.example.com", out)
|
|
})
|
|
t.Run("HyphenKeyWithBraces", func(t *testing.T) {
|
|
in := "https://portal.${cluster-domain}"
|
|
out := ExpandVars(in, Vars{"cluster-domain": "foo.bar"})
|
|
assert.Equal(t, "https://portal.foo.bar", out)
|
|
})
|
|
t.Run("MultipleVariablesMixedForms", func(t *testing.T) {
|
|
in := "https://${cluster-domain}/$CLUSTER_DOMAIN"
|
|
out := ExpandVars(in, Vars{
|
|
"cluster-domain": "foo.bar",
|
|
"CLUSTER_DOMAIN": "baz.qux",
|
|
})
|
|
assert.Equal(t, "https://foo.bar/baz.qux", out)
|
|
})
|
|
t.Run("UnknownVarBecomesEmpty", func(t *testing.T) {
|
|
in := "pre $UNKNOWN post"
|
|
out := ExpandVars(in, nil)
|
|
// $UNKNOWN maps to empty -> double space remains between words.
|
|
assert.Equal(t, "pre post", out)
|
|
})
|
|
t.Run("TrailingDollarIsLiteral", func(t *testing.T) {
|
|
in := "end$"
|
|
out := ExpandVars(in, nil)
|
|
// A trailing '$' is not followed by a name, so it remains.
|
|
assert.Equal(t, "end$", out)
|
|
})
|
|
t.Run("BadSyntaxMissingRightBrace", func(t *testing.T) {
|
|
in := "pre ${foo"
|
|
out := ExpandVars(in, Vars{"foo": "X"})
|
|
// os.Expand eats the invalid "${" sequence; remaining text stays.
|
|
assert.Equal(t, "pre foo", out)
|
|
})
|
|
t.Run("EmptyBracesAreEaten", func(t *testing.T) {
|
|
in := "a ${} b"
|
|
out := ExpandVars(in, nil)
|
|
// os.Expand treats ${} as bad syntax and removes it entirely.
|
|
assert.Equal(t, "a b", out)
|
|
})
|
|
t.Run("SpecialVarDollar", func(t *testing.T) {
|
|
in := "cost $$100"
|
|
out := ExpandVars(in, nil)
|
|
// In os.Expand, '$$' is parsed as special var "$" and maps to empty.
|
|
assert.Equal(t, "cost 100", out)
|
|
})
|
|
}
|