52 lines
2.0 KiB
Go
52 lines
2.0 KiB
Go
package subprocess
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
|
)
|
|
|
|
func TestCredentialEnvironmentUsesCapturedReferences(t *testing.T) {
|
|
t.Setenv("CUSTOM_ALPHA_KEY", "alpha-value")
|
|
t.Setenv("SECOND_PROVIDER_TOKEN", "second-value")
|
|
t.Setenv("UNSELECTED_SECRET", "unselected-value")
|
|
type configuration struct {
|
|
Credentials []configkit.Secret `yaml:"credentials"`
|
|
}
|
|
loaded, err := configkit.Load[configuration](configkit.Bytes("credentials.yml", []byte("credentials: [CUSTOM_ALPHA_KEY, SECOND_PROVIDER_TOKEN, CUSTOM_ALPHA_KEY]\n")))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Setenv("CUSTOM_ALPHA_KEY", "later-value")
|
|
overrides, names, err := CredentialEnvironment(loaded.Config.Credentials)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !reflect.DeepEqual(overrides, map[string]string{"CUSTOM_ALPHA_KEY": "alpha-value", "SECOND_PROVIDER_TOKEN": "second-value"}) ||
|
|
!reflect.DeepEqual(names, []string{"CUSTOM_ALPHA_KEY", "SECOND_PROVIDER_TOKEN"}) {
|
|
t.Fatalf("credential selection = %#v, %#v", overrides, names)
|
|
}
|
|
overrides["CUSTOM_ALPHA_KEY"] = "modified"
|
|
names[0] = "modified"
|
|
again, againNames, err := CredentialEnvironment(loaded.Config.Credentials)
|
|
if err != nil || again["CUSTOM_ALPHA_KEY"] != "alpha-value" || againNames[0] != "CUSTOM_ALPHA_KEY" {
|
|
t.Fatalf("credential conversion retained mutable result: %#v, %#v, %v", again, againNames, err)
|
|
}
|
|
}
|
|
|
|
func TestCredentialEnvironmentHandlesEmptyAndUnresolvedReferences(t *testing.T) {
|
|
for _, credentials := range [][]configkit.Secret{nil, {}} {
|
|
overrides, names, err := CredentialEnvironment(credentials)
|
|
if err != nil || len(overrides) != 0 || len(names) != 0 {
|
|
t.Fatalf("empty credentials = %#v, %#v, %v", overrides, names, err)
|
|
}
|
|
}
|
|
for _, credentials := range [][]configkit.Secret{{configkit.SecretEnv("UNRESOLVED_KEY")}, {{}}} {
|
|
overrides, names, err := CredentialEnvironment(credentials)
|
|
if err == nil || overrides != nil || names != nil {
|
|
t.Fatalf("unresolved credentials = %#v, %#v, %v", overrides, names, err)
|
|
}
|
|
}
|
|
}
|