//go:build integration // +build integration // can be executed with // go test -v -tags integration -run TestGitHubIntegration ./integration/... package main import ( "io/ioutil" "os" "path/filepath" "testing" "time" "github.com/stretchr/testify/assert" "github.com/SAP/jenkins-library/pkg/command" pipergithub "github.com/SAP/jenkins-library/pkg/github" "github.com/SAP/jenkins-library/pkg/piperenv" ) func TestGitHubIntegrationPiperPublishRelease(t *testing.T) { t.Parallel() token := os.Getenv("PIPER_INTEGRATION_GITHUB_TOKEN") if len(token) == 0 { t.Fatal("No GitHub token maintained") } owner := os.Getenv("PIPER_INTEGRATION_GITHUB_OWNER") if len(owner) == 0 { owner = "OliverNocon" } repository := os.Getenv("PIPER_INTEGRATION_GITHUB_REPOSITORY") if len(repository) == 0 { repository = "piper-integration" } dir := t.TempDir() testAsset := filepath.Join(dir, "test.txt") err := ioutil.WriteFile(testAsset, []byte("Test"), 0644) assert.NoError(t, err, "Error when writing temporary file") test2Asset := filepath.Join(dir, "test2.txt") err = ioutil.WriteFile(test2Asset, []byte("Test"), 0644) assert.NoError(t, err, "Error when writing temporary file") t.Run("test single asset - success", func(t *testing.T) { //prepare pipeline environment now := time.Now() piperenv.SetResourceParameter(filepath.Join(dir, ".pipeline"), "commonPipelineEnvironment", "artifactVersion", now.Format("20060102150405")) cmd := command.Command{} cmd.SetDir(dir) piperOptions := []string{ "githubPublishRelease", "--owner", owner, "--repository", repository, "--token", token, "--assetPath", testAsset, "--noTelemetry", } err = cmd.RunExecutable(getPiperExecutable(), piperOptions...) assert.NoError(t, err, "Calling piper with arguments %v failed.", piperOptions) }) t.Run("test multiple assets - success", func(t *testing.T) { //prepare pipeline environment now := time.Now() piperenv.SetResourceParameter(filepath.Join(dir, ".pipeline"), "commonPipelineEnvironment", "artifactVersion", now.Format("20060102150405")) cmd := command.Command{} cmd.SetDir(dir) piperOptions := []string{ "githubPublishRelease", "--owner", owner, "--repository", repository, "--token", token, "--assetPathList", testAsset, "--assetPathList", test2Asset, "--noTelemetry", } err = cmd.RunExecutable(getPiperExecutable(), piperOptions...) assert.NoError(t, err, "Calling piper with arguments %v failed.", piperOptions) }) } func TestGitHubIntegrationFetchCommitStatistics(t *testing.T) { t.Parallel() // prepare token := os.Getenv("PIPER_INTEGRATION_GITHUB_TOKEN") if len(token) == 0 { t.Fatal("No GitHub token maintained") } owner := os.Getenv("PIPER_INTEGRATION_GITHUB_OWNER") if len(owner) == 0 { owner = "OliverNocon" } repository := os.Getenv("PIPER_INTEGRATION_GITHUB_REPOSITORY") if len(repository) == 0 { repository = "piper-integration" } // test result, err := pipergithub.FetchCommitStatistics(&pipergithub.FetchCommitOptions{ Owner: owner, Repository: repository, APIURL: "https://api.github.com", Token: token, SHA: "3601ed6"}) // assert assert.NoError(t, err) assert.Equal(t, 2, result.Additions) assert.Equal(t, 0, result.Deletions) assert.Equal(t, 2, result.Total) assert.Equal(t, 1, result.Files) }