Skip to content

Commit

Permalink
🌱 Gitlab: Move tests that connect to gitlab.com out of unit-tests (#3221
Browse files Browse the repository at this point in the history
)

* Move tests that connect to GitLab out of e2e

Signed-off-by: Raghav Kaul <[email protected]>

* update

Signed-off-by: Raghav Kaul <[email protected]>

* mark as pat test

Signed-off-by: Raghav Kaul <[email protected]>

---------

Signed-off-by: Raghav Kaul <[email protected]>
  • Loading branch information
raghavkaul authored Jun 29, 2023
1 parent b2bc681 commit c72cfd5
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 99 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ e2e-pat: build-scorecard check-env | $(GINKGO)
e2e-gh-token: ## Runs e2e tests. Requires GITHUB_AUTH_TOKEN env var to be set to default GITHUB_TOKEN
e2e-gh-token: build-scorecard check-env | $(GINKGO)
# Run e2e tests. GITHUB_AUTH_TOKEN set to secrets.GITHUB_TOKEN must be used to run this.
TOKEN_TYPE="GITHUB_TOKEN" $(GINKGO) --race -p -v -cover -coverprofile=e2e-coverage.out --keep-separate-coverprofiles ./...
GITLAB_AUTH_TOKEN="" TOKEN_TYPE="GITHUB_TOKEN" $(GINKGO) --race -p -v -cover -coverprofile=e2e-coverage.out --keep-separate-coverprofiles ./...

e2e-gitlab-token: ## Runs e2e tests that require a GITLAB_TOKEN
e2e-gitlab-token: build-scorecard check-env-gitlab | $(GINKGO)
Expand Down
75 changes: 75 additions & 0 deletions clients/gitlabrepo/commits_e2e_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// Copyright 2023 OpenSSF Scorecard Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package gitlabrepo

import (
"context"
"fmt"
"os"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)

type tokenType int

const (
patTokenType tokenType = iota
githubWorkflowDefaultTokenType
gitlabPATTokenType
)

var tokType tokenType

func skipIfTokenIsNot(t tokenType, msg string) {
if tokType != t {
Skip(msg)
}
}

var _ = BeforeSuite(func() {
tt := os.Getenv("TOKEN_TYPE")
switch tt {
case "PAT":
tokType = patTokenType
case "GITHUB_TOKEN":
tokType = githubWorkflowDefaultTokenType
case "GITLAB_PAT":
tokType = gitlabPATTokenType
default:
panic(fmt.Sprintf("invalid TOKEN_TYPE: %s", tt))
}
})

var _ = Describe("E2E TEST: gitlabrepo.commitsHandler", func() {
Context("ListCommits", func() {
It("Checks whether commits are listed - GitLab", func() {
skipIfTokenIsNot(patTokenType, "PAT only")
repo, err := MakeGitlabRepo("https://gitlab.com/baserow/baserow")
Expect(err).Should(BeNil())

client, err := CreateGitlabClient(context.Background(), repo.Host())
Expect(err).Should(BeNil())

err = client.InitRepo(repo, "8a38c9f724c19b5422e27864a108318d1f769b8a", 20)
Expect(err).Should(BeNil())

c, err := client.ListCommits()
Expect(err).Should(BeNil())

Expect(len(c)).Should(BeNumerically(">", 0))
})
})
})
45 changes: 0 additions & 45 deletions clients/gitlabrepo/commits_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,54 +15,9 @@
package gitlabrepo

import (
"context"
"testing"
)

func Test_Setup(t *testing.T) {
t.Parallel()
tcs := []struct {
name string
repourl string
commit string
depth int
}{
{
name: "check that listcommits works",
repourl: "https://gitlab.com/fdroid/fdroidclient",
commit: "a4bbef5c70fd2ac7c15437a22ef0f9ef0b447d08",
depth: 20,
},
}

for _, tt := range tcs {
t.Run(tt.name, func(t *testing.T) {
repo, err := MakeGitlabRepo(tt.repourl)
if err != nil {
t.Error("couldn't make gitlab repo", err)
}

client, err := CreateGitlabClient(context.Background(), repo.Host())
if err != nil {
t.Error("couldn't make gitlab client", err)
}

err = client.InitRepo(repo, tt.commit, tt.depth)
if err != nil {
t.Error("couldn't init gitlab repo", err)
}

c, err := client.ListCommits()
if err != nil {
t.Error("couldn't list gitlab repo commits", err)
}
if len(c) == 0 {
t.Error("couldn't get any commits from gitlab repo")
}
})
}
}

