Skip to content

Commit f853a9c

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 f853a9c

File tree

3 files changed

+288
-1
lines changed

3 files changed

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

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)