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  }