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.
@@ -11,9 +11,6 @@ describe Braspag::Connection do
11
11
  let(:braspag_homologation_url) { "https://homologacao.pagador.com.br" }
12
12
  let(:braspag_production_url) { "https://transaction.pagador.com.br" }
13
13
 
14
- let(:braspag_homologation_query_url) { "https://homologacao.pagador.com.br/pagador/webservice/pedido.asmx" }
15
- let(:braspag_production_query_url) { "https://query.pagador.com.br/webservices/pagador/pedido.asmx" }
16
-
17
14
  let(:braspag_config) do
18
15
  config = {}
19
16
  config[ENV["RACK_ENV"]] = {
@@ -135,7 +132,6 @@ describe Braspag::Connection do
135
132
 
136
133
  connection = Braspag::Connection.clone.instance
137
134
  connection.braspag_url.should == braspag_homologation_url
138
- connection.braspag_query_url.should == braspag_homologation_query_url
139
135
  end
140
136
  end
141
137
 
@@ -148,7 +144,6 @@ describe Braspag::Connection do
148
144
 
149
145
  connection = Braspag::Connection.clone.instance
150
146
  connection.braspag_url.should == braspag_production_url
151
- connection.braspag_query_url.should == braspag_production_query_url
152
147
  end
153
148
  end
154
149
  end
@@ -1,386 +1,108 @@
1
- #encoding: utf-8
2
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
2
 
4
3
  describe Braspag::CreditCard do
5
- let!(:braspag_url) { "https://homologacao.pagador.com.br" }
6
- let!(:braspag_query_url) { "https://homologacao.pagador.com.br/pagador/webservice/pedido.asmx" }
4
+ let(:braspag_homologation_url) { "https://homologacao.pagador.com.br" }
5
+ let(:braspag_production_url) { "https://transaction.pagador.com.br" }
6
+ let(:merchant_id) { "um id qualquer" }
7
7
 
8
- describe ".authorize" do
9
- it "should raise an error when :order_id is not present" do
10
- expect {
11
- Braspag::CreditCard.authorize({
12
- :customer_name => "W" * 21,
13
- :amount => "100.00",
14
- :payment_method => :redecard,
15
- :holder => "Joao Maria Souza",
16
- :card_number => "9" * 10,
17
- :expiration => "10/12",
18
- :security_code => "123",
19
- :number_payments => 1,
20
- :type => 0
21
- })
22
- }.to raise_error(Braspag::IncompleteParams)
23
- end
24
-
25
- it "should raise an error when :customer_name is not present" do
26
- expect {
27
- Braspag::CreditCard.authorize({
28
- :order_id => "1" * 5,
29
- :amount => "100.00",
30
- :payment_method => :redecard,
31
- :holder => "Joao Maria Souza",
32
- :card_number => "9" * 10,
33
- :expiration => "10/12",
34
- :security_code => "123",
35
- :number_payments => 1,
36
- :type => 0
37
- })
38
- }.to raise_error(Braspag::IncompleteParams)
39
- end
40
-
41
- it "should raise an error when :amount is not present" do
42
- expect {
43
- Braspag::CreditCard.authorize({
44
- :order_id => "1" * 5,
45
- :customer_name => "",
46
- :payment_method => :redecard,
47
- :holder => "Joao Maria Souza",
48
- :card_number => "9" * 10,
49
- :expiration => "10/12",
50
- :security_code => "123",
51
- :number_payments => 1,
52
- :type => 0
53
- })
54
- }.to raise_error(Braspag::IncompleteParams)
55
- end
56
-
57
- it "should raise an error when :payment_method is not present" do
58
- expect {
59
- Braspag::CreditCard.authorize({
60
- :order_id => "1" * 5,
61
- :customer_name => "",
62
- :amount => "100.00",
63
- :holder => "Joao Maria Souza",
64
- :card_number => "9" * 10,
65
- :expiration => "10/12",
66
- :security_code => "123",
67
- :number_payments => 1,
68
- :type => 0
69
- })
70
- }.to raise_error(Braspag::IncompleteParams)
71
- end
72
-
73
- it "should raise an error when :holder is not present" do
74
- expect {
75
- Braspag::CreditCard.authorize({
76
- :order_id => "1" * 5,
77
- :customer_name => "",
78
- :payment_method => :redecard,
79
- :amount => "100.00",
80
- :card_number => "9" * 10,
81
- :expiration => "10/12",
82
- :security_code => "123",
83
- :number_payments => 1,
84
- :type => 0
85
- })
86
- }.to raise_error(Braspag::IncompleteParams)
87
- end
88
-
89
- it "should raise an error when :card_number is not present" do
90
- expect {
91
- Braspag::CreditCard.authorize({
92
- :order_id => "1" * 5,
93
- :customer_name => "",
94
- :payment_method => :redecard,
95
- :amount => "100.00",
96
- :holder => "Joao Maria Souza",
97
- :expiration => "10/12",
98
- :security_code => "123",
99
- :number_payments => 1,
100
- :type => 0
101
- })
102
- }.to raise_error(Braspag::IncompleteParams)
103
- end
104
-
105
- it "should raise an error when :expiration is not present" do
106
- expect {
107
- Braspag::CreditCard.authorize({
108
- :order_id => "1" * 5,
109
- :customer_name => "",
110
- :payment_method => :redecard,
111
- :amount => "100.00",
112
- :holder => "Joao Maria Souza",
113
- :card_number => "9" * 10,
114
- :security_code => "123",
115
- :number_payments => 1,
116
- :type => 0
117
- })
118
- }.to raise_error(Braspag::IncompleteParams)
119
- end
120
-
121
- it "should raise an error when :security_code is not present" do
122
- expect {
123
- Braspag::CreditCard.authorize({
124
- :order_id => "1" * 5,
125
- :customer_name => "AAAAAAAA",
126
- :payment_method => :redecard,
127
- :amount => "100.00",
128
- :holder => "Joao Maria Souza",
129
- :expiration => "10/12",
130
- :card_number => "9" * 10,
131
- :number_payments => 1,
132
- :type => 0
133
- })
134
- }.to raise_error(Braspag::IncompleteParams)
135
- end
136
-
137
- it "should raise an error when :number_payments is not present" do
138
- expect {
139
- Braspag::CreditCard.authorize({
140
- :order_id => "1" * 5,
141
- :customer_name => "AAAAAAAA",
142
- :payment_method => :redecard,
143
- :amount => "100.00",
144
- :holder => "Joao Maria Souza",
145
- :expiration => "10/12",
146
- :card_number => "9" * 10,
147
- :type => 0
148
- })
149
- }.to raise_error(Braspag::IncompleteParams)
150
- end
151
-
152
- it "should raise an error when :type is not present" do
153
- expect {
154
- Braspag::CreditCard.authorize({
155
- :order_id => "1" * 5,
156
- :customer_name => "AAAAAAAA",
157
- :payment_method => :redecard,
158
- :amount => "100.00",
159
- :holder => "Joao Maria Souza",
160
- :expiration => "10/12",
161
- :card_number => "9" * 10,
162
- :number_payments => 1
163
- })
164
- }.to raise_error(Braspag::IncompleteParams)
165
- end
8
+ before do
9
+ @connection = mock(:merchant_id => merchant_id)
10
+ Braspag::Connection.stub(:instance => @connection)
11
+ end
166
12
 
167
- let!(:valid_params) {
13
+ describe ".authorize" do
14
+ let(:params) do
168
15
  {
169
- :order_id => "1" * 5,
170
- :customer_name => "AAAAAAAA",
171
- :payment_method => :amex_2p,
16
+ :order_id => "um order id",
17
+ :customer_name => "W" * 21,
172
18
  :amount => "100.00",
19
+ :payment_method => :redecard,
173
20
  :holder => "Joao Maria Souza",
174
- :expiration => "10/12",
175
21
  :card_number => "9" * 10,
22
+ :expiration => "10/12",
176
23
  :security_code => "123",
177
24
  :number_payments => 1,
178
25
  :type => 0
179
26
  }
180
- }
181
-
182
- it "should raise an error when :order_id is more than 20 characters" do
183
- expect {
184
- params = valid_params
185
- params[:order_id] = "A" * 21
186
- Braspag::CreditCard.authorize(params)
187
- }.to raise_error(Braspag::InvalidOrderId)
188
27
  end
189
28
 
190
- it "should raise an error when :customer_name is more than 100 characters" do
191
- expect {
192
- params = valid_params
193
- params[:customer_name] = "B" * 101
194
- Braspag::CreditCard.authorize(params)
195
- }.to raise_error(Braspag::InvalidCustomerName)
29
+ let(:params_with_merchant_id) do
30
+ params.merge!(:merchant_id => merchant_id)
196
31
  end
197
32
 
198
- it "should raise an error when :amount is more than 10 characters" do
199
- expect {
200
- params = valid_params
201
- params[:amount] = "1234567890,00"
202
- Braspag::CreditCard.authorize(params)
203
- }.to raise_error(Braspag::InvalidAmount)
204
- end
33
+ let(:authorize_url) { "http://braspag/bla" }
205
34
 
206
- it "should raise an error when :holder is more than 100 characters" do
207
- expect {
208
- params = valid_params
209
- params[:holder] = "E" * 101
210
- Braspag::CreditCard.authorize(params)
211
- }.to raise_error(Braspag::InvalidHolder)
212
- end
35
+ before do
36
+ @connection.should_receive(:merchant_id)
213
37
 
214
- it "should raise an error when :expiration is more than 7 characters" do
215
- expect {
216
- params = valid_params
217
- params[:expiration] = "7" * 8
218
- Braspag::CreditCard.authorize(params)
219
- }.to raise_error(Braspag::InvalidExpirationDate)
220
- end
38
+ Braspag::CreditCard.should_receive(:authorize_url)
39
+ .and_return(authorize_url)
221
40
 
222
- it "should raise an error when :security_code is more than 4 characters" do
223
- expect {
224
- params = valid_params
225
- params[:security_code] = "9" * 5
226
- Braspag::CreditCard.authorize(params)
227
- }.to raise_error(Braspag::InvalidSecurityCode)
41
+ Braspag::CreditCard.should_receive(:check_params)
42
+ .and_return(true)
228
43
  end
229
44
 
230
- it "should raise an error when :number_payments is more than 2 characters" do
231
- expect {
232
- params = valid_params
233
- params[:number_payments] = "123"
234
- Braspag::CreditCard.authorize(params)
235
- }.to raise_error(Braspag::InvalidNumberPayments)
236
- end
45
+ context "with invalid params"
237
46
 
238
- it "should raise an error when :type is more than 1 character" do
239
- expect {
240
- params = valid_params
241
- params[:type] = "123"
242
- Braspag::CreditCard.authorize(params)
243
- }.to raise_error(Braspag::InvalidType)
244
- end
245
-
246
- let!(:params) {
247
- {
248
- :order_id => "123456",
249
- :customer_name => "Teste",
250
- :payment_method => :amex_2p,
251
- :amount => 1.3,
252
- :holder => "teste",
253
- :expiration => "05/13",
254
- :card_number => "345678000000007",
255
- :security_code => "1234",
256
- :number_payments => "1",
257
- :type => "0"
258
- }
259
- }
260
-
261
- context "with a successful transaction" do
262
-
263
- it "should return an array with :status => 1" do
264
- xml = <<-EOXML
265
- <?xml version="1.0" encoding="utf-8"?>
266
- <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
267
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
268
- xmlns="https://www.pagador.com.br/webservice/pagador">
269
- <amount>2</amount>
270
- <authorisationNumber>733610</authorisationNumber>
271
- <message>Transaction Successful</message>
272
- <returnCode>0</returnCode>
273
- <status>1</status>
274
- <transactionId>398662</transactionId>
275
- </PagadorReturn>
47
+ context "with valid params" do
48
+ let(:valid_xml) do
49
+ <<-EOXML
50
+ <?xml version="1.0" encoding="utf-8"?>
51
+ <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
52
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
53
+ xmlns="https://www.pagador.com.br/webservice/pagador">
54
+ <amount>5</amount>
55
+ <message>Transaction Successful</message>
56
+ <authorisationNumber>733610</authorisationNumber>
57
+ <returnCode>7</returnCode>
58
+ <status>2</status>
59
+ <transactionId>0</transactionId>
60
+ </PagadorReturn>
276
61
  EOXML
277
-
278
- FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Pagador.asmx/Authorize", :body => xml)
279
-
280
- result = Braspag::CreditCard.authorize(params)
281
- result[:status].should == "1"
282
-
283
- FakeWeb.clean_registry
284
62
  end
285
63
 
286
- end
287
-
288
- context "with a unsuccessful transaction" do
289
-
290
- it "should return an array with :status => 2" do
291
- invalid_params = params
292
- invalid_params[:security_code] = 1
293
-
294
- xml = <<-EOXML
295
- <?xml version="1.0" encoding="utf-8"?>
296
- <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
297
- xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://www.pagador.com.br/webservice/pagador">
298
- <amount>5</amount>
299
- <message>Payment Server detected an error</message>
300
- <returnCode>7</returnCode>
301
- <status>2</status>
302
- <transactionId>0</transactionId>
303
- </PagadorReturn>
304
- EOXML
305
-
306
- FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Pagador.asmx/Authorize", :body => xml)
307
-
308
- result = Braspag::CreditCard.authorize(invalid_params)
309
- result[:status].should == "2"
310
-
311
- FakeWeb.clean_registry
64
+ before do
65
+ FakeWeb.register_uri(:post, authorize_url, :body => valid_xml)
66
+ @response = Braspag::CreditCard.authorize(params)
312
67
  end
313
68
 
314
- end
315
-
316
- context "when a internal server error occurs on the gateway" do
317
-
318
- it "should return an array with :status => null" do
319
- invalid_params = params
320
- invalid_params[:security_code] = "1"
321
-
322
- xml = <<-EOXML
323
- <?xml version="1.0" encoding="utf-8"?>
324
- <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
325
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
326
- xmlns="https://www.pagador.com.br/webservice/pagador">
327
- <amount>5</amount>
328
- <message>Payment Server detected an error</message>
329
- <returnCode>7</returnCode>
330
- <status>null</status>
331
- <transactionId>0</transactionId>
332
- </PagadorReturn>
333
- EOXML
334
-
335
- FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Pagador.asmx/Authorize", :body => xml)
336
-
337
- result = Braspag::CreditCard.authorize(invalid_params)
338
- result[:status].should == "null"
339
-
340
- FakeWeb.clean_registry
69
+ it "should return a Hash" do
70
+ @response.should be_kind_of Hash
71
+ @response.should == {
72
+ :amount => "5",
73
+ :message => "Transaction Successful",
74
+ :number => "733610",
75
+ :return_code => "7",
76
+ :status => "2",
77
+ :transaction_id => "0"
78
+ }
341
79
  end
342
-
343
80
  end
344
-
345
81
  end
346
82
 
347
83
  describe ".capture" do
84
+ let(:capture_url) { "http://foo.bar/bar/baz" }
85
+ let(:order_id) { "um id qualquer" }
348
86
 
349
- it "should raise an error when :order_id is more than 20 characters" do
350
- expect {
351
- Braspag::CreditCard.capture(("A" * 21))
352
- }.to raise_error(Braspag::InvalidOrderId)
87
+ before do
88
+ @connection.should_receive(:merchant_id)
353
89
  end
354
90
 
355
- it "should parse all the XML fields" do
356
- xml = <<-EOXML
357
- <?xml version="1.0" encoding="utf-8"?>
358
- <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
359
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
360
- xmlns="https://www.pagador.com.br/webservice/pagador">
361
- <amount>0.01</amount>
362
- <message>Capture Successful</message>
363
- <returnCode>07</returnCode>
364
- <status>0</status>
365
- </PagadorReturn>
366
- EOXML
367
-
368
- FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Pagador.asmx/Capture", :body => xml)
91
+ context "invalid order id" do
92
+ it "should raise an error" do
93
+ Braspag::CreditCard.should_receive(:valid_order_id?)
94
+ .with(order_id)
95
+ .and_return(false)
369
96
 
370
- result = Braspag::CreditCard.capture('123456')
371
-
372
- result[:amount].should_not be_nil
373
- result[:message].should_not be_nil
374
- result[:return_code].should_not be_nil
375
- result[:status].should_not be_nil
376
-
377
- FakeWeb.clean_registry
97
+ expect {
98
+ Braspag::CreditCard.capture(order_id)
99
+ }.to raise_error(Braspag::InvalidOrderId)
100
+ end
378
101
  end
379
102
 
380
- context "with a successful capture" do
381
-
382
- it "should return an array with :status => 0" do
383
- xml = <<-EOXML
103
+ context "valid order id" do
104
+ let(:valid_xml) do
105
+ <<-EOXML
384
106
  <?xml version="1.0" encoding="utf-8"?>
385
107
  <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
386
108
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -391,157 +113,229 @@ describe Braspag::CreditCard do
391
113
  <status>0</status>
392
114
  </PagadorReturn>
393
115
  EOXML
116
+ end
394
117
 
395
- FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Pagador.asmx/Capture", :body => xml)
118
+ before do
119
+ Braspag::CreditCard.should_receive(:capture_url)
120
+ .and_return(capture_url)
396
121
 
397
- result = Braspag::CreditCard.capture('123456')
398
- result[:status].should == "0"
122
+ FakeWeb.register_uri(:post, capture_url, :body => valid_xml)
123
+ @response = Braspag::CreditCard.capture("order id qualquer")
124
+ end
399
125
 
400
- FakeWeb.clean_registry
126
+ it "should return a Hash" do
127
+ @response.should be_kind_of Hash
128
+ @response.should == {
129
+ :amount => "2",
130
+ :number => nil,
131
+ :message => "Approved",
132
+ :return_code => "0",
133
+ :status => "0",
134
+ :transaction_id => nil
135
+ }
401
136
  end
137
+ end
138
+ end
402
139
 
140
+ describe ".info" do
141
+ let(:info_url) { "http://braspag/bla" }
142
+
143
+ let(:invalid_xml) do
144
+ <<-EOXML
145
+ <DadosCartao xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
146
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
147
+ xmlns="http://www.pagador.com.br/">
148
+ <NumeroComprovante></NumeroComprovante>
149
+ <Autenticada>false</Autenticada>
150
+ <NumeroAutorizacao>557593</NumeroAutorizacao>
151
+ <NumeroCartao>345678*****0007</NumeroCartao>
152
+ <NumeroTransacao>101001225645</NumeroTransacao>
153
+ </DadosCartao>
154
+ EOXML
403
155
  end
404
156
 
405
- context "with an unsuccessful capture" do
157
+ let(:valid_xml) do
158
+ <<-EOXML
159
+ <DadosCartao xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
160
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
161
+ xmlns="http://www.pagador.com.br/">
162
+ <NumeroComprovante>11111</NumeroComprovante>
163
+ <Autenticada>false</Autenticada>
164
+ <NumeroAutorizacao>557593</NumeroAutorizacao>
165
+ <NumeroCartao>345678*****0007</NumeroCartao>
166
+ <NumeroTransacao>101001225645</NumeroTransacao>
167
+ </DadosCartao>
168
+ EOXML
169
+ end
406
170
 
407
- it "should return an array with :status => 2" do
408
- xml = <<-EOXML
409
- <?xml version="1.0" encoding="utf-8"?>
410
- <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
411
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
412
- xmlns="https://www.pagador.com.br/webservice/pagador">
413
- <amount>0.01</amount>
414
- <message>Payment Server detected an error</message>
415
- <returnCode>7</returnCode>
416
- <status>2</status>
417
- </PagadorReturn>
418
- EOXML
171
+ it "should raise an error when order id is not valid" do
172
+ Braspag::CreditCard.should_receive(:valid_order_id?)
173
+ .with("bla")
174
+ .and_return(false)
419
175
 
420
- FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Pagador.asmx/Capture", :body => xml)
176
+ expect {
177
+ Braspag::CreditCard.info "bla"
178
+ }.to raise_error(Braspag::InvalidOrderId)
179
+ end
421
180
 
422
- result = Braspag::CreditCard.capture("1")
423
- result[:status].should == "2"
181
+ it "should raise an error when Braspag returned an invalid xml as response" do
182
+ FakeWeb.register_uri(:post, info_url, :body => invalid_xml)
424
183
 
425
- FakeWeb.clean_registry
426
- end
184
+ Braspag::CreditCard.should_receive(:info_url)
185
+ .and_return(info_url)
427
186
 
187
+ expect {
188
+ Braspag::CreditCard.info("orderid")
189
+ }.to raise_error(Braspag::UnknownError)
428
190
  end
429
191
 
430
- context "when an internal server error occurs on the gateway" do
192
+ it "should return a Hash when Braspag returned a valid xml as response" do
193
+ FakeWeb.register_uri(:post, info_url, :body => valid_xml)
431
194
 
432
- it "should return an array with :status => null" do
433
- xml = <<-EOXML
434
- <?xml version="1.0" encoding="utf-8"?>
435
- <PagadorReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
436
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
437
- xmlns="https://www.pagador.com.br/webservice/pagador">
438
- <amount>0.01</amount>
439
- <message>Payment Server detected an error</message>
440
- <returnCode>7</returnCode>
441
- <status>null</status>
442
- </PagadorReturn>
443
- EOXML
195
+ Braspag::CreditCard.should_receive(:info_url)
196
+ .and_return(info_url)
444
197
 
445
- FakeWeb.register_uri(:post, "#{braspag_url}/webservices/pagador/Pagador.asmx/Capture", :body => xml)
198
+ response = Braspag::CreditCard.info("orderid")
199
+ response.should be_kind_of Hash
446
200
 
447
- result = Braspag::CreditCard.capture("1234")
448
- result[:status].should == "null"
449
-
450
- FakeWeb.clean_registry
451
- end
201
+ response.should == {
202
+ :checking_number => "11111",
203
+ :certified => "false",
204
+ :autorization_number => "557593",
205
+ :card_number => "345678*****0007",
206
+ :transaction_number => "101001225645"
207
+ }
208
+ end
209
+ end
452
210
 
211
+ describe ".check_params" do
212
+ let(:params) do
213
+ {
214
+ :order_id => 12345,
215
+ :customer_name => "AAAAAAAA",
216
+ :payment_method => :amex_2p,
217
+ :amount => "100.00",
218
+ :holder => "Joao Maria Souza",
219
+ :expiration => "10/12",
220
+ :card_number => "9" * 10,
221
+ :security_code => "123",
222
+ :number_payments => 1,
223
+ :type => 0
224
+ }
453
225
  end
454
226
 
455
- context ".payment_method_from_id" do
456
- it 'Credit card amex' do
457
- Braspag::CreditCard::payment_method_from_id(18).should == :amex_2p
458
- Braspag::CreditCard::payment_method_from_id(18).should be_kind_of Symbol
227
+ [:order_id, :amount, :payment_method, :customer_name, :holder, :card_number, :expiration,
228
+ :security_code, :number_payments, :type].each do |param|
229
+ it "should raise an error when #{param} is not present" do
230
+ expect {
231
+ params[param] = nil
232
+ Braspag::CreditCard.check_params(params)
233
+ }.to raise_error Braspag::IncompleteParams
459
234
  end
460
235
  end
461
236
 
237
+ it "should raise an error when order_id is not valid" do
238
+ Braspag::CreditCard.should_receive(:valid_order_id?)
239
+ .with(params[:order_id])
240
+ .and_return(false)
462
241
 
463
- describe "#status" do
464
- it "should raise an error when no order_id is given" do
465
242
  expect {
466
- Braspag::CreditCard.info(nil)
467
- }.to raise_error(Braspag::InvalidOrderId)
243
+ Braspag::CreditCard.check_params(params)
244
+ }.to raise_error Braspag::InvalidOrderId
468
245
  end
