pulumi/sdk/go/common/util/env/env_test.go

83 lines
2.4 KiB
Go

// Copyright 2022-2024, Pulumi Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package env_test
import (
"testing"
"github.com/pulumi/pulumi/sdk/v3/go/common/util/env"
"github.com/stretchr/testify/assert"
)
func init() {
env.Global = env.MapStore{
"PULUMI_FOO": "1",
// "PULUMI_NOT_SET": explicitly not set
"FOO": "bar",
"PULUMI_MY_INT": "3",
"PULUMI_SECRET": "hidden",
"PULUMI_SET": "SET",
"UNSET": "SET",
"PULUMI_ALTERNATIVE": "SET",
}
}
var (
SomeBool = env.Bool("FOO", "A bool used for testing")
SomeFalse = env.Bool("NOT_SET", "a falsy value")
SomeString = env.String("FOO", "A bool used for testing", env.NoPrefix)
SomeSecret = env.String("SECRET", "A secret that shouldn't be displayed", env.Secret)
UnsetString = env.String("PULUMI_UNSET", "Should be unset", env.Needs(SomeFalse))
SetString = env.String("SET", "Should be set", env.Needs(SomeBool))
AnInt = env.Int("MY_INT", "Should be 3")
Alternative = env.String("NOT_ALTERNATIVE", "Should be set with alt name", env.Alternative("ALTERNATIVE"))
)
func TestInt(t *testing.T) {
t.Parallel()
assert.Equal(t, 3, AnInt.Value())
assert.Equal(t, 3, env.NewEnv(env.Global).GetInt(AnInt))
assert.Equal(t, 6, env.NewEnv(
env.MapStore{"PULUMI_MY_INT": "6"},
).GetInt(AnInt))
}
func TestBool(t *testing.T) {
t.Parallel()
assert.Equal(t, true, SomeBool.Value())
}
func TestString(t *testing.T) {
t.Parallel()
assert.Equal(t, "bar", SomeString.Value())
}
func TestSecret(t *testing.T) {
t.Parallel()
assert.Equal(t, "hidden", SomeSecret.Value())
assert.Equal(t, "[secret]", SomeSecret.String())
}
func TestNeeds(t *testing.T) {
t.Parallel()
assert.Equal(t, "", UnsetString.Value())
assert.Equal(t, "SET", SetString.Value())
}
func TestAlternative(t *testing.T) {
t.Parallel()
assert.Equal(t, "SET", Alternative.Value())
}