github.com/triarius/goreleaser@v1.12.5/internal/client/client_test.go (about) 1 package client 2 3 import ( 4 "math/rand" 5 "testing" 6 7 "github.com/triarius/goreleaser/pkg/config" 8 "github.com/triarius/goreleaser/pkg/context" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestClientEmpty(t *testing.T) { 13 ctx := &context.Context{} 14 client, err := New(ctx) 15 require.Nil(t, client) 16 require.EqualError(t, err, `invalid client token type: ""`) 17 } 18 19 func TestClientNewGitea(t *testing.T) { 20 ctx := &context.Context{ 21 Config: config.Project{ 22 GiteaURLs: config.GiteaURLs{ 23 // TODO: use a mocked http server to cover version api 24 API: "https://gitea.com/api/v1", 25 Download: "https://gitea.com", 26 }, 27 }, 28 TokenType: context.TokenTypeGitea, 29 Token: "giteatoken", 30 } 31 client, err := New(ctx) 32 require.NoError(t, err) 33 _, ok := client.(*giteaClient) 34 require.True(t, ok) 35 } 36 37 func TestClientNewGiteaInvalidURL(t *testing.T) { 38 ctx := &context.Context{ 39 Config: config.Project{ 40 GiteaURLs: config.GiteaURLs{ 41 API: "://gitea.com/api/v1", 42 }, 43 }, 44 TokenType: context.TokenTypeGitea, 45 Token: "giteatoken", 46 } 47 client, err := New(ctx) 48 require.Error(t, err) 49 require.Nil(t, client) 50 } 51 52 func TestClientNewGitLab(t *testing.T) { 53 ctx := &context.Context{ 54 TokenType: context.TokenTypeGitLab, 55 Token: "gitlabtoken", 56 } 57 client, err := New(ctx) 58 require.NoError(t, err) 59 _, ok := client.(*gitlabClient) 60 require.True(t, ok) 61 } 62 63 func TestCheckBodyMaxLength(t *testing.T) { 64 letters := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") 65 b := make([]rune, maxReleaseBodyLength) 66 for i := range b { 67 b[i] = letters[rand.Intn(len(letters))] 68 } 69 ctx := context.New(config.Project{}) 70 ctx.ReleaseNotes = string(b) 71 out := truncateReleaseBody(string(b)) 72 require.Len(t, out, maxReleaseBodyLength) 73 } 74 75 func TestNewIfToken(t *testing.T) { 76 t.Run("valid", func(t *testing.T) { 77 ctx := &context.Context{ 78 TokenType: context.TokenTypeGitLab, 79 Token: "gitlabtoken", 80 } 81 82 client, err := New(ctx) 83 require.NoError(t, err) 84 _, ok := client.(*gitlabClient) 85 require.True(t, ok) 86 87 ctx = &context.Context{ 88 Config: config.Project{ 89 GiteaURLs: config.GiteaURLs{ 90 API: "https://gitea.com/api/v1", 91 }, 92 }, 93 TokenType: context.TokenTypeGitea, 94 Token: "giteatoken", 95 Env: map[string]string{"VAR": "token"}, 96 } 97 98 client, err = NewIfToken(ctx, client, "{{ .Env.VAR }}") 99 require.NoError(t, err) 100 _, ok = client.(*giteaClient) 101 require.True(t, ok) 102 }) 103 104 t.Run("empty", func(t *testing.T) { 105 ctx := &context.Context{ 106 TokenType: context.TokenTypeGitLab, 107 Token: "gitlabtoken", 108 } 109 110 client, err := New(ctx) 111 require.NoError(t, err) 112 113 client, err = NewIfToken(ctx, client, "") 114 require.NoError(t, err) 115 _, ok := client.(*gitlabClient) 116 require.True(t, ok) 117 }) 118 119 t.Run("invalid tmpl", func(t *testing.T) { 120 ctx := &context.Context{ 121 TokenType: context.TokenTypeGitLab, 122 Token: "gitlabtoken", 123 } 124 125 _, err := NewIfToken(ctx, nil, "nope") 126 require.EqualError(t, err, `expected {{ .Env.VAR_NAME }} only (no plain-text or other interpolation)`) 127 }) 128 } 129 130 func TestNewWithToken(t *testing.T) { 131 t.Run("gitlab", func(t *testing.T) { 132 ctx := &context.Context{ 133 TokenType: context.TokenTypeGitLab, 134 Env: map[string]string{"TK": "token"}, 135 } 136 137 cli, err := newWithToken(ctx, "{{ .Env.TK }}") 138 require.NoError(t, err) 139 140 _, ok := cli.(*gitlabClient) 141 require.True(t, ok) 142 }) 143 144 t.Run("gitea", func(t *testing.T) { 145 ctx := &context.Context{ 146 TokenType: context.TokenTypeGitea, 147 Env: map[string]string{"TK": "token"}, 148 Config: config.Project{ 149 GiteaURLs: config.GiteaURLs{ 150 API: "https://gitea.com/api/v1", 151 }, 152 }, 153 } 154 155 cli, err := newWithToken(ctx, "{{ .Env.TK }}") 156 require.NoError(t, err) 157 158 _, ok := cli.(*giteaClient) 159 require.True(t, ok) 160 }) 161 162 t.Run("invalid", func(t *testing.T) { 163 ctx := &context.Context{ 164 TokenType: context.TokenType("nope"), 165 Env: map[string]string{"TK": "token"}, 166 } 167 168 cli, err := newWithToken(ctx, "{{ .Env.TK }}") 169 require.EqualError(t, err, `invalid client token type: "nope"`) 170 require.Nil(t, cli) 171 }) 172 } 173 174 func TestClientBlanks(t *testing.T) { 175 repo := Repo{} 176 require.Equal(t, "", repo.String()) 177 }