forked from baron/baron-sso
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestGetEnvFileOrValueReadsSecretFile(t *testing.T) {
|
|
t.Setenv("WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY", "inline-value")
|
|
|
|
secretPath := filepath.Join(t.TempDir(), "worksmobile-private-key.pem")
|
|
want := "-----BEGIN PRIVATE KEY-----\nsecret\n-----END PRIVATE KEY-----\n"
|
|
if err := os.WriteFile(secretPath, []byte(want), 0o600); err != nil {
|
|
t.Fatalf("failed to write secret file: %v", err)
|
|
}
|
|
t.Setenv("WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE", secretPath)
|
|
|
|
got, err := getEnvFileOrValue("WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE", "WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY", "")
|
|
if err != nil {
|
|
t.Fatalf("getEnvFileOrValue returned error: %v", err)
|
|
}
|
|
if got != want {
|
|
t.Fatalf("secret value = %q, want file content", got)
|
|
}
|
|
}
|
|
|
|
func TestGetEnvFileOrValueFallsBackToRawEnv(t *testing.T) {
|
|
t.Setenv("WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY", "inline-value")
|
|
t.Setenv("WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE", "")
|
|
|
|
got, err := getEnvFileOrValue("WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE", "WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY", "")
|
|
if err != nil {
|
|
t.Fatalf("getEnvFileOrValue returned error: %v", err)
|
|
}
|
|
if got != "inline-value" {
|
|
t.Fatalf("secret value = %q, want raw env value", got)
|
|
}
|
|
}
|