Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sundowndev
GitHub Repository: sundowndev/phoneinfoga
Path: blob/master/lib/remote/remote_test.go
988 views
1
package remote_test
2
3
import (
4
"errors"
5
"github.com/stretchr/testify/assert"
6
"github.com/sundowndev/phoneinfoga/v2/lib/filter"
7
"github.com/sundowndev/phoneinfoga/v2/lib/number"
8
"github.com/sundowndev/phoneinfoga/v2/lib/remote"
9
"github.com/sundowndev/phoneinfoga/v2/mocks"
10
"testing"
11
)
12
13
func TestRemoteLibrary_SuccessScan(t *testing.T) {
14
type fakeScannerResponse struct {
15
Valid bool
16
}
17
18
expected := map[string]interface{}{
19
"fake": fakeScannerResponse{Valid: true},
20
"fake2": fakeScannerResponse{Valid: false},
21
}
22
23
num, err := number.NewNumber("15556661212")
24
if err != nil {
25
t.Fatal(err)
26
}
27
28
fakeScanner := &mocks.Scanner{}
29
fakeScanner.On("Name").Return("fake").Times(2)
30
fakeScanner.On("DryRun", *num, remote.ScannerOptions{}).Return(nil).Once()
31
fakeScanner.On("Run", *num, remote.ScannerOptions{}).Return(fakeScannerResponse{Valid: true}, nil).Once()
32
33
fakeScanner2 := &mocks.Scanner{}
34
fakeScanner2.On("Name").Return("fake2").Times(2)
35
fakeScanner2.On("DryRun", *num, remote.ScannerOptions{}).Return(nil).Once()
36
fakeScanner2.On("Run", *num, remote.ScannerOptions{}).Return(fakeScannerResponse{Valid: false}, nil).Once()
37
38
lib := remote.NewLibrary(filter.NewEngine())
39
40
lib.AddScanner(fakeScanner)
41
lib.AddScanner(fakeScanner2)
42
43
result, errs := lib.Scan(num, remote.ScannerOptions{})
44
assert.Equal(t, expected, result)
45
assert.Equal(t, map[string]error{}, errs)
46
47
fakeScanner.AssertExpectations(t)
48
fakeScanner2.AssertExpectations(t)
49
}
50
51
func TestRemoteLibrary_FailedScan(t *testing.T) {
52
num, err := number.NewNumber("15556661212")
53
if err != nil {
54
t.Fatal(err)
55
}
56
57
dummyError := errors.New("test")
58
59
fakeScanner := &mocks.Scanner{}
60
fakeScanner.On("Name").Return("fake").Times(2)
61
fakeScanner.On("DryRun", *num, remote.ScannerOptions{}).Return(nil).Once()
62
fakeScanner.On("Run", *num, remote.ScannerOptions{}).Return(nil, dummyError).Once()
63
64
lib := remote.NewLibrary(filter.NewEngine())
65
66
lib.AddScanner(fakeScanner)
67
68
result, errs := lib.Scan(num, remote.ScannerOptions{})
69
assert.Equal(t, map[string]interface{}{}, result)
70
assert.Equal(t, map[string]error{"fake": dummyError}, errs)
71
72
fakeScanner.AssertExpectations(t)
73
}
74
75
func TestRemoteLibrary_EmptyScan(t *testing.T) {
76
num, err := number.NewNumber("15556661212")
77
if err != nil {
78
t.Fatal(err)
79
}
80
81
fakeScanner := &mocks.Scanner{}
82
fakeScanner.On("Name").Return("mockscanner").Times(2)
83
fakeScanner.On("DryRun", *num, remote.ScannerOptions{}).Return(errors.New("dummy error")).Once()
84
85
lib := remote.NewLibrary(filter.NewEngine())
86
87
lib.AddScanner(fakeScanner)
88
89
result, errs := lib.Scan(num, remote.ScannerOptions{})
90
assert.Equal(t, map[string]interface{}{}, result)
91
assert.Equal(t, map[string]error{}, errs)
92
93
fakeScanner.AssertExpectations(t)
94
}
95
96
func TestRemoteLibrary_PanicRun(t *testing.T) {
97
num, err := number.NewNumber("15556661212")
98
if err != nil {
99
t.Fatal(err)
100
}
101
102
fakeScanner := &mocks.Scanner{}
103
fakeScanner.On("Name").Return("fake")
104
fakeScanner.On("DryRun", *num, remote.ScannerOptions{}).Return(nil).Once()
105
fakeScanner.On("Run", *num, remote.ScannerOptions{}).Panic("dummy panic").Once()
106
107
lib := remote.NewLibrary(filter.NewEngine())
108
109
lib.AddScanner(fakeScanner)
110
111
result, errs := lib.Scan(num, remote.ScannerOptions{})
112
assert.Equal(t, map[string]interface{}{}, result)
113
assert.Equal(t, map[string]error{"fake": errors.New("panic occurred while running scan, see debug logs")}, errs)
114
115
fakeScanner.AssertExpectations(t)
116
}
117
118
func TestRemoteLibrary_PanicDryRun(t *testing.T) {
119
num, err := number.NewNumber("15556661212")
120
if err != nil {
121
t.Fatal(err)
122
}
123
124
fakeScanner := &mocks.Scanner{}
125
fakeScanner.On("Name").Return("fake")
126
fakeScanner.On("DryRun", *num, remote.ScannerOptions{}).Panic("dummy panic").Once()
127
128
lib := remote.NewLibrary(filter.NewEngine())
129
130
lib.AddScanner(fakeScanner)
131
132
result, errs := lib.Scan(num, remote.ScannerOptions{})
133
assert.Equal(t, map[string]interface{}{}, result)
134
assert.Equal(t, map[string]error{"fake": errors.New("panic occurred while running scan, see debug logs")}, errs)
135
136
fakeScanner.AssertExpectations(t)
137
}
138
139
func TestRemoteLibrary_GetAllScanners(t *testing.T) {
140
fakeScanner := &mocks.Scanner{}
141
fakeScanner.On("Name").Return("fake")
142
143
fakeScanner2 := &mocks.Scanner{}
144
fakeScanner2.On("Name").Return("fake2")
145
146
lib := remote.NewLibrary(filter.NewEngine())
147
148
lib.AddScanner(fakeScanner)
149
lib.AddScanner(fakeScanner2)
150
151
assert.Equal(t, []remote.Scanner{fakeScanner, fakeScanner2}, lib.GetAllScanners())
152
}
153
154
func TestRemoteLibrary_AddIgnoredScanner(t *testing.T) {
155
fakeScanner := &mocks.Scanner{}
156
fakeScanner.On("Name").Return("fake")
157
158
fakeScanner2 := &mocks.Scanner{}
159
fakeScanner2.On("Name").Return("fake2")
160
161
f := filter.NewEngine()
162
f.AddRule("fake2")
163
lib := remote.NewLibrary(f)
164
165
lib.AddScanner(fakeScanner)
166
lib.AddScanner(fakeScanner2)
167
168
assert.Equal(t, []remote.Scanner{fakeScanner}, lib.GetAllScanners())
169
}
170
171