github.com/joselitofilho/goreleaser@v0.155.1-0.20210123221854-e4891856c593/internal/client/github_test.go (about)

     1  package client
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/goreleaser/goreleaser/internal/artifact"
     7  	"github.com/goreleaser/goreleaser/pkg/config"
     8  	"github.com/goreleaser/goreleaser/pkg/context"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestNewGitHubClient(t *testing.T) {
    13  	t.Run("good urls", func(t *testing.T) {
    14  		ctx := context.New(config.Project{
    15  			GitHubURLs: config.GitHubURLs{
    16  				API:    "https://github.mycompany.com/api",
    17  				Upload: "https://github.mycompany.com/upload",
    18  			},
    19  		})
    20  		_, err := NewGitHub(ctx, ctx.Token)
    21  
    22  		require.NoError(t, err)
    23  	})
    24  
    25  	t.Run("bad api url", func(t *testing.T) {
    26  		ctx := context.New(config.Project{
    27  			GitHubURLs: config.GitHubURLs{
    28  				API:    "://github.mycompany.com/api",
    29  				Upload: "https://github.mycompany.com/upload",
    30  			},
    31  		})
    32  		_, err := NewGitHub(ctx, ctx.Token)
    33  
    34  		require.EqualError(t, err, `parse "://github.mycompany.com/api": missing protocol scheme`)
    35  	})
    36  
    37  	t.Run("bad upload url", func(t *testing.T) {
    38  		ctx := context.New(config.Project{
    39  			GitHubURLs: config.GitHubURLs{
    40  				API:    "https://github.mycompany.com/api",
    41  				Upload: "not a url:4994",
    42  			},
    43  		})
    44  		_, err := NewGitHub(ctx, ctx.Token)
    45  
    46  		require.EqualError(t, err, `parse "not a url:4994": first path segment in URL cannot contain colon`)
    47  	})
    48  }
    49  
    50  func TestGitHubUploadReleaseIDNotInt(t *testing.T) {
    51  	var ctx = context.New(config.Project{})
    52  	client, err := NewGitHub(ctx, ctx.Token)
    53  	require.NoError(t, err)
    54  
    55  	require.EqualError(
    56  		t,
    57  		client.Upload(ctx, "blah", &artifact.Artifact{}, nil),
    58  		`strconv.ParseInt: parsing "blah": invalid syntax`,
    59  	)
    60  }
    61  
    62  func TestGitHubReleaseURLTemplate(t *testing.T) {
    63  	var ctx = context.New(config.Project{
    64  		GitHubURLs: config.GitHubURLs{
    65  			// default URL would otherwise be set via pipe/defaults
    66  			Download: DefaultGitHubDownloadURL,
    67  		},
    68  		Release: config.Release{
    69  			GitHub: config.Repo{
    70  				Owner: "owner",
    71  				Name:  "name",
    72  			},
    73  		},
    74  	})
    75  	client, err := NewGitHub(ctx, ctx.Token)
    76  	require.NoError(t, err)
    77  
    78  	urlTpl, err := client.ReleaseURLTemplate(ctx)
    79  	require.NoError(t, err)
    80  
    81  	expectedUrl := "https://github.com/owner/name/releases/download/{{ .Tag }}/{{ .ArtifactName }}"
    82  	require.Equal(t, expectedUrl, urlTpl)
    83  }
    84  
    85  func TestGitHubCreateReleaseWrongNameTemplate(t *testing.T) {
    86  	var ctx = context.New(config.Project{
    87  		Release: config.Release{
    88  			NameTemplate: "{{.dddddddddd",
    89  		},
    90  	})
    91  	client, err := NewGitHub(ctx, ctx.Token)
    92  	require.NoError(t, err)
    93  
    94  	str, err := client.CreateRelease(ctx, "")
    95  	require.Empty(t, str)
    96  	require.EqualError(t, err, `template: tmpl:1: unclosed action`)
    97  }