469
246
 
470
- it "should raise an error when order_id is empty" do
247
+ it "should raise an error when payment_method is not invalid" do
471
248
  expect {
472
- Braspag::CreditCard.info("")
473
- }.to raise_error(Braspag::InvalidOrderId)
249
+ params[:payment_method] = "non ecziste"
250
+ Braspag::CreditCard.check_params(params)
251
+ }.to raise_error Braspag::InvalidPaymentMethod
474
252
  end
475
253
 
476
- it "should raise an error when order_id is more than 50 characters" do
254
+ it "should raise an error when customer_name is greater than 255 chars" do
477
255
  expect {
478
- Braspag::CreditCard.info("1" * 51)
479
- }.to raise_error(Braspag::InvalidOrderId)
256
+ params[:customer_name] = "b" * 256
257
+ Braspag::CreditCard.check_params(params)
258
+ }.to raise_error Braspag::InvalidCustomerName
480
259
  end
481
260
 
482
- it "should raise an error for incorrect data" do
483
- xml = <<-EOXML
484
- <?xml version="1.0" encoding="utf-8"?>
485
- <DadosCartao xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
486
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
487
- xsi:nil="true"
488
- xmlns="http://www.pagador.com.br/" />
489
- EOXML
261
+ it "should raise an error when holder is greater than 100 chars" do
262
+ expect {
263
+ params[:holder] = "r" * 101
264
+ Braspag::CreditCard.check_params(params)
265
+ }.to raise_error Braspag::InvalidHolder
266
+ end
490
267
 
