/
garanti_test.rb
145 lines (126 loc) · 4.39 KB
/
garanti_test.rb
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# coding: utf-8
require 'test_helper'
class GarantiTest < Test::Unit::TestCase
def setup
@original_kcode = nil
Base.mode = :test
@gateway = GarantiGateway.new(:login => 'a', :password => 'b', :terminal_id => 'c', :merchant_id => 'd')
@credit_card = credit_card(4242424242424242)
@amount = 1000 #1000 cents, 10$
@options = {
:order_id => 'db4af18c5222503d845180350fbda516',
:billing_address => address,
:description => 'Store Purchase'
}
end
def teardown
$KCODE = @original_kcode if @original_kcode
end
def test_successful_purchase
@gateway.expects(:ssl_post).returns(successful_purchase_response)
assert response = @gateway.purchase(@amount, @credit_card, @options)
assert_success response
# Replace with authorization number from the successful response
assert_equal 'db4af18c5222503d845180350fbda516', response.authorization
assert response.test?
end
def test_unsuccessful_request
@gateway.expects(:ssl_post).returns(failed_purchase_response)
assert response = @gateway.purchase(@amount, @credit_card, @options)
assert_failure response
assert response.test?
end
def test_character_normalization
if ActiveSupport::Inflector.method(:transliterate).arity == -2
assert_equal 'ABCCDEFGGHIIJKLMNOOPRSSTUUVYZ', @gateway.send(:normalize, 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ')
assert_equal 'abccdefgghiijklmnooprsstuuvyz', @gateway.send(:normalize, 'abcçdefgğhıijklmnoöprsştuüvyz')
else
assert_equal 'ABCDEFGHIJKLMNOPRSTUVYZ', @gateway.send(:normalize, 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ')
assert_equal 'abcdefghijklmnoprstuvyz', @gateway.send(:normalize, 'abcçdefgğhıijklmnoöprsştuüvyz')
end
end
def test_nil_normalization
assert_nil @gateway.send(:normalize, nil)
end
def test_strip_invalid_xml_chars
xml = <<EOF
<response>
<element>Parse the First & but not this ˜ &x002a;</element>
</response>
EOF
parsed_xml = @gateway.send(:strip_invalid_xml_chars, xml)
assert REXML::Document.new(parsed_xml)
assert_raise(REXML::ParseException) do
REXML::Document.new(xml)
end
end
private
# Place raw successful response from gateway here
def successful_purchase_response
<<-EOF
<GVPSResponse>
<Mode></Mode>
<Order>
<OrderID>db4af18c5222503d845180350fbda516</OrderID>
<GroupID></GroupID>
</Order>
<Transaction>
<Response>
<Source>HOST</Source>
<Code>00</Code>
<ReasonCode>00</ReasonCode>
<Message>Approved</Message>
<ErrorMsg></ErrorMsg>
<SysErrMsg></SysErrMsg>
</Response>
<RetrefNum>035208609374</RetrefNum>
<AuthCode>784260</AuthCode>
<BatchNum>000089</BatchNum>
<SequenceNum>000008</SequenceNum>
<ProvDate>20101218 08:56:39</ProvDate>
<CardNumberMasked></CardNumberMasked>
<CardHolderName>Company Name & Another Name</CardHolderName>
<HostMsgList></HostMsgList>
<RewardInqResult>
<RewardList></RewardList>
<ChequeList></ChequeList>
</RewardInqResult>
</Transaction>
</GVPSResponse>
EOF
end
# Place raw failed response from gateway here
def failed_purchase_response
<<-EOF
<GVPSResponse>
<Mode></Mode>
<Order>
<OrderID>db4af18c5222503d845180350fbda516</OrderID>
<GroupID></GroupID>
</Order>
<Transaction>
<Response>
<Source>GVPS</Source>
<Code>92</Code>
<ReasonCode>0651</ReasonCode>
<Message>Declined</Message>
<ErrorMsg></ErrorMsg>
<SysErrMsg>ErrorId: 0651</SysErrMsg>
</Response>
<RetrefNum></RetrefNum>
<AuthCode> </AuthCode>
<BatchNum></BatchNum>
<SequenceNum></SequenceNum>
<ProvDate>20101220 01:58:41</ProvDate>
<CardNumberMasked></CardNumberMasked>
<CardHolderName></CardHolderName>
<HostMsgList></HostMsgList>
<RewardInqResult>
<RewardList></RewardList>
<ChequeList></ChequeList>
</RewardInqResult>
</Transaction>
</GVPSResponse>
EOF
end
end