github.com/joselitofilho/goreleaser@v0.155.1-0.20210123221854-e4891856c593/internal/client/gitlab_test.go (about) 1 package client 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/goreleaser/goreleaser/pkg/config" 8 "github.com/goreleaser/goreleaser/pkg/context" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestExtractHashFromProjectFileURL(t *testing.T) { 13 givenHash := "22e8b1508b0f28433b94754a5ea2f4aa" 14 projectFileURL := fmt.Sprintf("/uploads/%s/release-testing_0.3.7_Darwin_x86_64.tar.gz", givenHash) 15 extractedHash, err := extractProjectFileHashFrom(projectFileURL) 16 if err != nil { 17 t.Errorf("expexted no error but got: %v", err) 18 } 19 require.Equal(t, givenHash, extractedHash) 20 } 21 22 func TestFailToExtractHashFromProjectFileURL(t *testing.T) { 23 givenHash := "22e8b1508b0f28433b94754a5ea2f4aa" 24 projectFileURL := fmt.Sprintf("/uploads/%s/new-path/file.ext", givenHash) 25 _, err := extractProjectFileHashFrom(projectFileURL) 26 if err == nil { 27 t.Errorf("expected an error but got none for new-path in url") 28 } 29 30 projectFileURL = fmt.Sprintf("/%s/file.ext", givenHash) 31 _, err = extractProjectFileHashFrom(projectFileURL) 32 if err == nil { 33 t.Errorf("expected an error but got none for path-too-small in url") 34 } 35 } 36 37 func TestGitLabReleaseURLTemplate(t *testing.T) { 38 var ctx = context.New(config.Project{ 39 GitLabURLs: config.GitLabURLs{ 40 // default URL would otherwise be set via pipe/defaults 41 Download: DefaultGitLabDownloadURL, 42 }, 43 Release: config.Release{ 44 GitLab: config.Repo{ 45 Owner: "owner", 46 Name: "name", 47 }, 48 }, 49 }) 50 client, err := NewGitLab(ctx, ctx.Token) 51 require.NoError(t, err) 52 53 urlTpl, err := client.ReleaseURLTemplate(ctx) 54 require.NoError(t, err) 55 56 expectedUrl := "https://gitlab.com/owner/name/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}" 57 require.Equal(t, expectedUrl, urlTpl) 58 }