491
- FakeWeb.register_uri(:post, "#{braspag_query_url}/GetDadosCartao",
492
- :body => xml)
268
+ it "should raise an error when expiration is not in a valid format" do
269
+ expect {
270
+ params[:expiration] = "2011/19/19"
271
+ Braspag::CreditCard.check_params(params)
272
+ }.to raise_error Braspag::InvalidExpirationDate
493
273
 
494
274
  expect {
495
- Braspag::CreditCard.info("sadpoakjspodqdouq09wduwq")
496
- }.to raise_error(Braspag::UnknownError)
275
+ params[:expiration] = "12/2012"
276
+ Braspag::CreditCard.check_params(params)
277
+ }.to_not raise_error Braspag::InvalidExpirationDate
497
278
 
279
+ expect {
280
+ params[:expiration] = "12/12"
281
+ Braspag::CreditCard.check_params(params)
282
+ }.to_not raise_error Braspag::InvalidExpirationDate
283
+ end
498
284
 
285
+ it "should raise an error when security code is greater than 4 chars" do
499
286
  expect {
500
- Braspag::CreditCard.info("asdnasdniousa")
501
- }.to raise_error(Braspag::UnknownError)
287
+ params[:security_code] = "12345"
288
+ Braspag::CreditCard.check_params(params)
289
+ }.to raise_error Braspag::InvalidSecurityCode
502
290
 
