Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sundowndev
GitHub Repository: sundowndev/phoneinfoga
Path: blob/master/lib/remote/ovh_scanner_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/lib/remote/suppliers"
10
"github.com/sundowndev/phoneinfoga/v2/mocks"
11
"testing"
12
)
13
14
func TestOVHScanner_Metadata(t *testing.T) {
15
scanner := remote.NewOVHScanner(&mocks.OVHSupplier{})
16
assert.Equal(t, remote.OVH, scanner.Name())
17
assert.NotEmpty(t, scanner.Description())
18
}
19
20
func TestOVHScanner(t *testing.T) {
21
dummyError := errors.New("dummy")
22
23
dummyNumber, _ := number.NewNumber("33365174444")
24
25
testcases := []struct {
26
name string
27
number *number.Number
28
mocks func(s *mocks.OVHSupplier)
29
expected map[string]interface{}
30
wantErrors map[string]error
31
}{
32
{
33
name: "successful scan",
34
number: func() *number.Number {
35
return dummyNumber
36
}(),
37
mocks: func(s *mocks.OVHSupplier) {
38
s.On("Search", *dummyNumber).Return(&suppliers.OVHScannerResponse{
39
Found: false,
40
}, nil).Once()
41
},
42
expected: map[string]interface{}{
43
"ovh": remote.OVHScannerResponse{
44
Found: false,
45
},
46
},
47
wantErrors: map[string]error{},
48
},
49
{
50
name: "failed scan",
51
number: func() *number.Number {
52
return dummyNumber
53
}(),
54
mocks: func(s *mocks.OVHSupplier) {
55
s.On("Search", *dummyNumber).Return(nil, dummyError).Once()
56
},
57
expected: map[string]interface{}{},
58
wantErrors: map[string]error{
59
"ovh": dummyError,
60
},
61
},
62
{
63
name: "country not supported",
64
number: func() *number.Number {
65
num, _ := number.NewNumber("15556661212")
66
return num
67
}(),
68
mocks: func(s *mocks.OVHSupplier) {},
69
expected: map[string]interface{}{},
70
wantErrors: map[string]error{},
71
},
72
}
73
74
for _, tt := range testcases {
75
t.Run(tt.name, func(t *testing.T) {
76
OVHSupplierMock := &mocks.OVHSupplier{}
77
tt.mocks(OVHSupplierMock)
78
79
scanner := remote.NewOVHScanner(OVHSupplierMock)
80
lib := remote.NewLibrary(filter.NewEngine())
81
lib.AddScanner(scanner)
82
83
got, errs := lib.Scan(tt.number, remote.ScannerOptions{})
84
if len(tt.wantErrors) > 0 {
85
assert.Equal(t, tt.wantErrors, errs)
86
} else {
87
assert.Len(t, errs, 0)
88
}
89
assert.Equal(t, tt.expected, got)
90
91
OVHSupplierMock.AssertExpectations(t)
92
})
93
}
94
}
95
96