cieloz 0.0.2

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.
Files changed (57) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +170 -0
  5. data/Rakefile +16 -0
  6. data/cieloz.gemspec +34 -0
  7. data/config/locales/en.yml +11 -0
  8. data/config/locales/pt-BR.yml +11 -0
  9. data/lib/cieloz/bandeiras.rb +22 -0
  10. data/lib/cieloz/builder.rb +71 -0
  11. data/lib/cieloz/configuracao.rb +64 -0
  12. data/lib/cieloz/helpers.rb +35 -0
  13. data/lib/cieloz/homologacao.rb +16 -0
  14. data/lib/cieloz/requisicao/dados_ec.rb +14 -0
  15. data/lib/cieloz/requisicao/resposta/erro.rb +11 -0
  16. data/lib/cieloz/requisicao/resposta/transacao.rb +11 -0
  17. data/lib/cieloz/requisicao/resposta.rb +35 -0
  18. data/lib/cieloz/requisicao.rb +69 -0
  19. data/lib/cieloz/requisicao_tid.rb +23 -0
  20. data/lib/cieloz/requisicao_transacao/dados_pedido.rb +32 -0
  21. data/lib/cieloz/requisicao_transacao/dados_portador.rb +79 -0
  22. data/lib/cieloz/requisicao_transacao/forma_pagamento.rb +94 -0
  23. data/lib/cieloz/requisicao_transacao.rb +126 -0
  24. data/lib/cieloz/version.rb +3 -0
  25. data/lib/cieloz.rb +24 -0
  26. data/readme/cielo_developer_guide_2.0.3.pdf +0 -0
  27. data/readme/cielo_guia_seguranca_ecommerce.pdf +0 -0
  28. data/readme/cielo_payment_states.png +0 -0
  29. data/readme/contrato_de_afiliacao_ao_sistema_cielo.pdf +0 -0
  30. data/readme/credentials.png +0 -0
  31. data/readme/dicas_preventivas_para_vendas_mais_seguras.pdf +0 -0
  32. data/readme/email_cielo.pdf +0 -0
  33. data/readme/lista_de_documentos_necessarios_para_afiliacao_de_vendas_pela_internet_pessoa_juridica.pdf +0 -0
  34. data/readme/mastercard_securecodedemo.swf +0 -0
  35. data/readme/supported_products.png +0 -0
  36. data/readme/termo_de_adesao_de_risco.pdf +0 -0
  37. data/readme/verified_by_visa.png +0 -0
  38. data/test/integration/integration_test.rb +104 -0
  39. data/test/minitest_helper.rb +65 -0
  40. data/test/unit/bandeiras_operacoes_test.rb +25 -0
  41. data/test/unit/builder_test.rb +212 -0
  42. data/test/unit/configuracao_test.rb +85 -0
  43. data/test/unit/requisicao_autorizacao_tid_test.rb +19 -0
  44. data/test/unit/requisicao_cancelamento_test.rb +25 -0
  45. data/test/unit/requisicao_captura_test.rb +25 -0
  46. data/test/unit/requisicao_consulta_test.rb +19 -0
  47. data/test/unit/requisicao_test.rb +84 -0
  48. data/test/unit/requisicao_transacao_test.rb +82 -0
  49. data/test/unit/validations_test.rb +358 -0
  50. data/test/unit/xml/dados-ec.xml +4 -0
  51. data/test/unit/xml/dados-pagamento.xml +5 -0
  52. data/test/unit/xml/dados-pedido.xml +9 -0
  53. data/test/unit/xml/dados-portador.xml +7 -0
  54. data/test/unit/xml/dados-simple_attrs.xml +4 -0
  55. data/test/unit/xml/erro.xml +5 -0
  56. data/test/unit/xml/transacao.xml +19 -0
  57. metadata +280 -0