func TestParsingEmail(t *testing.T) {
t.Parallel()

Expand Down
53 changes: 0 additions & 53 deletions clients/gitlabrepo/contributors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,66 +15,13 @@
package gitlabrepo

import (
"context"
"fmt"
"strconv"
"strings"
"sync"
"testing"

"github.com/xanzy/go-gitlab"
)

func Test_ContributorsSetup(t *testing.T) {
t.Parallel()
tcs := []struct {
name string
repourl string
commit string
depth int
}{
{
name: "check that Contributor works",
repourl: "https://gitlab.com/fdroid/fdroidclient",
commit: "HEAD",
depth: 20,
},
}

for _, tt := range tcs {
t.Run(tt.name, func(t *testing.T) {
repo, err := MakeGitlabRepo(tt.repourl)
if err != nil {
t.Error("couldn't make gitlab repo", err)
}

client, err := CreateGitlabClientWithToken(context.Background(), "", repo.Host())
if err != nil {
t.Error("couldn't make gitlab client", err)
}

err = client.InitRepo(repo, tt.commit, tt.depth)
if err != nil {
t.Error("couldn't init gitlab repo",
err)
}

c, err := client.ListContributors()
// Authentication is failing when querying users, not sure yet how to get around that
if err != nil {
errMsg := fmt.Sprintf("%v", err)

if !(strings.Contains(errMsg, "error during Users.Get") && strings.Contains(errMsg, "401")) {
t.Error("couldn't list gitlab repo contributors", err)
}
}
if len(c) != 0 {
t.Error("couldn't get any contributors from gitlab repo")
}
})
}
}

func TestContributors(t *testing.T) {
t.Parallel()

Expand Down
26 changes: 26 additions & 0 deletions e2e/contributors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ package e2e

import (
"context"
"fmt"
"strings"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
Expand All @@ -24,6 +26,7 @@ import (
"github.com/ossf/scorecard/v4/checks"
"github.com/ossf/scorecard/v4/clients"
"github.com/ossf/scorecard/v4/clients/githubrepo"
"github.com/ossf/scorecard/v4/clients/gitlabrepo"
scut "github.com/ossf/scorecard/v4/utests"
)

Expand Down Expand Up @@ -54,5 +57,28 @@ var _ = Describe("E2E TEST:"+checks.CheckContributors, func() {
Expect(scut.ValidateTestReturn(nil, "several contributors", &expected, &result, &dl)).Should(BeTrue())
Expect(repoClient.Close()).Should(BeNil())
})

It("Should return valid project contributors - GitLab", func() {
skipIfTokenIsNot(gitlabPATTokenType, "PAT only")
repo, err := gitlabrepo.MakeGitlabRepo("https://gitlab.com/baserow/baserow")
Expect(err).Should(BeNil())

client, err := gitlabrepo.CreateGitlabClient(context.Background(), repo.Host())
Expect(err).Should(BeNil())

err = client.InitRepo(repo, "HEAD", 20)
Expect(err).Should(BeNil())

c, err := client.ListContributors()
// Authentication is failing when querying users, not sure yet how to get around that
if err != nil {
errMsg := fmt.Sprintf("%v", err)

if !(strings.Contains(errMsg, "error during Users.Get") && strings.Contains(errMsg, "401")) {
Fail(fmt.Sprintf("couldn't list gitlab repo contributors: %v", err))
}
}
Expect(len(c)).Should(BeNumerically(">", 0))
})
})
})

0 comments on commit c72cfd5

Please sign in to comment.