503
- FakeWeb.clean_registry
291
+ expect {
292
+ params[:security_code] = ""
293
+ Braspag::CreditCard.check_params(params)
294
+ }.to raise_error Braspag::InvalidSecurityCode
504
295
  end
505
296
 
506
- context "with correct data" do
507
-
508
- let(:order_info) {
509
- xml = <<-EOXML
510
- <DadosCartao xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.pagador.com.br/">
511
- <NumeroComprovante>225296</NumeroComprovante>
512
- <Autenticada>false</Autenticada>
513
- <NumeroAutorizacao>557593</NumeroAutorizacao>
514
- <NumeroCartao>345678*****0007</NumeroCartao>
515
- <NumeroTransacao>101001225645</NumeroTransacao>
516
- </DadosCartao>
517
- EOXML
297
+ it "should raise an error when number_payments is greater than 99" do
298
+ expect {
299
+ params[:number_payments] = 100
300
+ Braspag::CreditCard.check_params(params)
301
+ }.to raise_error Braspag::InvalidNumberPayments
518
302
 
519
- FakeWeb.register_uri(:post, "#{braspag_query_url}/GetDadosCartao",
520
- :body => xml)
521
- order_info = Braspag::CreditCard.info("12345")
522
- FakeWeb.clean_registry
523
- order_info
524
- }
303
+ expect {
304
+ params[:number_payments] = 0
305
+ Braspag::CreditCard.check_params(params)
306
+ }.to raise_error Braspag::InvalidNumberPayments
307
+ end
308
+ end
525
309
 
