rbraspag 0.0.19 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/lib/rbraspag/bill.rb +65 -63
- data/lib/rbraspag/connection.rb +2 -11
- data/lib/rbraspag/credit_card.rb +59 -36
- data/lib/rbraspag/crypto/jar_webservice.rb +21 -21
- data/lib/rbraspag/crypto/webservice.rb +1 -1
- data/lib/rbraspag/eft.rb +40 -61
- data/lib/rbraspag/errors.rb +10 -0
- data/lib/rbraspag/order.rb +11 -5
- data/lib/rbraspag/payment_method.rb +32 -0
- data/lib/rbraspag/utils.rb +13 -16
- data/lib/rbraspag/version.rb +1 -1
- data/rbraspag.gemspec +1 -1
- data/spec/bill_spec.rb +261 -411
- data/spec/connection_spec.rb +0 -5
- data/spec/credit_card_spec.rb +240 -446
- data/spec/crypto/jar_webservice_spec.rb +30 -30
- data/spec/crypto/webservice_spec.rb +20 -20
- data/spec/eft_spec.rb +183 -203
- data/spec/order_spec.rb +97 -84
- data/spec/spec_helper.rb +5 -1
- data/spec/utils_spec.rb +39 -18
- metadata +23 -24
- data/Gemfile.lock +0 -63
data/lib/rbraspag/eft.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Braspag
|
2
2
|
class Eft < PaymentMethod
|
3
|
+
|
3
4
|
PAYMENT_METHODS = {
|
4
5
|
:bradesco => 11,
|
5
6
|
:itau => 12,
|
@@ -20,92 +21,70 @@ module Braspag
|
|
20
21
|
:has_interest => "TIPOPARCELADO"
|
21
22
|
}
|
22
23
|
|
24
|
+
ACTION_URI = "/pagador/passthru.asp"
|
25
|
+
|
23
26
|
def self.generate(params, crypto_strategy = nil)
|
24
27
|
connection = Braspag::Connection.instance
|
25
|
-
|
26
28
|
params[:merchant_id] = connection.merchant_id
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
raise IncompleteParams if params[:order_id].nil? || params[:amount].nil? || params[:payment_method].nil?
|
33
|
-
|
34
|
-
raise InvalidOrderId unless params[:order_id].is_a?(String) || params[:order_id].is_a?(Fixnum)
|
35
|
-
raise InvalidOrderId unless (1..50).include?(params[:order_id].to_s.size)
|
30
|
+
params = self.normalize_params(params)
|
31
|
+
self.check_params(params)
|
36
32
|
|
37
|
-
|
38
|
-
params[:installments] = "1" if params[:installments].nil?
|
39
|
-
|
40
|
-
unless params[:customer_name].nil?
|
41
|
-
raise InvalidCustomerName unless (1..255).include?(params[:customer_name].to_s.size)
|
42
|
-
end
|
33
|
+
data = {}
|
43
34
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
rescue Exception => e
|
53
|
-
raise InvalidInstallments
|
35
|
+
MAPPING.each do |k, v|
|
36
|
+
case k
|
37
|
+
when :payment_method
|
38
|
+
data[v] = PAYMENT_METHODS[params[:payment_method]]
|
39
|
+
when :amount
|
40
|
+
data[v] = Utils.convert_decimal_to_string(params[:amount])
|
41
|
+
else
|
42
|
+
data[v] = params[k] || ""
|
54
43
|
end
|
55
44
|
end
|
56
45
|
|
57
|
-
|
58
|
-
raise InvalidHasInterest unless (params[:has_interest].is_a?(TrueClass) || params[:has_interest].is_a?(FalseClass))
|
59
|
-
end
|
60
|
-
|
61
|
-
if params[:has_interest]
|
62
|
-
params[:has_interest] = "1"
|
63
|
-
else
|
64
|
-
params[:has_interest] = "0"
|
65
|
-
end
|
66
|
-
|
67
|
-
data = create_data(params)
|
68
|
-
|
69
|
-
html = "<form id=\"form_tef_#{params[:order_id]}\" name=\"form_tef_#{params[:order_id]}\" action=\"#{self.uri}\" method=\"post\">\n"
|
46
|
+
html = "<form id=\"form_tef_#{params[:order_id]}\" name=\"form_tef_#{params[:order_id]}\" action=\"#{self.action_url}\" method=\"post\">"
|
70
47
|
|
71
48
|
if crypto_strategy.nil?
|
72
49
|
data.each do |key, value|
|
73
|
-
html
|
50
|
+
html << "<input type=\"text\" name=\"#{key}\" value=\"#{value}\" />"
|
74
51
|
end
|
75
52
|
else
|
76
53
|
data.delete("Id_Loja")
|
77
|
-
html
|
78
|
-
html
|
54
|
+
html << "<input type=\"text\" name=\"Id_Loja\" value=\"#{params[:merchant_id]}\" />"
|
55
|
+
html << "<input type=\"text\" name=\"crypt\" value=\"#{crypto_strategy.encrypt(data)}\" />"
|
79
56
|
end
|
80
57
|
|
81
|
-
html.
|
82
|
-
</form>
|
83
|
-
<script type="text/javascript" charset="utf-8">
|
84
|
-
document.forms["form_tef_#{params[:order_id]}"].submit();
|
85
|
-
</script>
|
86
|
-
EOHTML
|
58
|
+
html << "</form><script type=\"text/javascript\" charset=\"utf-8\">document.forms[\"form_tef_#{params[:order_id]}\"].submit();</script>"
|
87
59
|
|
88
60
|
html
|
89
61
|
end
|
90
62
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
else
|
99
|
-
memo[k[1]] = params[k[0]] || "";
|
100
|
-
end
|
63
|
+
def self.normalize_params(params)
|
64
|
+
params = super
|
65
|
+
|
66
|
+
params[:installments] = params[:installments].to_i unless params[:installments].nil?
|
67
|
+
params[:installments] ||= 1
|
68
|
+
|
69
|
+
params[:has_interest] = params[:has_interest] == true ? "1" : "0"
|
101
70
|
|
102
|
-
|
71
|
+
params
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.check_params(params)
|
75
|
+
super
|
76
|
+
|
77
|
+
if params[:installments]
|
78
|
+
raise InvalidInstallments if params[:installments].to_i < 1 || params[:installments].to_i > 99
|
79
|
+
end
|
80
|
+
|
81
|
+
if params[:has_interest]
|
82
|
+
raise InvalidHasInterest if params[:has_interest] != "1" && params[:has_interest] != "0"
|
103
83
|
end
|
104
84
|
end
|
105
85
|
|
106
|
-
def self.
|
107
|
-
|
108
|
-
"#{connection.braspag_url}/pagador/passthru.asp"
|
86
|
+
def self.action_url
|
87
|
+
Braspag::Connection.instance.braspag_url + ACTION_URI
|
109
88
|
end
|
110
89
|
end
|
111
90
|
end
|
data/lib/rbraspag/errors.rb
CHANGED
@@ -24,4 +24,14 @@ module Braspag
|
|
24
24
|
class InvalidType < Exception ; end
|
25
25
|
class InvalidNumberPayments < Exception ; end
|
26
26
|
class UnknownError < Exception ; end
|
27
|
+
|
28
|
+
class Connection
|
29
|
+
class InvalidMerchantId < Exception ; end
|
30
|
+
class InvalidEnv < Exception ; end
|
31
|
+
class InvalidBraspagUrl < Exception ; end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Order
|
35
|
+
class InvalidData < Exception; end
|
36
|
+
end
|
27
37
|
end
|
data/lib/rbraspag/order.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
module Braspag
|
2
2
|
class Order
|
3
|
-
|
3
|
+
PRODUCTION_INFO_URI = "/webservices/pagador/pedido.asmx/GetDadosPedido"
|
4
|
+
HOMOLOGATION_INFO_URI = "/pagador/webservice/pedido.asmx/GetDadosPedido"
|
4
5
|
|
5
6
|
def self.status(order_id)
|
6
7
|
connection = Braspag::Connection.instance
|
7
8
|
|
8
|
-
raise InvalidOrderId unless
|
9
|
-
raise InvalidOrderId unless (1..50).include?(order_id.to_s.size)
|
9
|
+
raise InvalidOrderId unless Braspag::PaymentMethod.valid_order_id?(order_id)
|
10
10
|
|
11
|
-
request = ::HTTPI::Request.new(
|
12
|
-
request.body = {
|
11
|
+
request = ::HTTPI::Request.new(self.status_url)
|
12
|
+
request.body = {
|
13
|
+
:loja => connection.merchant_id, :numeroPedido => order_id.to_s
|
14
|
+
}
|
13
15
|
|
14
16
|
response = ::HTTPI.post(request)
|
15
17
|
|
@@ -31,7 +33,11 @@ module Braspag
|
|
31
33
|
|
32
34
|
raise InvalidData if response[:authorization].nil?
|
33
35
|
response
|
36
|
+
end
|
34
37
|
|
38
|
+
def self.status_url
|
39
|
+
connection = Braspag::Connection.instance
|
40
|
+
connection.braspag_url + (connection.production? ? PRODUCTION_INFO_URI : HOMOLOGATION_INFO_URI)
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
@@ -3,5 +3,37 @@ module Braspag
|
|
3
3
|
def self.payment_method_from_id(code)
|
4
4
|
self::PAYMENT_METHODS.invert.values_at(code).first
|
5
5
|
end
|
6
|
+
|
7
|
+
def self.normalize_params(params)
|
8
|
+
if params[:amount] && !params[:amount].is_a?(BigDecimal)
|
9
|
+
params[:amount] = BigDecimal.new(params[:amount].to_s)
|
10
|
+
end
|
11
|
+
|
12
|
+
params
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.check_params(params)
|
16
|
+
[:order_id, :amount, :payment_method].each do |param|
|
17
|
+
raise IncompleteParams if params[param].nil?
|
18
|
+
end
|
19
|
+
|
20
|
+
raise InvalidOrderId unless self.valid_order_id?(params[:order_id])
|
21
|
+
|
22
|
+
if params[:customer_name]
|
23
|
+
raise InvalidCustomerName unless (1..255).include?(params[:customer_name].to_s.size)
|
24
|
+
end
|
25
|
+
|
26
|
+
if params[:customer_id]
|
27
|
+
raise InvalidCustomerId unless (11..18).include?(params[:customer_id].to_s.size)
|
28
|
+
end
|
29
|
+
|
30
|
+
unless params[:payment_method].is_a?(Symbol) && self::PAYMENT_METHODS[params[:payment_method]]
|
31
|
+
raise InvalidPaymentMethod
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.valid_order_id?(order_id)
|
36
|
+
(order_id.is_a?(String) || order_id.is_a?(Fixnum)) && (1..50).include?(order_id.to_s.size)
|
37
|
+
end
|
6
38
|
end
|
7
39
|
end
|
data/lib/rbraspag/utils.rb
CHANGED
@@ -1,32 +1,29 @@
|
|
1
1
|
module Braspag
|
2
2
|
class Utils
|
3
3
|
def self.convert_decimal_to_string(value)
|
4
|
-
|
5
|
-
integer = (value - (value - value.to_i)).to_i
|
6
|
-
"#{integer},#{cents}"
|
4
|
+
("%.2f" % value.to_f).gsub('.', ',')
|
7
5
|
end
|
8
6
|
|
9
7
|
def self.convert_to_map(document, map = {})
|
10
8
|
document = Nokogiri::XML(document)
|
11
9
|
|
12
|
-
map.each do |
|
13
|
-
if
|
14
|
-
|
10
|
+
map.each do |key, value|
|
11
|
+
if value.is_a?(String) || value.nil?
|
12
|
+
value = key if value.nil?
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
map[
|
20
|
-
map[keyForMap] = nil if value == ""
|
14
|
+
new_value = document.search(value).first
|
15
|
+
|
16
|
+
if new_value.nil?
|
17
|
+
map[key] = nil
|
21
18
|
else
|
22
|
-
|
19
|
+
new_value = new_value.content.to_s
|
20
|
+
map[key] = new_value unless new_value == ""
|
21
|
+
map[key] = nil if new_value == ""
|
23
22
|
end
|
24
23
|
|
25
|
-
elsif
|
26
|
-
map[
|
24
|
+
elsif value.is_a?(Proc)
|
25
|
+
map[key] = value.call(document)
|
27
26
|
end
|
28
|
-
|
29
|
-
map[keyForMap]
|
30
27
|
end
|
31
28
|
|
32
29
|
map
|
data/lib/rbraspag/version.rb
CHANGED
data/rbraspag.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_dependency 'cs-httpi', '>= 0.9.5.2'
|
22
22
|
s.add_dependency 'json', '>= 1.6.1'
|
23
|
-
s.add_dependency 'nokogiri', '>= 1.
|
23
|
+
s.add_dependency 'nokogiri', '>= 1.4.7'
|
24
24
|
|
25
25
|
s.add_development_dependency "rake"
|
26
26
|
s.add_development_dependency "rspec"
|
data/spec/bill_spec.rb
CHANGED
@@ -1,272 +1,47 @@
|
|
1
|
-
#encoding: utf-8
|
1
|
+
# encoding: utf-8
|
2
2
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
3
|
|
4
4
|
describe Braspag::Bill do
|
5
|
-
let
|
6
|
-
let
|
5
|
+
let(:braspag_homologation_url) { "https://homologacao.pagador.com.br" }
|
6
|
+
let(:braspag_production_url) { "https://transaction.pagador.com.br" }
|
7
|
+
let(:merchant_id) { "um id qualquer" }
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
<?xml version="1.0" encoding="utf-8"?>
|
13
|
-
<PagadorBoletoReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://www.pagador.com.br/webservice/pagador">
|
14
|
-
<amount>1234.56</amount>
|
15
|
-
<boletoNumber>70345</boletoNumber>
|
16
|
-
<expirationDate>2011-08-13T00:00:00-03:00</expirationDate>
|
17
|
-
<url>https://homologacao.pagador.com.br/pagador/reenvia.asp?Id_Transacao=0224306d-d483-4026-9022-a855a645e7ec</url>
|
18
|
-
<returnCode>0</returnCode>
|
19
|
-
<status>0</status>
|
20
|
-
</PagadorBoletoReturn>
|
21
|
-
EOXML
|
22
|
-
FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Boleto.asmx/CreateBoleto", :body => xml)
|
23
|
-
end
|
24
|
-
|
25
|
-
after do
|
26
|
-
FakeWeb.clean_registry
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should raise an error when :order_id is not present" do
|
30
|
-
expect {
|
31
|
-
Braspag::Bill.generate( {
|
32
|
-
:amount => "100.00",
|
33
|
-
:payment_method => :bradesco
|
34
|
-
})
|
35
|
-
}.to raise_error(Braspag::IncompleteParams)
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should raise an error when :amount is not present" do
|
39
|
-
expect {
|
40
|
-
Braspag::Bill.generate( {
|
41
|
-
:order_id => "12",
|
42
|
-
:payment_method => :bradesco
|
43
|
-
})
|
44
|
-
}.to raise_error(Braspag::IncompleteParams)
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should raise an error when :payment_method is not present" do
|
48
|
-
expect {
|
49
|
-
Braspag::Bill.generate( {
|
50
|
-
:order_id => "13",
|
51
|
-
:amount => "120.00"
|
52
|
-
})
|
53
|
-
}.to raise_error(Braspag::IncompleteParams)
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should raise an error when invalid string :payment_method" do
|
57
|
-
expect {
|
58
|
-
Braspag::Bill.generate( {
|
59
|
-
:order_id => "13",
|
60
|
-
:amount => "120.00",
|
61
|
-
:payment_method => "10"
|
62
|
-
})
|
63
|
-
}.to raise_error(Braspag::InvalidPaymentMethod)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should raise an error when invalid symbol :payment_method" do
|
67
|
-
expect {
|
68
|
-
Braspag::Bill.generate( {
|
69
|
-
:order_id => "13",
|
70
|
-
:amount => "120.00",
|
71
|
-
:payment_method => :invalid
|
72
|
-
})
|
73
|
-
}.to raise_error(Braspag::InvalidPaymentMethod)
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should raise an error when :order_id is less than 1 character" do
|
77
|
-
expect {
|
78
|
-
Braspag::Bill.generate( {
|
79
|
-
:order_id => "",
|
80
|
-
:amount => "123.00",
|
81
|
-
:payment_method => :bradesco
|
82
|
-
})
|
83
|
-
}.to raise_error(Braspag::InvalidOrderId)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should raise an error when :order_id is more than 50 characters" do
|
87
|
-
expect {
|
88
|
-
Braspag::Bill.generate( {
|
89
|
-
:order_id => "1" * 51,
|
90
|
-
:amount => "12.00",
|
91
|
-
:payment_method => :bradesco
|
92
|
-
})
|
93
|
-
}.to raise_error(Braspag::InvalidOrderId)
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should raise an error when :customer_name is less than 1 character" do
|
97
|
-
expect {
|
98
|
-
Braspag::Bill.generate( {
|
99
|
-
:order_id => "102",
|
100
|
-
:amount => "42.00",
|
101
|
-
:payment_method => :bradesco,
|
102
|
-
:customer_name => ""
|
103
|
-
})
|
104
|
-
}.to raise_error(Braspag::InvalidCustomerName)
|
105
|
-
end
|
106
|
-
|
107
|
-
it "should raise an error when :customer_name is more than 255 characters" do
|
108
|
-
expect {
|
109
|
-
Braspag::Bill.generate( {
|
110
|
-
:order_id => "112",
|
111
|
-
:amount => "121.00",
|
112
|
-
:payment_method => :bradesco,
|
113
|
-
:customer_name => "A" * 256
|
114
|
-
})
|
115
|
-
}.to raise_error(Braspag::InvalidCustomerName)
|
116
|
-
end
|
117
|
-
|
118
|
-
it "should raise an error when :customer_id is less than 11 characters" do
|
119
|
-
expect {
|
120
|
-
Braspag::Bill.generate( {
|
121
|
-
:order_id => "23",
|
122
|
-
:amount => "251.00",
|
123
|
-
:payment_method => :bradesco,
|
124
|
-
:customer_id => "2" * 10
|
125
|
-
})
|
126
|
-
}.to raise_error(Braspag::InvalidCustomerId)
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should raise an error when :customer_id is more than 18 characters" do
|
130
|
-
expect {
|
131
|
-
Braspag::Bill.generate( {
|
132
|
-
:order_id => "90",
|
133
|
-
:amount => "90.00",
|
134
|
-
:payment_method => :bradesco,
|
135
|
-
:customer_id => "3" * 19
|
136
|
-
})
|
137
|
-
}.to raise_error(Braspag::InvalidCustomerId)
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should raise an error when :number is less than 1 character" do
|
141
|
-
expect {
|
142
|
-
Braspag::Bill.generate( {
|
143
|
-
:order_id => "900",
|
144
|
-
:amount => "92.00",
|
145
|
-
:payment_method => :bradesco,
|
146
|
-
:number => ""
|
147
|
-
})
|
148
|
-
}.to raise_error(Braspag::InvalidNumber)
|
149
|
-
end
|
150
|
-
|
151
|
-
it "should raise an error when :number is more than 255 characters" do
|
152
|
-
expect {
|
153
|
-
Braspag::Bill.generate( {
|
154
|
-
:order_id => "91",
|
155
|
-
:amount => "80.00",
|
156
|
-
:payment_method => :bradesco,
|
157
|
-
:number => "5" * 256
|
158
|
-
})
|
159
|
-
}.to raise_error(Braspag::InvalidNumber)
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should raise an error when :instructions is less than 1 character" do
|
163
|
-
expect {
|
164
|
-
Braspag::Bill.generate( {
|
165
|
-
:order_id => "76",
|
166
|
-
:amount => "50.00",
|
167
|
-
:payment_method => :bradesco,
|
168
|
-
:instructions => ""
|
169
|
-
})
|
170
|
-
}.to raise_error(Braspag::InvalidInstructions)
|
171
|
-
end
|
172
|
-
|
173
|
-
it "should raise an error when :instructions is more than 512 characters" do
|
174
|
-
expect {
|
175
|
-
Braspag::Bill.generate( {
|
176
|
-
:order_id => "65",
|
177
|
-
:amount => "210.00",
|
178
|
-
:payment_method => :bradesco,
|
179
|
-
:instructions => "O" * 513
|
180
|
-
})
|
181
|
-
}.to raise_error(Braspag::InvalidInstructions)
|
182
|
-
end
|
183
|
-
|
184
|
-
it "should raise an error when :expiration_date is more or less than 8 characters" do
|
185
|
-
expect {
|
186
|
-
Braspag::Bill.generate( {
|
187
|
-
:order_id => "34",
|
188
|
-
:amount => "245.00",
|
189
|
-
:payment_method => :bradesco,
|
190
|
-
:expiration_date => "1" * 7
|
191
|
-
})
|
192
|
-
}.to raise_error(Braspag::InvalidExpirationDate)
|
193
|
-
|
194
|
-
expect {
|
195
|
-
Braspag::Bill.generate( {
|
196
|
-
:order_id => "67",
|
197
|
-
:amount => "321.00",
|
198
|
-
:payment_method => :bradesco,
|
199
|
-
:expiration_date => "2" * 9
|
200
|
-
})
|
201
|
-
}.to raise_error(Braspag::InvalidExpirationDate)
|
202
|
-
end
|
9
|
+
before do
|
10
|
+
@connection = mock(:merchant_id => merchant_id)
|
11
|
+
Braspag::Connection.stub(:instance => @connection)
|
12
|
+
end
|
203
13
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
14
|
+
describe ".generate" do
|
15
|
+
let(:params) do
|
16
|
+
{
|
17
|
+
:order_id => 11,
|
18
|
+
:amount => 3,
|
19
|
+
:payment_method => :hsbc
|
20
|
+
}
|
21
|
+
end
|
212
22
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
:amount => "321.00",
|
217
|
-
:payment_method => :bradesco,
|
218
|
-
:expiration_date => Date.today + 2
|
219
|
-
}).should be_instance_of(Hash)
|
220
|
-
end
|
23
|
+
let(:params_with_merchant_id) do
|
24
|
+
params.merge!(:merchant_id => merchant_id)
|
25
|
+
end
|
221
26
|
|
222
|
-
|
223
|
-
Braspag::Bill.generate( {
|
224
|
-
:order_id => "67",
|
225
|
-
:amount => "321.00",
|
226
|
-
:payment_method => :bradesco,
|
227
|
-
:expiration_date => (Date.today + 2).strftime("%d/%m/%y")
|
228
|
-
}).should be_instance_of(Hash)
|
229
|
-
end
|
27
|
+
let(:creation_url) { "https://bla.com/foo/bar/baz" }
|
230
28
|
|
231
|
-
|
232
|
-
|
233
|
-
:order_id => "67",
|
234
|
-
:amount => "54321.45",
|
235
|
-
:payment_method => :bradesco,
|
236
|
-
:expiration_date => (Date.today + 2).strftime("%d/%m/%y")
|
237
|
-
}).should be_instance_of(Hash)
|
238
|
-
end
|
29
|
+
before do
|
30
|
+
@connection.should_receive(:merchant_id)
|
239
31
|
|
240
|
-
|
241
|
-
|
242
|
-
:order_id => "67",
|
243
|
-
:amount => 123,
|
244
|
-
:payment_method => :bradesco,
|
245
|
-
:expiration_date => (Date.today + 2).strftime("%d/%m/%y")
|
246
|
-
}).should be_instance_of(Hash)
|
247
|
-
end
|
32
|
+
Braspag::Bill.should_receive(:creation_url)
|
33
|
+
.and_return(creation_url)
|
248
34
|
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
:amount => BigDecimal.new("123.45"),
|
253
|
-
:payment_method => :bradesco,
|
254
|
-
:expiration_date => (Date.today + 2).strftime("%d/%m/%y")
|
255
|
-
}).should be_instance_of(Hash)
|
256
|
-
end
|
35
|
+
Braspag::Bill.should_receive(:normalize_params)
|
36
|
+
.with(params_with_merchant_id)
|
37
|
+
.and_return(params_with_merchant_id)
|
257
38
|
|
258
|
-
|
259
|
-
|
260
|
-
:order_id => "67",
|
261
|
-
:amount => 12345,
|
262
|
-
:payment_method => :bradesco,
|
263
|
-
:expiration_date => (Date.today + 2).strftime("%d/%m/%y")
|
264
|
-
}).should be_instance_of(Hash)
|
265
|
-
end
|
39
|
+
Braspag::Bill.should_receive(:check_params)
|
40
|
+
.and_return(true)
|
266
41
|
end
|
267
42
|
|
268
|
-
context "with
|
269
|
-
it "should raise an error
|
43
|
+
context "with invalid params" do
|
44
|
+
it "should raise an error when Braspag returns 'Invalid merchantId' as response" do
|
270
45
|
xml = <<-EOXML
|
271
46
|
<?xml version="1.0" encoding="utf-8"?>
|
272
47
|
<PagadorBoletoReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
@@ -280,20 +55,14 @@ describe Braspag::Bill do
|
|
280
55
|
</PagadorBoletoReturn>
|
281
56
|
EOXML
|
282
57
|
|
283
|
-
FakeWeb.register_uri(:post,
|
58
|
+
FakeWeb.register_uri(:post, creation_url, :body => xml)
|
284
59
|
|
285
60
|
expect {
|
286
|
-
Braspag::Bill.generate(
|
287
|
-
:order_id => 1,
|
288
|
-
:amount => 3,
|
289
|
-
:payment_method => :hsbc
|
290
|
-
})
|
61
|
+
Braspag::Bill.generate(params)
|
291
62
|
}.to raise_error(Braspag::InvalidMerchantId)
|
292
|
-
|
293
|
-
FakeWeb.clean_registry
|
294
63
|
end
|
295
64
|
|
296
|
-
it "should raise an error
|
65
|
+
it "should raise an error when Braspag returns 'Input string was not in a correct format' as response" do
|
297
66
|
xml = <<-EOXML
|
298
67
|
<?xml version="1.0" encoding="utf-8"?>
|
299
68
|
<PagadorBoletoReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
@@ -307,21 +76,14 @@ describe Braspag::Bill do
|
|
307
76
|
</PagadorBoletoReturn>
|
308
77
|
EOXML
|
309
78
|
|
310
|
-
FakeWeb.register_uri(:post,
|
79
|
+
FakeWeb.register_uri(:post, creation_url, :body => xml)
|
311
80
|
|
312
81
|
expect {
|
313
|
-
Braspag::Bill.generate(
|
314
|
-
:number => "A" * 50,
|
315
|
-
:order_id => "x",
|
316
|
-
:amount => 3,
|
317
|
-
:payment_method => :hsbc
|
318
|
-
})
|
82
|
+
Braspag::Bill.generate(params)
|
319
83
|
}.to raise_error(Braspag::InvalidStringFormat)
|
320
|
-
|
321
|
-
FakeWeb.clean_registry
|
322
84
|
end
|
323
85
|
|
324
|
-
it "should raise an error
|
86
|
+
it "should raise an error when Braspag returns 'Invalid payment method' as response" do
|
325
87
|
xml = <<-EOXML
|
326
88
|
<?xml version="1.0" encoding="utf-8"?>
|
327
89
|
<PagadorBoletoReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
@@ -335,20 +97,14 @@ describe Braspag::Bill do
|
|
335
97
|
</PagadorBoletoReturn>
|
336
98
|
EOXML
|
337
99
|
|
338
|
-
FakeWeb.register_uri(:post,
|
100
|
+
FakeWeb.register_uri(:post, creation_url, :body => xml)
|
339
101
|
|
340
102
|
expect {
|
341
|
-
|
342
|
-
:order_id => 1,
|
343
|
-
:amount => "0000",
|
344
|
-
:payment_method => :hsbc
|
345
|
-
})
|
103
|
+
Braspag::Bill.generate(params)
|
346
104
|
}.to raise_error(Braspag::InvalidPaymentMethod)
|
347
|
-
|
348
|
-
FakeWeb.clean_registry
|
349
105
|
end
|
350
106
|
|
351
|
-
it "should raise an error
|
107
|
+
it "should raise an error when Braspag returns 'Invalid purchase amount' as response" do
|
352
108
|
xml = <<-EOXML
|
353
109
|
<?xml version="1.0" encoding="utf-8"?>
|
354
110
|
<PagadorBoletoReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
@@ -362,20 +118,14 @@ describe Braspag::Bill do
|
|
362
118
|
</PagadorBoletoReturn>
|
363
119
|
EOXML
|
364
120
|
|
365
|
-
FakeWeb.register_uri(:post,
|
121
|
+
FakeWeb.register_uri(:post, creation_url, :body => xml)
|
366
122
|
|
367
123
|
expect {
|
368
|
-
|
369
|
-
:order_id => 1,
|
370
|
-
:amount => -33,
|
371
|
-
:payment_method => :hsbc
|
372
|
-
})
|
124
|
+
Braspag::Bill.generate(params)
|
373
125
|
}.to raise_error(Braspag::InvalidAmount)
|
374
|
-
|
375
|
-
FakeWeb.clean_registry
|
376
126
|
end
|
377
127
|
|
378
|
-
it "should raise an error
|
128
|
+
it "should raise an error when Braspag returns any other error as response" do
|
379
129
|
xml = <<-EOXML
|
380
130
|
<?xml version="1.0" encoding="utf-8"?>
|
381
131
|
<PagadorBoletoReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
@@ -389,164 +139,244 @@ describe Braspag::Bill do
|
|
389
139
|
</PagadorBoletoReturn>
|
390
140
|
EOXML
|
391
141
|
|
392
|
-
FakeWeb.register_uri(:post,
|
142
|
+
FakeWeb.register_uri(:post, creation_url, :body => xml)
|
393
143
|
|
394
144
|
expect {
|
395
|
-
|
396
|
-
:order_id => 1,
|
397
|
-
:amount => 3,
|
398
|
-
:payment_method => :real
|
399
|
-
})
|
145
|
+
Braspag::Bill.generate(params)
|
400
146
|
}.to raise_error(Braspag::UnknownError)
|
401
|
-
|
402
|
-
FakeWeb.clean_registry
|
403
147
|
end
|
404
148
|
end
|
405
149
|
|
150
|
+
context "with valid params" do
|
151
|
+
let(:valid_xml) do
|
152
|
+
<<-EOXML
|
153
|
+
<?xml version="1.0" encoding="utf-8"?>
|
154
|
+
<PagadorBoletoReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
155
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
156
|
+
xmlns="https://www.pagador.com.br/webservice/pagador">
|
157
|
+
<amount>3.00</amount>
|
158
|
+
<boletoNumber>123123</boletoNumber>
|
159
|
+
<expirationDate>2012-01-08T00:00:00</expirationDate>
|
160
|
+
<url>https://homologacao.pagador.com.br/pagador/reenvia.asp?Id_Transacao=722934be-6756-477a-87ab-42115ee1424d</url>
|
161
|
+
<returnCode>0</returnCode>
|
162
|
+
<status>0</status>
|
163
|
+
</PagadorBoletoReturn>
|
164
|
+
EOXML
|
165
|
+
end
|
406
166
|
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
data = {
|
412
|
-
:order_id => Time.now.to_i.to_s,
|
167
|
+
let(:params) do
|
168
|
+
{
|
169
|
+
:order_id => 2901,
|
413
170
|
:amount => 3,
|
414
171
|
:payment_method => :real,
|
415
172
|
:number => "123123",
|
416
|
-
:expiration_date =>
|
173
|
+
:expiration_date => Date.today.strftime("%d/%m/%y")
|
417
174
|
}
|
418
|
-
|
419
|
-
@response = Braspag::Bill.generate( data)
|
420
175
|
end
|
421
176
|
|
422
|
-
|
423
|
-
|
177
|
+
before do
|
178
|
+
FakeWeb.register_uri(:post, creation_url, :body => valid_xml)
|
179
|
+
@response = Braspag::Bill.generate(params)
|
424
180
|
end
|
425
181
|
|
426
|
-
it "should return
|
427
|
-
@response
|
428
|
-
@response
|
182
|
+
it "should return a Hash" do
|
183
|
+
@response.should be_kind_of Hash
|
184
|
+
@response.should == {
|
185
|
+
:url => "https://homologacao.pagador.com.br/pagador/reenvia.asp?Id_Transacao=722934be-6756-477a-87ab-42115ee1424d",
|
186
|
+
:amount => BigDecimal.new("3.00"),
|
187
|
+
:number => "123123",
|
188
|
+
:expiration_date => Date.new(2012, 1, 8),
|
189
|
+
:return_code => "0",
|
190
|
+
:status => "0",
|
191
|
+
:message => nil
|
192
|
+
}
|
429
193
|
end
|
430
194
|
end
|
195
|
+
end
|
431
196
|
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
:order_id => Time.now.to_i.to_s,
|
436
|
-
:amount => 1234.56,
|
437
|
-
:payment_method => :real
|
438
|
-
}
|
439
|
-
@response = Braspag::Bill.generate( data)
|
440
|
-
end
|
197
|
+
describe ".normalize_params" do
|
198
|
+
it "should format the expiration_date param" do
|
199
|
+
params = { :expiration_date => Date.new(2011, 12, 10) }
|
441
200
|
|
442
|
-
|
443
|
-
|
444
|
-
@response[:url].should match(regexp)
|
445
|
-
end
|
201
|
+
result = Braspag::Bill.normalize_params(params)
|
202
|
+
result.should be_kind_of Hash
|
446
203
|
|
447
|
-
|
448
|
-
|
449
|
-
end
|
204
|
+
result[:expiration_date].should =~ /10\/12\/11/
|
205
|
+
end
|
450
206
|
|
451
|
-
|
452
|
-
|
453
|
-
end
|
207
|
+
it "should convert amount to BigDecimal" do
|
208
|
+
params = { :amount => "100.2" }
|
454
209
|
|
455
|
-
|
456
|
-
|
457
|
-
end
|
210
|
+
result = Braspag::Bill.normalize_params(params)
|
211
|
+
result.should be_kind_of Hash
|
458
212
|
|
459
|
-
|
460
|
-
|
461
|
-
|
213
|
+
result[:amount].should be_kind_of BigDecimal
|
214
|
+
end
|
215
|
+
end
|
462
216
|
|
463
|
-
|
464
|
-
|
217
|
+
describe ".check_params" do
|
218
|
+
let(:params) do
|
219
|
+
{
|
220
|
+
:order_id => "111",
|
221
|
+
:amount => 100.0,
|
222
|
+
:payment_method => :bradesco
|
223
|
+
}
|
224
|
+
end
|
465
225
|
|
466
|
-
|
467
|
-
|
226
|
+
[:order_id, :amount, :payment_method].each do |param|
|
227
|
+
it "should raise an error when #{param} is not present" do
|
228
|
+
expect {
|
229
|
+
params[param] = nil
|
230
|
+
Braspag::Bill.check_params(params)
|
231
|
+
}.to raise_error Braspag::IncompleteParams
|
468
232
|
end
|
469
233
|
end
|
470
|
-
end
|
471
234
|
|
472
|
-
|
473
|
-
|
235
|
+
it "should raise an error when order_id is not valid" do
|
236
|
+
Braspag::Bill.should_receive(:valid_order_id?)
|
237
|
+
.with(params[:order_id])
|
238
|
+
.and_return(false)
|
239
|
+
|
474
240
|
expect {
|
475
|
-
Braspag::Bill.
|
476
|
-
}.to raise_error
|
241
|
+
Braspag::Bill.check_params(params)
|
242
|
+
}.to raise_error Braspag::InvalidOrderId
|
477
243
|
end
|
478
244
|
|
479
|
-
it "should raise an error when
|
245
|
+
it "should raise an error when customer_name is present and is greater than 255 chars" do
|
480
246
|
expect {
|
481
|
-
|
482
|
-
|
247
|
+
params[:customer_name] = "b" * 256
|
248
|
+
Braspag::Bill.check_params(params)
|
249
|
+
}.to raise_error Braspag::InvalidCustomerName
|
483
250
|
end
|
484
251
|
|
485
|
-
it "should raise an error when
|
252
|
+
it "should raise an error when customer_id is present and is greater than 18 chars" do
|
486
253
|
expect {
|
487
|
-
|
488
|
-
|
254
|
+
params[:customer_id] = "1" * 19
|
255
|
+
Braspag::Bill.check_params(params)
|
256
|
+
}.to raise_error Braspag::InvalidCustomerId
|
489
257
|
end
|
490
258
|
|
491
|
-
it "should raise an error
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
xmlns="http://www.pagador.com.br/" />
|
498
|
-
EOXML
|
259
|
+
it "should raise an error when customer_id is present and is less than 11 chars" do
|
260
|
+
expect {
|
261
|
+
params[:customer_id] = "1" * 10
|
262
|
+
Braspag::Bill.check_params(params)
|
263
|
+
}.to raise_error Braspag::InvalidCustomerId
|
264
|
+
end
|
499
265
|
|
500
|
-
|
501
|
-
|
266
|
+
it "should raise an error when number is present and is greater than 255 chars" do
|
267
|
+
expect {
|
268
|
+
params[:number] = "1" * 256
|
269
|
+
Braspag::Bill.check_params(params)
|
270
|
+
}.to raise_error Braspag::InvalidNumber
|
271
|
+
end
|
502
272
|
|
273
|
+
it "should raise an error when instructions is present and is greater than 512 chars" do
|
503
274
|
expect {
|
504
|
-
|
505
|
-
|
275
|
+
params[:instructions] = "A" * 513
|
276
|
+
Braspag::Bill.check_params(params)
|
277
|
+
}.to raise_error Braspag::InvalidInstructions
|
278
|
+
end
|
506
279
|
|
280
|
+
it "should raise an error when expiration_date is present and is not in a valid format" do
|
281
|
+
expect {
|
282
|
+
params[:expiration_date] = "2011/19/19"
|
283
|
+
Braspag::Bill.check_params(params)
|
284
|
+
}.to raise_error Braspag::InvalidExpirationDate
|
507
285
|
|
508
286
|
expect {
|
509
|
-
|
510
|
-
|
287
|
+
params[:expiration_date] = "29/10/1991"
|
288
|
+
Braspag::Bill.check_params(params)
|
289
|
+
}.to_not raise_error Braspag::InvalidExpirationDate
|
290
|
+
end
|
511
291
|
|
512
|
-
|
292
|
+
it "should raise an error when payment_method is not invalid" do
|
293
|
+
expect {
|
294
|
+
params[:payment_method] = "non ecziste"
|
295
|
+
Braspag::Bill.check_params(params)
|
296
|
+
}.to raise_error Braspag::InvalidPaymentMethod
|
513
297
|
end
|
298
|
+
end
|
514
299
|
|
515
|
-
|
300
|
+
describe ".valid_order_id?" do
|
301
|
+
it "should return false when order id is greater than 50 chars" do
|
302
|
+
Braspag::Bill.valid_order_id?("A"*51).should be_false
|
303
|
+
end
|
516
304
|
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
<DadosBoleto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
521
|
-
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
522
|
-
xmlns="http://www.pagador.com.br/">
|
523
|
-
<NumeroDocumento>999</NumeroDocumento>
|
524
|
-
<Sacado/>
|
525
|
-
<NossoNumero>999</NossoNumero>
|
526
|
-
<LinhaDigitavel>35690.00361 03962.070003 00000.009993 4 50160000001000</LinhaDigitavel>
|
527
|
-
<DataDocumento>22/6/2011</DataDocumento>
|
528
|
-
<DataVencimento>2/7/2011</DataVencimento>
|
529
|
-
<Cedente>Gonow Tecnologia e Acessoria Empresarial Ltda</Cedente>
|
530
|
-
<Banco>356-5</Banco>
|
531
|
-
<Agencia>0003</Agencia>
|
532
|
-
<Conta>6039620</Conta>
|
533
|
-
<Carteira>57</Carteira>
|
534
|
-
<ValorDocumento>10,00</ValorDocumento>
|
535
|
-
</DadosBoleto>
|
536
|
-
EOXML
|
305
|
+
it "should return false when order id is not a String or Fixnum" do
|
306
|
+
Braspag::Bill.valid_order_id?(nil).should be_false
|
307
|
+
end
|
537
308
|
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
}
|
309
|
+
it "should return true" do
|
310
|
+
Braspag::Bill.valid_order_id?("A"*50).should be_true
|
311
|
+
Braspag::Bill.valid_order_id?(100).should be_true
|
312
|
+
end
|
313
|
+
end
|
544
314
|
|
545
|
-
|
546
|
-
|
547
|
-
|
315
|
+
describe ".info" do
|
316
|
+
let(:info_url) { "http://braspag/bla" }
|
317
|
+
let(:invalid_xml) do
|
318
|
+
<<-EOXML
|
319
|
+
<?xml version="1.0" encoding="utf-8"?>
|
320
|
+
<DadosBoleto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
321
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
322
|
+
xsi:nil="true"
|
323
|
+
xmlns="http://www.pagador.com.br/" />
|
324
|
+
EOXML
|
325
|
+
end
|
548
326
|
|
549
|
-
|
327
|
+
let(:valid_xml) do
|
328
|
+
<<-EOXML
|
329
|
+
<?xml version="1.0" encoding="utf-8"?>
|
330
|
+
<DadosBoleto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
331
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
332
|
+
xmlns="http://www.pagador.com.br/">
|
333
|
+
<NumeroDocumento>999</NumeroDocumento>
|
334
|
+
<Sacado/>
|
335
|
+
<NossoNumero>999</NossoNumero>
|
336
|
+
<LinhaDigitavel>35690.00361 03962.070003 00000.009993 4 50160000001000</LinhaDigitavel>
|
337
|
+
<DataDocumento>22/6/2011</DataDocumento>
|
338
|
+
<DataVencimento>2/7/2011</DataVencimento>
|
339
|
+
<Cedente>Gonow Tecnologia e Acessoria Empresarial Ltda</Cedente>
|
340
|
+
<Banco>356-5</Banco>
|
341
|
+
<Agencia>0003</Agencia>
|
342
|
+
<Conta>6039620</Conta>
|
343
|
+
<Carteira>57</Carteira>
|
344
|
+
<ValorDocumento>10,00</ValorDocumento>
|
345
|
+
</DadosBoleto>
|
346
|
+
EOXML
|
347
|
+
end
|
348
|
+
|
349
|
+
it "should raise an error when order id is not valid" do
|
350
|
+
Braspag::Bill.should_receive(:valid_order_id?)
|
351
|
+
.with("bla")
|
352
|
+
.and_return(false)
|
353
|
+
|
354
|
+
expect {
|
355
|
+
Braspag::Bill.info "bla"
|
356
|
+
}.to raise_error(Braspag::InvalidOrderId)
|
357
|
+
end
|
358
|
+
|
359
|
+
it "should raise an error when Braspag returned an invalid xml as response" do
|
360
|
+
FakeWeb.register_uri(:post, info_url, :body => invalid_xml)
|
361
|
+
|
362
|
+
Braspag::Bill.should_receive(:info_url)
|
363
|
+
.and_return(info_url)
|
364
|
+
|
365
|
+
expect {
|
366
|
+
Braspag::Bill.info("orderid")
|
367
|
+
}.to raise_error(Braspag::UnknownError)
|
368
|
+
end
|
369
|
+
|
370
|
+
it "should return a Hash when Braspag returned a valid xml as response" do
|
371
|
+
FakeWeb.register_uri(:post, info_url, :body => valid_xml)
|
372
|
+
|
373
|
+
Braspag::Bill.should_receive(:info_url)
|
374
|
+
.and_return(info_url)
|
375
|
+
|
376
|
+
response = Braspag::Bill.info("orderid")
|
377
|
+
response.should be_kind_of Hash
|
378
|
+
|
379
|
+
response.should == {
|
550
380
|
:document_number => "999",
|
551
381
|
:payer => nil,
|
552
382
|
:our_number => "999",
|
@@ -559,19 +389,39 @@ describe Braspag::Bill do
|
|
559
389
|
:account => "6039620",
|
560
390
|
:wallet => "57",
|
561
391
|
:amount => "10,00",
|
562
|
-
|
392
|
+
:amount_invoice => nil,
|
393
|
+
:invoice_date => nil
|
394
|
+
}
|
395
|
+
end
|
396
|
+
end
|
563
397
|
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
398
|
+
describe ".creation_url" do
|
399
|
+
it "should return the correct bill creation url when connection environment is homologation" do
|
400
|
+
@connection.stub(:braspag_url => braspag_homologation_url)
|
401
|
+
Braspag::Bill.creation_url.should == "#{braspag_homologation_url}/webservices/pagador/Boleto.asmx/CreateBoleto"
|
402
|
+
end
|
403
|
+
|
404
|
+
it "should return the correct bill creation url when connection environment is production" do
|
405
|
+
@connection.stub(:braspag_url => braspag_production_url)
|
406
|
+
Braspag::Bill.creation_url.should == "#{braspag_production_url}/webservices/pagador/Boleto.asmx/CreateBoleto"
|
568
407
|
end
|
569
408
|
end
|
570
409
|
|
571
|
-
describe ".
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
410
|
+
describe ".info_url" do
|
411
|
+
it "should return the correct info url when connection environment is homologation" do
|
412
|
+
@connection.stub(:braspag_url => braspag_homologation_url)
|
413
|
+
@connection.should_receive(:production?)
|
414
|
+
.and_return(false)
|
415
|
+
|
416
|
+
Braspag::Bill.info_url.should == "#{braspag_homologation_url}/pagador/webservice/pedido.asmx/GetDadosBoleto"
|
417
|
+
end
|
418
|
+
|
419
|
+
it "should return the correct info url when connection environment is production" do
|
420
|
+
@connection.stub(:braspag_url => braspag_production_url)
|
421
|
+
@connection.should_receive(:production?)
|
422
|
+
.and_return(true)
|
423
|
+
|
424
|
+
Braspag::Bill.info_url.should == "#{braspag_production_url}/webservices/pagador/pedido.asmx/GetDadosBoleto"
|
425
|
+
end
|
576
426
|
end
|
577
427
|
end
|