rbraspag 0.0.19 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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