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 }