Skip to content

Commit

Permalink
Merge pull request #112 from KeisukeYamashita/support-custom-github-t…
Browse files Browse the repository at this point in the history
…oken-env-var-name

Support custom GitHub token environment variable name
  • Loading branch information
KeisukeYamashita authored Feb 20, 2022
2 parents 3fee50b + e5e8b67 commit a2897c6
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 13 deletions.
10 changes: 4 additions & 6 deletions notifier/github/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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")
}
Expand Down
25 changes: 18 additions & 7 deletions notifier/github/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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{},
Expand All @@ -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
Expand Down

0 comments on commit a2897c6

Please sign in to comment.