-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrequest_test.go
128 lines (119 loc) · 3.03 KB
/
request_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package mobilepulsa_test
import (
"context"
"errors"
"log"
"net/http"
"testing"
mobilepulsa "github.com/pandudpn/mobile-pulsa-go"
"github.com/pandudpn/mobile-pulsa-go/pricelist"
)
func initTesting() *mobilepulsa.Option {
opts := mobilepulsa.NewOption()
opts.SetUsername("abc")
opts.SetAPIKey("abc")
return opts
}
func TestAPIRequestImplementation_Call(t *testing.T) {
opts := initTesting()
testCases := []struct {
name string
context context.Context
url string
header map[string]string
data interface{}
expectedResult *mobilepulsa.PriceList
expectedErr error
}{
{
name: "success get price list products prepaid",
context: context.Background(),
url: "https://prepaid.iak.dev/api/pricelist",
header: map[string]string{
"Accept": "*/*",
},
data: &pricelist.PriceListParam{
Service: pricelist.Prepaid,
Status: "all",
},
expectedResult: &mobilepulsa.PriceList{
Data: mobilepulsa.DataPricelist{
PriceList: []mobilepulsa.DataPrepaid{
{
ProductCode: "htelkomsel1000",
ProductPrice: 1900,
ProductNominal: "1000",
ProductDescription: "Telkomsel",
},
},
},
},
expectedErr: nil,
},
{
name: "success get price list products postpaid",
context: context.Background(),
url: "https://testpostpaid.mobilepulsa.net/api/v1/bill/check",
header: nil,
data: &pricelist.PriceListParam{
Service: pricelist.Postpaid,
Status: "all",
},
expectedResult: &mobilepulsa.PriceList{
Data: mobilepulsa.DataPricelist{
Pasca: []mobilepulsa.DataPostpaid{
{
Code: "BPJS",
Name: "BPJS Kesehatan",
Fee: 2500,
Komisi: 1150,
Status: 1,
},
},
},
},
expectedErr: nil,
},
{
name: "error given missing required fields",
context: nil,
url: "https://testpostpaid.mobilepulsa.net/api/v1/bill/check",
header: nil,
data: &pricelist.PriceListParam{
Service: pricelist.Postpaid,
},
expectedResult: nil,
expectedErr: errors.New("missing required fields: Status"),
},
{
name: "error given json unmarshal",
context: nil,
url: "https://testpostpaid.mobilepulsa.net/api/v1/bill/check",
header: nil,
data: "<",
expectedResult: nil,
expectedErr: errors.New("invalid character '<' looking for beginning of value"),
},
{
name: "error url not found",
context: nil,
url: "",
header: nil,
data: "<",
expectedResult: nil,
expectedErr: errors.New("invalid character '<' looking for beginning of value"),
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
var header = make(http.Header)
if len(tc.header) > 0 {
log.Println(tc.header)
for k, v := range tc.header {
header.Add(k, v)
}
}
opts.GetAPIRequest().Call(tc.context, http.MethodPost, tc.url, header, tc.data, tc.expectedResult)
})
}
}