mirror of
https://github.com/trufflesecurity/trufflehog.git
synced 2026-06-15 13:24:37 +00:00
Refactor GitHub source (#2379)
* refactor(github): cleanup logic * fix(github): lookup wikis per-repo * refactor(github): change scanErrs.String output --------- Co-authored-by: Bill Rich <bill.rich@gmail.com>
This commit is contained in:
co-authored by
Bill Rich
parent
eb0d4ae5d2
commit
80e8a67c2d
@@ -8,10 +8,8 @@ import (
|
||||
"encoding/pem"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -27,7 +25,6 @@ import (
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/context"
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/credentialspb"
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/sourcespb"
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/sources"
|
||||
)
|
||||
|
||||
func createTestSource(src *sourcespb.GitHub) (*Source, *anypb.Any) {
|
||||
@@ -713,34 +710,23 @@ func Test_scan_SetProgressComplete(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestProcessRepoComments(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
trimmedURL []string
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "URL with missing owner and/or repo",
|
||||
trimmedURL: []string{"https://github.com/"},
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "URL with complete owner and repo",
|
||||
trimmedURL: []string{"https://github.com/", "owner", "repo"},
|
||||
wantErr: false,
|
||||
},
|
||||
// TODO: Add more test cases to cover other scenarios.
|
||||
func TestGetRepoURLParts(t *testing.T) {
|
||||
tests := []string{
|
||||
"https://github.com/trufflesecurity/trufflehog.git",
|
||||
"git+https://github.com/trufflesecurity/trufflehog.git",
|
||||
//"git@github.com:trufflesecurity/trufflehog.git",
|
||||
"ssh://github.com/trufflesecurity/trufflehog.git",
|
||||
"ssh://git@github.com/trufflesecurity/trufflehog.git",
|
||||
"git+ssh://git@github.com/trufflesecurity/trufflehog.git",
|
||||
"git://github.com/trufflesecurity/trufflehog.git",
|
||||
}
|
||||
|
||||
expected := []string{"github.com", "trufflesecurity", "trufflehog"}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
s := &Source{}
|
||||
repoURL, _ := url.Parse(strings.Join(tt.trimmedURL, "/"))
|
||||
chunksChan := make(chan *sources.Chunk)
|
||||
|
||||
err := s.processRepoComments(context.Background(), "repoPath", tt.trimmedURL, repoURL, chunksChan)
|
||||
assert.Equal(t, tt.wantErr, err != nil)
|
||||
})
|
||||
_, parts, err := getRepoURLParts(tt)
|
||||
if err != nil {
|
||||
t.Fatalf("failed: %v", err)
|
||||
}
|
||||
assert.Equal(t, expected, parts)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -748,17 +734,15 @@ func TestGetGistID(t *testing.T) {
|
||||
tests := []struct {
|
||||
trimmedURL []string
|
||||
expected string
|
||||
err bool
|
||||
}{
|
||||
{[]string{"https://gist.github.com", "12345"}, "12345", false},
|
||||
{[]string{"https://gist.github.com", "owner", "12345"}, "12345", false},
|
||||
{[]string{"https://gist.github.com"}, "", true},
|
||||
{[]string{"https://gist.github.com", "owner", "12345", "extra"}, "", true},
|
||||
{[]string{"https://gist.github.com", "12345"}, "12345"},
|
||||
{[]string{"https://gist.github.com", "owner", "12345"}, "12345"},
|
||||
{[]string{"https://gist.github.com"}, ""},
|
||||
{[]string{"https://gist.github.com", "owner", "12345", "extra"}, ""},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
got, err := extractGistID(tt.trimmedURL)
|
||||
assert.Equal(t, tt.err, err != nil)
|
||||
got := extractGistID(tt.trimmedURL)
|
||||
assert.Equal(t, tt.expected, got)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user