mirror of
https://github.com/goreleaser/goreleaser.git
synced 2024-12-29 01:44:39 +02:00
ec2db4a727
<!-- Hi, thanks for contributing! Please make sure you read our CONTRIBUTING guide. Also, add tests and the respective documentation changes as well. --> <!-- If applied, this commit will... --> ... <!-- Why is this change being made? --> ... <!-- # Provide links to any relevant tickets, URLs or other resources --> ... --------- Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
184 lines
4.6 KiB
Go
184 lines
4.6 KiB
Go
package client
|
|
|
|
import (
|
|
"math/rand"
|
|
"testing"
|
|
|
|
"github.com/goreleaser/goreleaser/v2/internal/testctx"
|
|
"github.com/goreleaser/goreleaser/v2/internal/testlib"
|
|
"github.com/goreleaser/goreleaser/v2/pkg/config"
|
|
"github.com/goreleaser/goreleaser/v2/pkg/context"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestClientEmpty(t *testing.T) {
|
|
ctx := testctx.New()
|
|
client, err := New(ctx)
|
|
require.Nil(t, client)
|
|
require.EqualError(t, err, `invalid client token type: ""`)
|
|
}
|
|
|
|
func TestNewReleaseClient(t *testing.T) {
|
|
t.Run("normal", func(t *testing.T) {
|
|
cli, err := NewReleaseClient(testctx.New(
|
|
testctx.WithTokenType(context.TokenTypeGitHub),
|
|
))
|
|
require.NoError(t, err)
|
|
require.IsType(t, &githubClient{}, cli)
|
|
})
|
|
|
|
t.Run("bad tmpl", func(t *testing.T) {
|
|
_, err := NewReleaseClient(testctx.NewWithCfg(
|
|
config.Project{
|
|
Release: config.Release{
|
|
Disable: "{{ .Nope }}",
|
|
},
|
|
},
|
|
testctx.WithTokenType(context.TokenTypeGitHub),
|
|
))
|
|
testlib.RequireTemplateError(t, err)
|
|
})
|
|
|
|
t.Run("disabled", func(t *testing.T) {
|
|
cli, err := NewReleaseClient(testctx.NewWithCfg(
|
|
config.Project{
|
|
Release: config.Release{
|
|
Disable: "true",
|
|
},
|
|
},
|
|
testctx.WithTokenType(context.TokenTypeGitHub),
|
|
))
|
|
require.NoError(t, err)
|
|
require.IsType(t, errURLTemplater{}, cli)
|
|
|
|
url, err := cli.ReleaseURLTemplate(nil)
|
|
require.Empty(t, url)
|
|
require.ErrorIs(t, err, ErrReleaseDisabled)
|
|
})
|
|
}
|
|
|
|
func TestClientNewGitea(t *testing.T) {
|
|
ctx := testctx.NewWithCfg(config.Project{
|
|
GiteaURLs: config.GiteaURLs{
|
|
// TODO: use a mocked http server to cover version api
|
|
API: "https://gitea.com/api/v1",
|
|
Download: "https://gitea.com",
|
|
},
|
|
}, testctx.GiteaTokenType)
|
|
client, err := New(ctx)
|
|
require.NoError(t, err)
|
|
_, ok := client.(*giteaClient)
|
|
require.True(t, ok)
|
|
}
|
|
|
|
func TestClientNewGiteaInvalidURL(t *testing.T) {
|
|
ctx := testctx.NewWithCfg(config.Project{
|
|
GiteaURLs: config.GiteaURLs{
|
|
API: "://gitea.com/api/v1",
|
|
},
|
|
}, testctx.GiteaTokenType)
|
|
client, err := New(ctx)
|
|
require.Error(t, err)
|
|
require.Nil(t, client)
|
|
}
|
|
|
|
func TestClientNewGitLab(t *testing.T) {
|
|
ctx := testctx.New(testctx.GitLabTokenType)
|
|
client, err := New(ctx)
|
|
require.NoError(t, err)
|
|
_, ok := client.(*gitlabClient)
|
|
require.True(t, ok)
|
|
}
|
|
|
|
func TestCheckBodyMaxLength(t *testing.T) {
|
|
letters := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|
b := make([]rune, maxReleaseBodyLength)
|
|
for i := range b {
|
|
b[i] = letters[rand.Intn(len(letters))]
|
|
}
|
|
out := truncateReleaseBody(string(b))
|
|
require.Len(t, out, maxReleaseBodyLength)
|
|
}
|
|
|
|
func TestNewIfToken(t *testing.T) {
|
|
t.Run("valid", func(t *testing.T) {
|
|
ctx := testctx.New(testctx.GitLabTokenType)
|
|
client, err := New(ctx)
|
|
require.NoError(t, err)
|
|
_, ok := client.(*gitlabClient)
|
|
require.True(t, ok)
|
|
|
|
ctx = testctx.NewWithCfg(config.Project{
|
|
Env: []string{"VAR=giteatoken"},
|
|
GiteaURLs: config.GiteaURLs{
|
|
API: "https://gitea.com/api/v1",
|
|
},
|
|
}, testctx.GiteaTokenType)
|
|
client, err = NewIfToken(ctx, client, "{{ .Env.VAR }}")
|
|
require.NoError(t, err)
|
|
_, ok = client.(*giteaClient)
|
|
require.True(t, ok)
|
|
})
|
|
|
|
t.Run("empty", func(t *testing.T) {
|
|
ctx := testctx.New(testctx.GitLabTokenType)
|
|
|
|
client, err := New(ctx)
|
|
require.NoError(t, err)
|
|
|
|
client, err = NewIfToken(ctx, client, "")
|
|
require.NoError(t, err)
|
|
_, ok := client.(*gitlabClient)
|
|
require.True(t, ok)
|
|
})
|
|
|
|
t.Run("invalid tmpl", func(t *testing.T) {
|
|
ctx := testctx.New(testctx.GitLabTokenType)
|
|
_, err := NewIfToken(ctx, nil, "nope")
|
|
require.EqualError(t, err, `expected {{ .Env.VAR_NAME }} only (no plain-text or other interpolation)`)
|
|
})
|
|
}
|
|
|
|
func TestNewWithToken(t *testing.T) {
|
|
t.Run("gitlab", func(t *testing.T) {
|
|
ctx := testctx.NewWithCfg(config.Project{
|
|
Env: []string{"TK=token"},
|
|
}, testctx.GitLabTokenType)
|
|
|
|
cli, err := newWithToken(ctx, "{{ .Env.TK }}")
|
|
require.NoError(t, err)
|
|
|
|
_, ok := cli.(*gitlabClient)
|
|
require.True(t, ok)
|
|
})
|
|
|
|
t.Run("gitea", func(t *testing.T) {
|
|
ctx := testctx.NewWithCfg(config.Project{
|
|
Env: []string{"TK=token"},
|
|
GiteaURLs: config.GiteaURLs{
|
|
API: "https://gitea.com/api/v1",
|
|
},
|
|
}, testctx.GiteaTokenType)
|
|
|
|
cli, err := newWithToken(ctx, "{{ .Env.TK }}")
|
|
require.NoError(t, err)
|
|
|
|
_, ok := cli.(*giteaClient)
|
|
require.True(t, ok)
|
|
})
|
|
|
|
t.Run("invalid", func(t *testing.T) {
|
|
ctx := testctx.NewWithCfg(config.Project{
|
|
Env: []string{"TK=token"},
|
|
}, testctx.WithTokenType(context.TokenType("nope")))
|
|
cli, err := newWithToken(ctx, "{{ .Env.TK }}")
|
|
require.EqualError(t, err, `invalid client token type: "nope"`)
|
|
require.Nil(t, cli)
|
|
})
|
|
}
|
|
|
|
func TestClientBlanks(t *testing.T) {
|
|
repo := Repo{}
|
|
require.Equal(t, "", repo.String())
|
|
}
|