526
- it "should return a Hash" do
527
- order_info.should be_kind_of Hash
528
- end
310
+ describe ".info_url" do
311
+ it "should return the correct info url when connection environment is homologation" do
312
+ @connection.stub(:braspag_url => braspag_homologation_url)
313
+ @connection.should_receive(:production?)
314
+ .and_return(false)
529
315
 
530
- {
531
- :checking_number => "225296",
532
- :certified => "false",
533
- :autorization_number => "557593",
534
- :card_number => "345678*****0007",
535
- :transaction_number => "101001225645"
536
- }.each do |key, value|
316
+ Braspag::CreditCard.info_url.should == "#{braspag_homologation_url}/pagador/webservice/pedido.asmx/GetDadosCartao"
317
+ end
537
318
 
538
- it "should return a Hash with :#{key.to_s} key" do
539
- order_info[key].should == value
540
- end
541
- end
319
+ it "should return the correct info url when connection environment is production" do
320
+ @connection.stub(:braspag_url => braspag_production_url)
321
+ @connection.should_receive(:production?)
322
+ .and_return(true)
323
+
324
+ Braspag::CreditCard.info_url.should == "#{braspag_production_url}/webservices/pagador/pedido.asmx/GetDadosCartao"
542
325
  end
543
326
  end
544
327
 
328
+ describe ".authorize_url .capture_url" do
329
+ it "should return the correct credit card creation url when connection environment is homologation" do
330
+ @connection.stub(:braspag_url => braspag_homologation_url)
331
+ Braspag::CreditCard.authorize_url.should == "#{braspag_homologation_url}/webservices/pagador/Pagador.asmx/Authorize"
332
+ Braspag::CreditCard.capture_url.should == "#{braspag_homologation_url}/webservices/pagador/Pagador.asmx/Capture"
333
+ end
545
334
 
335
+ it "should return the correct credit card creation url when connection environment is production" do
336
+ @connection.stub(:braspag_url => braspag_production_url)
337
+ Braspag::CreditCard.authorize_url.should == "#{braspag_production_url}/webservices/pagador/Pagador.asmx/Authorize"
338
+ Braspag::CreditCard.capture_url.should == "#{braspag_production_url}/webservices/pagador/Pagador.asmx/Capture"
339
+ end
546
340
  end
547
341
  end