diff --git a/internal/releaser/util/util.go b/internal/releaser/util/util.go index 7c1f548..dac0acc 100644 --- a/internal/releaser/util/util.go +++ b/internal/releaser/util/util.go @@ -35,6 +35,8 @@ func GetAccessToken(providerName string) (string, error) { if token, exists = os.LookupEnv(envName); !exists { return "", fmt.Errorf("could not find %s in the enviroment variables. Please check if it is set", envName) + } else if token == "" { + return "", fmt.Errorf("token %s is set in environment variables but is empty", envName) } return token, nil } diff --git a/internal/releaser/util/util_test.go b/internal/releaser/util/util_test.go new file mode 100644 index 0000000..287f81f --- /dev/null +++ b/internal/releaser/util/util_test.go @@ -0,0 +1,43 @@ +package util_test + +import ( + "context" + "fmt" + "os" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/Nightapes/go-semantic-release/internal/releaser/util" +) + +func TestCreateBearerHTTPClient(t *testing.T) { + client := util.CreateBearerHTTPClient(context.Background(), "") + + assert.True(t, client != nil, "Client is empty") +} + +type testDoubleToken struct { + providerName, token string + valid bool +} + +var testDoubles = []testDoubleToken{ + testDoubleToken{providerName: "test0", token: "foo", valid: true}, + testDoubleToken{providerName: "test1", token: "", valid: false}, +} + +func TestGetAccessToken(t *testing.T) { + for _, testObject := range testDoubles { + envName := fmt.Sprintf("%s_ACCESS_TOKEN", strings.ToUpper(testObject.providerName)) + if err := os.Setenv(envName, testObject.token); err != nil { + fmt.Println(err.Error()) + } + + _, err := util.GetAccessToken(testObject.providerName) + + assert.Equal(t, testObject.valid, err == nil) + os.Unsetenv(envName) + } +}