diff --git a/notifier/github/client.go b/notifier/github/client.go index 1c62bca..094e23d 100644 --- a/notifier/github/client.go +++ b/notifier/github/client.go @@ -10,9 +10,6 @@ import ( "golang.org/x/oauth2" ) -// EnvToken is GitHub API Token -const EnvToken = "GITHUB_TOKEN" - // EnvBaseURL is GitHub base URL. This can be set to a domain endpoint to use with GitHub Enterprise. const EnvBaseURL = "GITHUB_BASE_URL" @@ -69,10 +66,11 @@ type service struct { // NewClient returns Client initialized with Config func NewClient(cfg Config) (*Client, error) { token := cfg.Token - token = strings.TrimPrefix(token, "$") - if token == EnvToken { - token = os.Getenv(EnvToken) + + if strings.HasPrefix(token, "$") { + token = os.Getenv(strings.TrimPrefix(token, "$")) } + if token == "" { return &Client{}, errors.New("github token is missing") } diff --git a/notifier/github/client_test.go b/notifier/github/client_test.go index e84a117..79036d3 100644 --- a/notifier/github/client_test.go +++ b/notifier/github/client_test.go @@ -2,16 +2,11 @@ package github import ( "os" + "strings" "testing" ) func TestNewClient(t *testing.T) { - githubToken := os.Getenv(EnvToken) - defer func() { - os.Setenv(EnvToken, githubToken) - }() - os.Setenv(EnvToken, "") - testCases := []struct { config Config envToken string @@ -41,12 +36,24 @@ func TestNewClient(t *testing.T) { envToken: "", expect: "github token is missing", }, + { + // specify via env but not to be set env (part 3) + config: Config{Token: "$TFNOTIFY_GITHUB_TOKEN"}, + envToken: "", + expect: "github token is missing", + }, { // specify via env (part 2) config: Config{Token: "$GITHUB_TOKEN"}, envToken: "abcdefg", expect: "", }, + { + // specify via env (part 3) + config: Config{Token: "$TFNOTIFY_GITHUB_TOKEN"}, + envToken: "abcdefg", + expect: "", + }, { // no specification (part 1) config: Config{}, @@ -61,7 +68,11 @@ func TestNewClient(t *testing.T) { }, } for _, testCase := range testCases { - os.Setenv(EnvToken, testCase.envToken) + if strings.HasPrefix(testCase.config.Token, "$") { + key := strings.TrimPrefix(testCase.config.Token, "$") + os.Setenv(key, testCase.envToken) + } + _, err := NewClient(testCase.config) if err == nil { continue