forked from braintree-go/braintree-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
customer_integration_test.go
116 lines (100 loc) · 2.41 KB
/
customer_integration_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
package braintree
import (
"testing"
"github.com/lionelbarrow/braintree-go/testhelpers"
)
// This test will fail unless you set up your Braintree sandbox account correctly. See TESTING.md for details.
func TestCustomer(t *testing.T) {
oc := &Customer{
FirstName: "Lionel",
LastName: "Barrow",
Company: "Braintree",
Email: "[email protected]",
Phone: "312.555.1234",
Fax: "614.555.5678",
Website: "http://www.example.com",
CreditCard: &CreditCard{
Number: testCreditCards["visa"].Number,
ExpirationDate: "05/14",
CVV: "200",
Options: &CreditCardOptions{
VerifyCard: true,
},
},
}
// Create with errors
_, err := testGateway.Customer().Create(oc)
if err == nil {
t.Fatal("Did not receive error when creating invalid customer")
}
// Create
oc.CreditCard.CVV = ""
oc.CreditCard.Options = nil
customer, err := testGateway.Customer().Create(oc)
t.Log(customer)
if err != nil {
t.Fatal(err)
}
if customer.Id == "" {
t.Fatal("invalid customer id")
}
if card := customer.DefaultCreditCard(); card == nil {
t.Fatal("invalid credit card")
}
if card := customer.DefaultCreditCard(); card.Token == "" {
t.Fatal("invalid token")
}
// Update
unique := testhelpers.RandomString()
newFirstName := "John" + unique
c2, err := testGateway.Customer().Update(&Customer{
Id: customer.Id,
FirstName: newFirstName,
})
t.Log(c2)
if err != nil {
t.Fatal(err)
}
if c2.FirstName != newFirstName {
t.Fatal("first name not changed")
}
// Find
c3, err := testGateway.Customer().Find(customer.Id)
t.Log(c3)
if err != nil {
t.Fatal(err)
}
if c3.Id != customer.Id {
t.Fatal("ids do not match")
}
// Search
query := new(SearchQuery)
f := query.AddTextField("first-name")
f.Is = newFirstName
searchResult, err := testGateway.Customer().Search(query)
if err != nil {
t.Fatal(err)
}
if len(searchResult.Customers) == 0 {
t.Fatal("could not search for a customer")
}
if id := searchResult.Customers[0].Id; id != customer.Id {
t.Fatalf("id from search does not match: got %s, wanted %s", id, customer.Id)
}
// Delete
err = testGateway.Customer().Delete(customer.Id)
if err != nil {
t.Fatal(err)
}
// Test customer 404
c4, err := testGateway.Customer().Find(customer.Id)
if err == nil {
t.Fatal("should return 404")
}
if err.Error() != "Not Found (404)" {
t.Fatal(err)
}
if c4 != nil {
t.Fatal(c4)
}
}