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  }