Skip to content

Commit b40e003

Browse files
committed
Included tests for internal/collector/source
- Included some tests for internal/collector/source Signed-off-by: nathannaveen <[email protected]>
1 parent b148d93 commit b40e003

File tree

3 files changed

+286
-1
lines changed

3 files changed

+286
-1
lines changed

internal/collector/depsdev/source.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type depsDevSet struct {
3737
}
3838

3939
func (s *depsDevSet) Namespace() signal.Namespace {
40-
return signal.Namespace("depsdev")
40+
return "depsdev"
4141
}
4242

4343
type depsDevSource struct {
+182
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
package depsdev
2+
3+
import (
4+
"context"
5+
"github.com/golang/mock/gomock"
6+
"github.com/ossf/criticality_score/internal/collector/signal"
7+
"github.com/ossf/criticality_score/internal/mock"
8+
"go.uber.org/zap"
9+
"net/url"
10+
"reflect"
11+
"testing"
12+
"time"
13+
)
14+
15+
func Test_parseRepoURL(t *testing.T) {
16+
tests := []struct {
17+
name string
18+
u *url.URL
19+
wantProjectName string
20+
wantProjectType string
21+
}{
22+
{
23+
name: "github.com",
24+
u: &url.URL{
25+
Host: "github.com",
26+
},
27+
wantProjectName: "",
28+
wantProjectType: "GITHUB",
29+
},
30+
{
31+
name: "random",
32+
u: &url.URL{
33+
Host: "random",
34+
},
35+
wantProjectName: "",
36+
wantProjectType: "",
37+
},
38+
}
39+
for _, tt := range tests {
40+
t.Run(tt.name, func(t *testing.T) {
41+
gotProjectName, gotProjectType := parseRepoURL(tt.u)
42+
if gotProjectName != tt.wantProjectName {
43+
t.Errorf("parseRepoURL() gotProjectName = %v, want %v", gotProjectName, tt.wantProjectName)
44+
}
45+
if gotProjectType != tt.wantProjectType {
46+
t.Errorf("parseRepoURL() gotProjectType = %v, want %v", gotProjectType, tt.wantProjectType)
47+
}
48+
})
49+
}
50+
}
51+
52+
func Test_depsDevSource_Get(t *testing.T) {
53+
type args struct {
54+
ctx context.Context
55+
rHostName string
56+
jobID string
57+
}
58+
tests := []struct { //nolint:govet
59+
name string
60+
logger *zap.Logger
61+
dependents *dependents
62+
args args
63+
want signal.Set
64+
wantErr bool
65+
}{
66+
{
67+
name: "invalid url",
68+
logger: zap.NewNop(),
69+
dependents: &dependents{},
70+
args: args{
71+
ctx: context.Background(),
72+
rHostName: "random",
73+
},
74+
want: &depsDevSet{},
75+
},
76+
}
77+
for _, tt := range tests {
78+
t.Run(tt.name, func(t *testing.T) {
79+
ctrl := gomock.NewController(t)
80+
defer ctrl.Finish()
81+
82+
r := mocks.NewMockRepo(ctrl)
83+
84+
r.EXPECT().URL().Return(&url.URL{Host: tt.args.rHostName}).AnyTimes()
85+
86+
c := &depsDevSource{
87+
logger: tt.logger,
88+
dependents: tt.dependents,
89+
}
90+
got, err := c.Get(tt.args.ctx, r, tt.args.jobID)
91+
if (err != nil) != tt.wantErr {
92+
t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
93+
return
94+
}
95+
if !reflect.DeepEqual(got, tt.want) {
96+
t.Errorf("Get() got = %v, want %v", got, tt.want)
97+
}
98+
})
99+
}
100+
}
101+
102+
func TestNewSource(t *testing.T) {
103+
type args struct {
104+
ctx context.Context
105+
logger *zap.Logger
106+
projectID string
107+
datasetName string
108+
datasetTTL time.Duration
109+
}
110+
test := struct { //nolint:govet
111+
name string
112+
args args
113+
want signal.Source
114+
wantErr bool
115+
}{
116+
name: "new client error",
117+
args: args{
118+
ctx: context.Background(),
119+
logger: zap.NewNop(),
120+
projectID: "",
121+
datasetName: "dataset",
122+
datasetTTL: time.Hour,
123+
},
124+
wantErr: true,
125+
}
126+
got, err := NewSource(test.args.ctx, test.args.logger, test.args.projectID, test.args.datasetName, test.args.datasetTTL)
127+
if (err != nil) != test.wantErr {
128+
t.Errorf("NewSource() error = %v, wantErr %v", err, test.wantErr)
129+
return
130+
}
131+
if !reflect.DeepEqual(got, test.want) {
132+
t.Errorf("NewSource() got = %v, want %v", got, test.want)
133+
}
134+
}
135+
136+
func Test_depsDevSource_IsSupported(t *testing.T) {
137+
type fields struct {
138+
logger *zap.Logger
139+
dependents *dependents
140+
}
141+
tests := []struct {
142+
name string
143+
fields fields
144+
rHostName string
145+
want bool
146+
}{
147+
{
148+
name: "github",
149+
fields: fields{
150+
logger: zap.NewNop(),
151+
},
152+
rHostName: "github.com",
153+
want: true,
154+
},
155+
{
156+
name: "random",
157+
fields: fields{
158+
logger: zap.NewNop(),
159+
},
160+
rHostName: "random",
161+
want: false,
162+
},
163+
}
164+
for _, tt := range tests {
165+
t.Run(tt.name, func(t *testing.T) {
166+
c := &depsDevSource{
167+
logger: tt.fields.logger,
168+
dependents: tt.fields.dependents,
169+
}
170+
ctrl := gomock.NewController(t)
171+
defer ctrl.Finish()
172+
173+
r := mocks.NewMockRepo(ctrl)
174+
175+
r.EXPECT().URL().Return(&url.URL{Host: tt.rHostName}).AnyTimes()
176+
177+
if got := c.IsSupported(r); got != tt.want {
178+
t.Errorf("IsSupported() = %v, want %v", got, tt.want)
179+
}
180+
})
181+
}
182+
}

internal/mock/repo.go

+103
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)