Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sundowndev
GitHub Repository: sundowndev/phoneinfoga
Path: blob/master/lib/remote/suppliers/numverify_test.go
994 views
1
package suppliers
2
3
import (
4
"errors"
5
"github.com/stretchr/testify/assert"
6
"gopkg.in/h2non/gock.v1"
7
"net/url"
8
"os"
9
"testing"
10
)
11
12
func TestNumverifySupplierSuccessCustomApiKey(t *testing.T) {
13
defer gock.Off() // Flush pending mocks after test execution
14
15
number := "11115551212"
16
apikey := "5ad5554ac240e4d3d31107941b35a5eb"
17
18
expectedResult := &NumverifyValidateResponse{
19
Valid: true,
20
Number: "79516566591",
21
LocalFormat: "9516566591",
22
InternationalFormat: "+79516566591",
23
CountryPrefix: "+7",
24
CountryCode: "RU",
25
CountryName: "Russian Federation",
26
Location: "Saint Petersburg and Leningrad Oblast",
27
Carrier: "OJSC St. Petersburg Telecom (OJSC Tele2-Saint-Petersburg)",
28
LineType: "mobile",
29
}
30
31
gock.New("https://api.apilayer.com").
32
Get("/number_verification/validate").
33
MatchHeader("Apikey", apikey).
34
MatchParam("number", number).
35
Reply(200).
36
JSON(expectedResult)
37
38
s := NewNumverifySupplier()
39
40
got, err := s.Request().SetApiKey(apikey).ValidateNumber(number)
41
assert.Nil(t, err)
42
43
assert.Equal(t, expectedResult, got)
44
}
45
46
func TestNumverifySupplierError(t *testing.T) {
47
defer gock.Off() // Flush pending mocks after test execution
48
49
number := "11115551212"
50
apikey := "5ad5554ac240e4d3d31107941b35a5eb"
51
52
expectedResult := &NumverifyErrorResponse{
53
Message: "You have exceeded your daily\\/monthly API rate limit. Please review and upgrade your subscription plan at https:\\/\\/apilayer.com\\/subscriptions to continue.",
54
}
55
56
gock.New("https://api.apilayer.com").
57
Get("/number_verification/validate").
58
MatchHeader("Apikey", apikey).
59
MatchParam("number", number).
60
Reply(429).
61
JSON(expectedResult)
62
63
s := NewNumverifySupplier()
64
65
got, err := s.Request().SetApiKey(apikey).ValidateNumber(number)
66
assert.Nil(t, got)
67
assert.Equal(t, errors.New("You have exceeded your daily\\/monthly API rate limit. Please review and upgrade your subscription plan at https:\\/\\/apilayer.com\\/subscriptions to continue."), err)
68
}
69
70
func TestNumverifySupplierHTTPError(t *testing.T) {
71
defer gock.Off() // Flush pending mocks after test execution
72
73
number := "11115551212"
74
75
_ = os.Setenv("NUMVERIFY_API_KEY", "5ad5554ac240e4d3d31107941b35a5eb")
76
defer os.Clearenv()
77
78
dummyError := errors.New("test")
79
80
gock.New("https://api.apilayer.com").
81
Get("/number_verification/validate").
82
ReplyError(dummyError)
83
84
s := NewNumverifySupplier()
85
86
got, err := s.Request().ValidateNumber(number)
87
assert.Nil(t, got)
88
assert.Equal(t, &url.Error{
89
Op: "Get",
90
URL: "https://api.apilayer.com/number_verification/validate?number=11115551212",
91
Err: dummyError,
92
}, err)
93
}
94
95