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  }