-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpayments_test.go
90 lines (82 loc) · 2.22 KB
/
payments_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
package mollie
import (
"log"
"testing"
"github.com/joho/godotenv"
)
var mollieTest = &APIClient{
Version: "v2",
}
func TestExtractErrorFromValidErrorData(t *testing.T) {
raw := []byte(`
{
"status":401,
"title":"Unauthorized Request",
"detail":"Missing authentication, or failed to authenticate",
"_links":{
"documentation":{
"href":"https://docs.mollie.com/overview/authentication",
"type":"text/html"
}
}
}
`)
err := extractError(401, raw)
if err == nil {
t.Error("should return error as error data is valid")
}
}
func TestExtractErrorFromUnknownErrorCode(t *testing.T) {
raw := []byte(`
{
"status":620,
"title":"Error title here",
"detail":"Lorem ipsum dolor sit amet",
"_links":{
"documentation":{
"href":"https://docs.mollie.com/overview/authentication",
"type":"text/html"
}
}
}
`)
err := extractError(620, raw)
if err == nil {
t.Error("should return error as error data is valid")
}
log.Println(err)
}
func TestCreatePaymentRequestWithInvalidSecret(t *testing.T) {
mollieTest.Secret = "abcdefghijklmnopqrstuvwxyz"
_, err := mollieTest.CreatePayment(&CreatePaymentParameters{})
if err == nil {
t.Error("create payment didn't return an error when secret key invalid")
}
// result is [error code 401] Unauthorized Request: Could not authenticate request
log.Println(err)
}
func TestCreatePaymentRequestMissingRequiredFields(t *testing.T) {
envFile, _ := godotenv.Read(".env")
mollieTest.Secret = envFile["MOLLIE_SECRET"]
_, err := mollieTest.CreatePayment(&CreatePaymentParameters{})
if err == nil {
t.Error("create payment didn't return an error despite missing required fields")
}
// result is [error code 422] Unprocessable Entity: The amount contains an invalid currency
log.Println(err)
}
func TestCreatePaymentRequestWithAllRequiredData(t *testing.T) {
envFile, _ := godotenv.Read(".env")
mollieTest.Secret = envFile["MOLLIE_SECRET"]
_, err := mollieTest.CreatePayment(&CreatePaymentParameters{
Amount: PaymentAmount{
Currency: UnitedStatesDollar,
Value: "10.00",
},
Description: "Payment for invoice #20240001",
RedirectURL: "https://websiteurl.com/tracking/order_number",
})
if err != nil {
t.Errorf("create payment failed: %v", err)
}
}