Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sundowndev
GitHub Repository: sundowndev/phoneinfoga
Path: blob/master/web/v2/api/handlers/numbers_test.go
994 views
1
package handlers_test
2
3
import (
4
"bytes"
5
"encoding/json"
6
"github.com/stretchr/testify/assert"
7
"github.com/sundowndev/phoneinfoga/v2/web/v2/api"
8
"github.com/sundowndev/phoneinfoga/v2/web/v2/api/handlers"
9
"github.com/sundowndev/phoneinfoga/v2/web/v2/api/server"
10
"net/http"
11
"net/http/httptest"
12
"testing"
13
)
14
15
func TestAddNumber(t *testing.T) {
16
type expectedResponse struct {
17
Code int
18
Body interface{}
19
}
20
21
testcases := []struct {
22
Name string
23
Input handlers.AddNumberInput
24
Expected expectedResponse
25
}{
26
{
27
Name: "test successfully adding number",
28
Input: handlers.AddNumberInput{Number: "14152229670"},
29
Expected: expectedResponse{
30
Code: 200,
31
Body: handlers.AddNumberResponse{
32
Valid: true,
33
RawLocal: "4152229670",
34
Local: "(415) 222-9670",
35
E164: "+14152229670",
36
International: "14152229670",
37
CountryCode: 1,
38
Country: "US",
39
Carrier: "",
40
},
41
},
42
},
43
{
44
Name: "test bad params",
45
Input: handlers.AddNumberInput{Number: "a14152229670"},
46
Expected: expectedResponse{
47
Code: 400,
48
Body: api.ErrorResponse{Error: "Invalid phone number: please provide an integer without any special chars"},
49
},
50
},
51
{
52
Name: "test invalid number",
53
Input: handlers.AddNumberInput{Number: "331"},
54
Expected: expectedResponse{
55
Code: 400,
56
Body: api.ErrorResponse{Error: "the string supplied is too short to be a phone number"},
57
},
58
},
59
}
60
61
for _, tt := range testcases {
62
t.Run(tt.Name, func(t *testing.T) {
63
r := server.NewServer()
64
65
data, err := json.Marshal(&tt.Input)
66
if err != nil {
67
t.Fatal(err)
68
}
69
70
req, err := http.NewRequest(http.MethodPost, "/v2/numbers", bytes.NewReader(data))
71
if err != nil {
72
t.Fatal(err)
73
}
74
w := httptest.NewRecorder()
75
r.ServeHTTP(w, req)
76
77
b, err := json.Marshal(tt.Expected.Body)
78
if err != nil {
79
t.Fatal(err)
80
}
81
82
assert.Equal(t, tt.Expected.Code, w.Code)
83
assert.Equal(t, string(b), w.Body.String())
84
})
85
}
86
}
87
88