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