69 lines
1.7 KiB
Go
69 lines
1.7 KiB
Go
package model
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"go.mongodb.org/mongo-driver/v2/bson"
|
|
)
|
|
|
|
func TestPaymentMethodAsCardReadsStoredSnakeCaseExpiry(t *testing.T) {
|
|
data, err := bson.Marshal(bson.M{
|
|
"pan": "2200001100000001",
|
|
"firstName": "S",
|
|
"lastName": "S",
|
|
"exp_month": 12.0,
|
|
"exp_year": 2031.0,
|
|
"country": nil,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("marshal card data: %v", err)
|
|
}
|
|
|
|
card, err := (&PaymentMethod{
|
|
Type: PaymentTypeCard,
|
|
Data: data,
|
|
}).AsCard()
|
|
if err != nil {
|
|
t.Fatalf("AsCard returned error: %v", err)
|
|
}
|
|
|
|
if got, want := card.ExpMonth, 12; got == nil || *got != want {
|
|
t.Fatalf("exp_month mismatch: got=%v want=%d", got, want)
|
|
}
|
|
if got, want := card.ExpYear, 2031; got == nil || *got != want {
|
|
t.Fatalf("exp_year mismatch: got=%v want=%d", got, want)
|
|
}
|
|
}
|
|
|
|
func TestCardPaymentDataMarshalUsesStoredSnakeCaseExpiry(t *testing.T) {
|
|
expMonth := 12
|
|
expYear := 2031
|
|
raw, err := bson.Marshal(CardPaymentData{
|
|
Pan: "2200001100000001",
|
|
FirstName: "S",
|
|
LastName: "S",
|
|
ExpMonth: &expMonth,
|
|
ExpYear: &expYear,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("marshal card data: %v", err)
|
|
}
|
|
|
|
var data bson.M
|
|
if err := bson.Unmarshal(raw, &data); err != nil {
|
|
t.Fatalf("unmarshal card data: %v", err)
|
|
}
|
|
if got, want := paymentDataInt(data["exp_month"]), 12; got == nil || *got != want {
|
|
t.Fatalf("stored exp_month mismatch: got=%v want=%d", got, want)
|
|
}
|
|
if got, want := paymentDataInt(data["exp_year"]), 2031; got == nil || *got != want {
|
|
t.Fatalf("stored exp_year mismatch: got=%v want=%d", got, want)
|
|
}
|
|
if _, ok := data["expMonth"]; ok {
|
|
t.Fatalf("card data must not store camelCase expMonth: %#v", data)
|
|
}
|
|
if _, ok := data["expYear"]; ok {
|
|
t.Fatalf("card data must not store camelCase expYear: %#v", data)
|
|
}
|
|
}
|