@@ -0,0 +1,212 @@
1
+ describe Cieloz::Builder do
2
+ let(:_) { Cieloz }
3
+
4
+ before do
5
+ Cieloz::Configuracao.soft_descriptor = "config"
6
+
7
+ @source = Object.new
8
+ def @source.numero ; 123456 end
9
+ def @source.valor ; 7890 end
10
+ end
11
+
12
+ describe "Pedido building" do
13
+ let(:now) { Time.now }
14
+
15
+ before do
16
+ Time.stub :now, now do
17
+ @pedido = _.pedido @source
18
+ end
19
+ end
20
+
21
+ describe "missing opts" do
22
+ it "asks for pedido / numero and valor attributes" do
23
+ @pedido.numero.must_equal @source.numero
24
+ @pedido.valor.must_equal @source.valor
25
+ end
26
+
27
+ it "populates config values for data_hora, idioma, moeda and soft_descriptor" do
28
+ @pedido.descricao.must_be_nil
29
+ @pedido.data_hora.must_equal now
30
+ @pedido.moeda.must_equal Cieloz::Configuracao.moeda
31
+ @pedido.idioma.must_equal Cieloz::Configuracao.idioma
32
+ @pedido.soft_descriptor.must_equal Cieloz::Configuracao.soft_descriptor
33
+ end
34
+ end
35
+
36
+ describe "opts given" do
37
+ before do
38
+ def @source.number ; 24680 end
39
+ def @source.value ; 13579 end
40
+ def @source.description ; "abc" end
41
+ def @source.time ; Time.at 0 end
42
+ def @source.currency ; 123 end
43
+ def @source.language ; "EN" end
44
+ def @source.soft_desc ; "xyz" end
45
+ end
46
+
47
+ it "maps attribute names" do
48
+ mappings = {
49
+ numero: :number,
50
+ valor: :value,
51
+ descricao: :description,
52
+ data_hora: :time,
53
+ moeda: :currency,
54
+ idioma: :language,
55
+ soft_descriptor: :soft_desc
56
+ }
57
+ pedido = _.pedido @source, mappings
58
+
59
+ mappings.each { |k,v| pedido.send(k).must_equal @source.send(v) }
60
+ end
61
+
62
+ it "gets given opts values" do
63
+ opts = {
64
+ numero: "abc",
65
+ valor: 123,
66
+ descricao: "description",
67
+ data_hora: 1.day.ago,
68
+ moeda: 321,
69
+ idioma: "ES",
70
+ soft_descriptor: "soft_desc"
71
+ }
72
+ pedido = _.pedido @source, opts
73
+
74
+ opts.each { |k,v| pedido.send(k).must_equal opts[k] }
75
+ end
76
+ end
77
+
78
+ describe "valor handling" do
79
+ it "preserves valor if it's an integer" do
80
+ _.pedido(@source).valor.must_equal @source.valor
81
+ end
82
+
83
+ it "converts valor to integer number of cents if it's a float" do
84
+ def @source.valor ; 123.451 end
85
+ _.pedido(@source).valor.must_equal 12345
86
+
87
+ def @source.valor ; 123.456 end
88
+ _.pedido(@source).valor.must_equal 12346
89
+ end
90
+ end
91
+ end
92
+
93
+ describe "Pagamento Building" do
94
+ before do
95
+ def @source.operacao ; :visa end
96
+ def @source.parcelas ; 2 end
97
+ end
98
+
99
+ it "asks for operacao / parcelas attributes when missing opts" do
100
+ pg = _.pagamento @source
101
+ pg.bandeira.must_equal "visa"
102
+ pg.parcelas.must_equal @source.parcelas
103
+ end
104
+
105
+ it "maps operacao / numero when opts are given" do
106
+ def @source.operation ; :mastercard end
107
+ def @source.installments ; 6 end
108
+
109
+ opts = { operacao: :operation, parcelas: :installments }
110
+ pg = _.pagamento @source, opts
111
+
112
+ pg.bandeira.must_equal @source.operation.to_s
113
+ pg.parcelas.must_equal @source.installments
114
+ end
115
+
116
+ it "get given operacao / numero values" do
117
+ opts = { operacao: "amex", parcelas: 9 }
118
+ pg = _.pagamento @source, opts
119
+
120
+ pg.bandeira.must_equal opts[:operacao]
121
+ pg.parcelas.must_equal opts[:parcelas]
122
+ end
123
+ end
124
+
125
+ describe "Transacao Building" do
126
+ let(:mappings) {
127
+ {
128
+ dados_pedido: _.pedido(@source),
129
+ forma_pagamento: _.pagamento(@source)
130
+ }
131
+ }
132
+
133
+ before do
134
+ @captura = Cieloz::Configuracao.captura_automatica
135
+ Cieloz::Configuracao.captura_automatica = true
136
+ Cieloz::Configuracao.url_retorno = "http://call.back"
137
+
138
+ def @source.operacao ; :visa end
139
+ def @source.parcelas ; 2 end
140
+ def @source.dados_portador ; @portador end
141
+ def @source.dados_pedido ; @pedido end
142
+ def @source.forma_pagamento ; @pagamento end
143
+
144
+ @portador = _.portador(@source)
145
+ @pedido = _.pedido(@source)
146
+ @pagamento = _.pagamento(@source)
147
+
148
+ @source.instance_variable_set :@portador, @portador
149
+ @source.instance_variable_set :@pedido, @pedido
150
+ @source.instance_variable_set :@pagamento, @pagamento
151
+ end
152
+
153
+ after do
154
+ Cieloz::Configuracao.captura_automatica = @captura
155
+ end
156
+
157
+ it "populates config values for url_retorno / captura_automatica when missing opts" do
158
+ txn = _.transacao @source
159
+
160
+ txn.url_retorno.must_equal Cieloz::Configuracao.url_retorno
161
+ txn.capturar.must_equal Cieloz::Configuracao.captura_automatica.to_s
162
+ end
163
+
164
+ it "maps attributes when opts are given" do
165
+ obj_mappings = {
166
+ dados_portador: :card_owner,
167
+ dados_pedido: :order,
168
+ forma_pagamento: :payment,
169
+ }
170
+ val_mappings = {
171
+ url_retorno: :callback_url,
172
+ capturar: :auto_capture,
173
+ campo_livre: :notes
174
+ }
175
+
176
+ def @source.card_owner ; @portador end
177
+ def @source.order ; @pedido end
178
+ def @source.payment ; @pagamento end
179
+ def @source.callback_url ; "http://ca.ll" end
180
+ def @source.auto_capture ; "true" end
181
+ def @source.notes ; "notes" end
182
+
183
+ txn = _.transacao @source, obj_mappings.merge(val_mappings)
184
+ obj_mappings.each { |k,v| txn.send(k).must_be_same_as @source.send(v) }
185
+ val_mappings.each { |k,v| txn.send(k).must_equal @source.send(v) }
186
+ end
187
+
188
+ it "gets given attribute values" do
189
+ values = {
190
+ dados_portador: @portador,
191
+ dados_pedido: @pedido,
192
+ forma_pagamento: @pagamento,
193
+ url_retorno: "http://call",
194
+ capturar: "false",
195
+ campo_livre: "livre"
196
+ }
197
+ txn = _.transacao @source, values
198
+ values.each { |k,v| txn.send(k).must_equal v }
199
+ end
200
+
201
+ it "triggers pagamento.operacao" do
202
+ _.transacao(@source).autorizar
203
+ .must_equal Cieloz::RequisicaoTransacao::AUTORIZACAO_DIRETA
204
+
205
+ ["verified_by_visa", "mastercard_securecode"].each {|opr|
206
+ pg = _.pagamento @source, operacao: opr, parcelas: 2
207
+ _.transacao(@source, forma_pagamento: pg).autorizar
208
+ .must_equal Cieloz::RequisicaoTransacao::AUTORIZAR_SE_AUTENTICADA
209
+ }
210
+ end
211
+ end
212
+ end
@@ -0,0 +1,85 @@
1
+ describe Cieloz::Configuracao do
2
+ let(:_) { Cieloz::Configuracao }
3
+ let(:hash) { { numero: 123, chave: "abc123" } }
4
+
5
+ before do
6
+ _.reset!
7
+ end
8
+
9
+ describe "defaults" do
10
+ it { _.moeda.must_equal 986 }
11
+ it { _.idioma.must_equal "PT" }
12
+ it { _.max_parcelas.must_equal 3 }
13
+ it { _.max_adm_parcelas.must_equal 10 }
14
+ it { _.captura_automatica.must_equal false }
15
+ end
16
+
17
+ describe "settings" do
18
+ before do
19
+ @cur, @lang, @max, @max_adm, @cap = _.moeda, _.idioma,
20
+ _.max_parcelas, _.max_adm_parcelas, _.captura_automatica
21
+
22
+ _.moeda = 123
23
+ _.idioma = "EN"
24
+ _.max_parcelas = 6
25
+ _.max_adm_parcelas = 12
26
+ _.captura_automatica = true
27
+ end
28
+
29
+ it { _.moeda.must_equal 123 }
30
+ it { _.idioma.must_equal "EN" }
31
+ it { _.max_parcelas.must_equal 6 }
32
+ it { _.max_adm_parcelas.must_equal 12 }
33
+ it { _.captura_automatica.must_equal true }
34
+
35
+ after do
36
+ _.moeda = @cur
37
+ _.idioma = @lang
38
+ _.max_parcelas = @max
39
+ _.max_adm_parcelas = @max_adm
40
+ _.captura_automatica = @cap
41
+ end
42
+ end
43
+
44
+ describe "credenciais" do
45
+ describe "not set" do
46
+ it "defaults to Homologacao::Credenciais::CIELO" do
47
+ _.credenciais.must_equal Cieloz::Homologacao::Credenciais::CIELO
48
+ end
49
+
50
+ it "returns Homologacao::LOJA at store_mode" do
51
+ _.store_mode!
52
+ _.credenciais.must_equal Cieloz::Homologacao::Credenciais::LOJA
53
+ end
54
+
55
+ it "returns Homologacao::CIELO at cielo_mode" do
56
+ _.cielo_mode!
57
+ _.credenciais.must_equal Cieloz::Homologacao::Credenciais::CIELO
58
+ end
59
+ end
60
+
61
+ describe "set" do
62
+ before { _.credenciais = hash }
63
+
64
+ it "returns DadosEc with credenciais attributes" do
65
+ _.credenciais.numero.must_equal hash[:numero]
66
+ _.credenciais.chave.must_equal hash[:chave]
67
+ end
68
+
69
+ it "returns the same DadosEc in subsequent calls" do
70
+ _.credenciais.must_equal _.credenciais
71
+ end
72
+ end
73
+ end
74
+
75
+ describe "host" do
76
+ it "returns homologation host when credenciais is not set" do
77
+ _.host.must_equal Cieloz::Homologacao::HOST
78
+ end
79
+
80
+ it "returns production host when credenciais is set" do
81
+ _.credenciais = hash
82
+ _.host.must_equal Cieloz::Configuracao::HOST
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ describe Cieloz::RequisicaoAutorizacaoTid do
4
+ let(:_) { subject.class }
5
+ let(:dir) { File.dirname __FILE__ }
6
+ let(:opts) { { root: "requisicao-autorizacao-tid" } }
7
+ let(:ec) { _::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO }
8
+
9
+ it "serializes tid" do
10
+ tid = 12345
11
+ subject.tid = tid
12
+ assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
13
+ end
14
+
15
+ it "serializes dados-ec" do
16
+ subject.dados_ec = ec
17
+ assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ describe Cieloz::RequisicaoCancelamento do
4
+ let(:_) { subject.class }
5
+ let(:dir) { File.dirname __FILE__ }
6
+ let(:opts) { { root: "requisicao-cancelamento" } }
7
+ let(:ec) { _::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO }
8
+
9
+ it "serializes tid" do
10
+ tid = 12345
11
+ subject.tid = tid
12
+ assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
13
+ end
14
+
15
+ it "serializes dados-ec" do
16
+ subject.dados_ec = ec
17
+ assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
18
+ end
19
+
20
+ it "serializes valor" do
21
+ val = 123
22
+ subject.valor = val
23
+ assert_equal expected_xml(opts) { "<valor>#{val}</valor>" }, subject.to_xml
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ describe Cieloz::RequisicaoCaptura do
4
+ let(:_) { subject.class }
5
+ let(:dir) { File.dirname __FILE__ }
6
+ let(:opts) { { root: "requisicao-captura" } }
7
+ let(:ec) { _::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO }
8
+
9
+ it "serializes tid" do
10
+ tid = 12345
11
+ subject.tid = tid
12
+ assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
13
+ end
14
+
15
+ it "serializes dados-ec" do
16
+ subject.dados_ec = ec
17
+ assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
18
+ end
19
+
20
+ it "serializes valor" do
21
+ val = 123
22
+ subject.valor = val
23
+ assert_equal expected_xml(opts) { "<valor>#{val}</valor>" }, subject.to_xml
24
+ end
25
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ describe Cieloz::RequisicaoConsulta do
4
+ let(:_) { subject.class }
5
+ let(:dir) { File.dirname __FILE__ }
6
+ let(:opts) { { root: "requisicao-consulta" } }
7
+ let(:ec) { _::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO }
8
+
9
+ it "serializes tid" do
10
+ tid = 12345
11
+ subject.tid = tid
12
+ assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
13
+ end
14
+
15
+ it "serializes dados-ec" do
16
+ subject.dados_ec = ec
17
+ assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
18
+ end
19
+ end
@@ -0,0 +1,84 @@
1
+ # encoding: utf-8
2
+
3
+ describe Cieloz::Requisicao do
4
+ let(:_) { subject.class }
5
+ let(:id) { "1" }
6
+ let(:versao) { "1.2.0" }
7
+ let(:opts) { { root: "requisicao", id: id, versao: versao } }
8
+
9
+ let(:dir) { File.dirname __FILE__ }
10
+
11
+ before do
12
+ subject.id = id
13
+ subject.versao = versao
14
+ end
15
+
16
+ it "serializes" do
17
+ assert_equal expected_xml(opts), subject.to_xml
18
+ end
19
+
20
+ describe "value attributes" do
21
+ before do
22
+ subject.class_eval do
23
+ attr_accessor :foo
24
+
25
+ def attributes
26
+ { foo: @foo }
27
+ end
28
+ end
29
+ end
30
+
31
+ let(:foo) { "Informações Extras" }
32
+
33
+ it "serializes" do
34
+ subject.foo = foo
35
+
36
+ xml = expected_xml(opts) { "<foo>#{foo}</foo>" }
37
+ assert_equal xml, subject.to_xml
38
+ end
39
+
40
+ it "ignores nils" do
41
+ subject.foo = nil
42
+ assert_equal expected_xml(opts), subject.to_xml
43
+ end
44
+ end
45
+
46
+ describe "complex attributes" do
47
+ let(:attributes) { { numero: 123, chave: "M3str4" } }
48
+ let(:ec) { _::DadosEc.new attributes }
49
+ let(:xml) { expected_xml(opts) { xml_for :ec, dir, binding } }
50
+
51
+ it "serializes" do
52
+ subject.dados_ec = ec
53
+ assert_equal xml, subject.to_xml
54
+ end
55
+
56
+ it "ignores nils" do
57
+ attributes.merge! ignore_me: nil
58
+ subject.dados_ec = ec
59
+ assert_equal xml, subject.to_xml
60
+ end
61
+ end
62
+
63
+ describe "request posting" do
64
+ let(:err) { "101" }
65
+ let(:msg) { "Invalid" }
66
+ let(:fake_response) { render_template dir, "erro.xml", binding }
67
+
68
+ before do
69
+ FakeWeb.register_uri :post, Cieloz::Configuracao.url, body: fake_response
70
+ end
71
+
72
+ it "sends to test web service" do
73
+ subject.dados_ec = _::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO
74
+ erro = subject.submit
75
+ assert_equal({}, subject.errors.messages)
76
+ assert_equal err, erro.codigo
77
+ assert_equal "Invalid", erro.mensagem
78
+ end
79
+
80
+ after do
81
+ FakeWeb.clean_registry
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,82 @@
1
+ describe Cieloz::RequisicaoTransacao do
2
+ let(:_) { subject.class }
3
+ let(:dir) { File.dirname __FILE__ }
4
+ let(:opts) { { root: "requisicao-transacao" } }
5
+
6
+ let(:ec) { _::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO }
7
+ let(:portador) { _::DadosPortador::TEST::VISA }
8
+
9
+ let(:now) { Time.now }
10
+ let(:pedido) {
11
+ _::DadosPedido.new numero: 123, valor: 5000, moeda: 986,
12
+ data_hora: now, descricao: "teste", idioma: "PT", soft_descriptor: "13letterstest"
13
+ }
14
+ let(:pagamento) { _::FormaPagamento.new.credito "visa" }
15
+
16
+ it "serializes dados-ec" do
17
+ subject.dados_ec = ec
18
+ assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
19
+ end
20
+
21
+ it "serializes dados-portador" do
22
+ subject.dados_portador = portador
23
+ assert_equal expected_xml(opts) { xml_for :portador, dir, binding }, subject.to_xml
24
+ end
25
+
26
+ it "serializes dados-pedido" do
27
+ subject.dados_pedido = pedido
28
+ assert_equal expected_xml(opts) { xml_for :pedido, dir, binding }, subject.to_xml
29
+ end
30
+
31
+ it "serializes forma-pagamento" do
32
+ subject.forma_pagamento = pagamento
33
+ assert_equal expected_xml(opts) { xml_for :pagamento, dir, binding }, subject.to_xml
34
+ end
35
+
36
+ it "serializes simple attributes" do
37
+ subject.url_retorno = "http://callback.acti.on"
38
+ subject.autorizacao_direta
39
+ subject.capturar_automaticamente
40
+ subject.campo_livre = "I want to break free"
41
+ assert_equal expected_xml(opts) { xml_for :simple_attrs, dir, binding }, subject.to_xml
42
+ end
43
+
44
+ describe "request posting" do
45
+ let(:status_txn) { "0" }
46
+ let(:tid) { "1001734898090FD31001" }
47
+ let(:url_cielo) {
48
+ "https://qasecommerce.cielo.com.br/web/index.cbmp?id=690ef010bfa77778f23da1a982d5d4cc"
49
+ }
50
+ let(:fake_response) { render_template dir, "transacao.xml", binding }
51
+
52
+ before do
53
+ portador.nome_portador = "Jose da Silva"
54
+ FakeWeb.register_uri :post, Cieloz::Configuracao.url, body: fake_response
55
+ end
56
+
57
+ after do
58
+ FakeWeb.clean_registry
59
+ end
60
+
61
+ it "sends to test web service" do
62
+ Cieloz::Configuracao.reset!
63
+ subject.id = SecureRandom.uuid
64
+ subject.versao = "1.2.0"
65
+ subject.dados_ec = ec
66
+ # txn.dados_portador = portador # buy page loja only!
67
+ subject.dados_pedido = pedido
68
+ subject.forma_pagamento = pagamento
69
+ subject.url_retorno = "http://localhost:3000/cielo/callback"
70
+ subject.autorizacao_direta
71
+ subject.capturar_automaticamente
72
+ subject.campo_livre = "debug"
73
+
74
+ res = subject.submit
75
+ assert_equal({}, subject.errors.messages)
76
+ assert_equal Cieloz::Requisicao::Transacao, res.class
77
+ assert_equal tid, res.tid
78
+ assert_equal status_txn, res.status
79
+ assert_equal url_cielo, res.url_autenticacao
80
+ end
81
+ end
82
+ end