This repository was archived by the owner on Mar 25, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhook_test.go
More file actions
82 lines (63 loc) · 3.77 KB
/
hook_test.go
File metadata and controls
82 lines (63 loc) · 3.77 KB
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
package themap
import (
"errors"
"os"
"strconv"
"testing"
)
func TestHook(t *testing.T) {
tests := []struct {
payload string
want *Notify
err error
sig string
}{
{`Amount=1&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=1bM8q4ZaJsrW4RyHLp5MunINfzZ&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8q9QvSVt54NtIhS9JFtxaH10&Notification=AddCard&OriginalOrderId=CardAdd4&RRN=123456789&State=Voided&Success=true`,
&Notify{Type: "AddCard", Amount: 1, CardUID: "1bM8q4ZaJsrW4RyHLp5MunINfzZ", CardNumber: "411111xxxxxx1112"}, nil, ""},
{`Amount=20000&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8SIqrl1t8breAOXC1lnykhA4&Notification=Block&OriginalOrderId=TipNo3&RRN=123456789&State=Charged&Success=true`,
&Notify{Type: "Block", Amount: 20000, CardNumber: "411111xxxxxx1112"}, nil, ""},
// Bad amount
{`Amount=z&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8SIqrl1t8breAOXC1lnykhA4&Notification=Block&OriginalOrderId=TipNo3&RRN=123456789&State=Charged&Success=true`,
&Notify{Type: "Block", Amount: 0, CardNumber: "411111xxxxxx1112"}, nil, ""},
// Bad success
{`Amount=2000&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8SIqrl1t8breAOXC1lnykhA4&Notification=Block&OriginalOrderId=TipNo3&RRN=123456789&State=Charged&Success=-1`,
&Notify{Type: "Block", Amount: 2000, CardNumber: "411111xxxxxx1112"}, strconv.ErrSyntax, ""},
// Bad fee
{`FeePercent=z&Amount=2000&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8SIqrl1t8breAOXC1lnykhA4&Notification=Block&OriginalOrderId=TipNo3&RRN=123456789&State=Charged&Success=true`,
&Notify{Type: "Block", Amount: 2000, FeePercent: 0, CardNumber: "411111xxxxxx1112"}, nil, ""},
// Good fee
{`FeePercent=1&Amount=2000&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8SIqrl1t8breAOXC1lnykhA4&Notification=Block&OriginalOrderId=TipNo3&RRN=123456789&State=Charged&Success=true`,
&Notify{Type: "Block", Amount: 2000, FeePercent: 1, CardNumber: "411111xxxxxx1112"}, nil, ""},
// Bad terminal is
{`TerminalID=a&Amount=3000&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8SIqrl1t8breAOXC1lnykhA4&Notification=Block&OriginalOrderId=TipNo3&RRN=123456789&State=Charged&Success=true`,
&Notify{Type: "Block", Amount: 3000, CardNumber: "411111xxxxxx1112"}, strconv.ErrSyntax, "ssx"},
// Bad signature
{`Amount=2000&AuthCode=777777&CardNumber=411111xxxxxx1112&CardUId=&ErrCode=&MerchantContract=SendtipsTestTerminal&MerchantOrderId=1bM8SIqrl1t8breAOXC1lnykhA4&Signature=BadSignature&Notification=Block&OriginalOrderId=TipNo3&RRN=123456789&State=Charged&Success=true`,
&Notify{Type: "Block", Amount: 2000, CardNumber: "411111xxxxxx1112"}, ErrBadSignature, os.Getenv("THEMAPSIGNKEY")},
}
for _, test := range tests {
notify, err := NewNotify(test.payload, test.sig)
if !errors.Is(err, test.err) {
t.Error("Error occurred: ", err, test.err)
}
// if test.err == strconv.ErrSyntax {
// if !errors.Is(err, test.err) {
// t.Error("Error occurred: ", err, test.err)
// }
// } else if err != test.err {
// t.Error("Error occurred: ", err, test.err)
// }
if notify.Type != test.want.Type {
t.Error("Incorrect type")
}
if notify.CardUID != test.want.CardUID {
t.Error("CardUID empty")
}
if notify.Amount != test.want.Amount {
t.Error("Amount is wrong")
}
if notify.FeePercent != test.want.FeePercent {
t.Error("FeePercent is wrong")
}
}
}