-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathrequest_test.go
82 lines (74 loc) · 3.04 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
package request
import (
"github.com/stretchr/testify/assert"
"strings"
"testing"
)
const xmlHeader string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
const gatewayRequestElem string = document_base // "<gatewayRequest>"
func TestNewGatewayRequest(t *testing.T) {
request := NewGatewayRequest()
request2 := GatewayRequest{}
request2.ToXMLString()
xml := request.ToXMLString()
assert.True(t, strings.HasPrefix(xml, xmlHeader), "Expect xml header")
assert.True(t, strings.HasPrefix(xml, xmlHeader+"\n<"+gatewayRequestElem+">"), "Expect xml header and start root element")
assert.True(t, strings.HasSuffix(xml, "</"+gatewayRequestElem+">"), "Expect end root element")
assert.True(t, strings.Contains(xml, "<version>"+version_no+"</version>"))
}
func TestGatewayRequestSet(t *testing.T) {
request := NewGatewayRequest()
request.Set("a", "1")
request.SetInt("b", 2)
xml := request.ToXMLString()
assert.True(t, strings.Contains(xml, "<a>1</a>"), "Expect a=1 value")
assert.True(t, strings.Contains(xml, "<b>2</b>"), "Expect b=2 value")
}
func TestGatewayRequestGet(t *testing.T) {
request := NewGatewayRequest()
request.Set("a", "1")
assert.Equal(t, "1", request.Get("a"), "Expect 1 for key a")
request.SetInt("b", 2)
assert.Equal(t, "2", request.Get("b"), "Expect 2 for key b")
// Get value for invalid key
assert.Equal(t, "", request.Get("invalid_key"), "Expect empty for invalid_key")
// Test GetInt values
assert.Equal(t, -1, request.GetInt("invalid_key"), "Expect -1")
assert.Equal(t, 0, request.GetIntOrDefault("invalid_key", 0), "Expect 0")
assert.Equal(t, 3, request.GetIntOrDefault("invalid_key", 3), "Expect 3")
// Valid int
request.Set("nr", "1")
assert.Equal(t, 1, request.GetInt("nr"), "Expect 1")
request.Set("nr", " 1")
assert.Equal(t, 1, request.GetInt("nr"), "Expect 1")
request.Set("nr", "1 ")
assert.Equal(t, 1, request.GetInt("nr"), "Expect 1")
// Invalid int
request.Set("nr", "x")
assert.Equal(t, -1, request.GetInt("nr"), "Expect -1")
assert.Equal(t, 5, request.GetIntOrDefault("nr", 5), "Expect 5")
// GetFloat
request.Set("f", "1")
assert.Equal(t, 1.0, request.GetFloat("f"), "Expect 1.0")
request.Set("f", "2.00")
assert.Equal(t, 2.0, request.GetFloat("f"), "Expect 2.0")
request.Set("f", "")
assert.Equal(t, 0.0, request.GetFloat("f"), "Expect 0.0")
request.Set("f", "invalid")
assert.Equal(t, 0.0, request.GetFloat("f"), "Expect 0.0")
assert.Equal(t, 5.0, request.GetFloatOrDefault("f", 5.0), "Expect 5.0")
}
func TestGatewayRequestXmlEscape(t *testing.T) {
request := NewGatewayRequest()
request.Set("a", "<")
request.Set("b", ">")
request.Set("c", "'")
request.Set("d", "\"")
request.Set("e", "&")
xml := request.ToXMLString()
assert.True(t, strings.Contains(xml, "<a><</a>"), "Expect a=< value")
assert.True(t, strings.Contains(xml, "<b>></b>"), "Expect b=> value")
assert.True(t, strings.Contains(xml, "<c>'</c>"), "Expect c=' value")
assert.True(t, strings.Contains(xml, "<d>"</d>"), "Expect d=" value")
assert.True(t, strings.Contains(xml, "<e>&</e>"), "Expect e=& value")
}