boletosimples 0.0.7 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -1
  3. data/README.md +156 -3
  4. data/boletosimples.gemspec +9 -9
  5. data/lib/boletosimples.rb +38 -4
  6. data/lib/boletosimples/configuration.rb +69 -0
  7. data/lib/boletosimples/extra.rb +8 -0
  8. data/lib/boletosimples/last_request.rb +43 -0
  9. data/lib/boletosimples/middlewares/last_request.rb +9 -0
  10. data/lib/boletosimples/middlewares/raise_error.rb +11 -0
  11. data/lib/boletosimples/middlewares/user_agent.rb +10 -0
  12. data/lib/boletosimples/resources/bank_billet.rb +13 -0
  13. data/lib/boletosimples/resources/base_model.rb +8 -0
  14. data/lib/boletosimples/resources/customer.rb +4 -0
  15. data/lib/boletosimples/resources/partner/user.rb +7 -0
  16. data/lib/boletosimples/resources/transaction.rb +4 -0
  17. data/lib/boletosimples/response_error.rb +43 -0
  18. data/lib/boletosimples/version.rb +1 -1
  19. data/spec/boletosimples/configuration_spec.rb +84 -0
  20. data/spec/boletosimples/extra_spec.rb +31 -0
  21. data/spec/boletosimples/last_request_spec.rb +34 -0
  22. data/spec/boletosimples/resources/bank_billet_spec.rb +75 -0
  23. data/spec/boletosimples/resources/customer_spec.rb +66 -0
  24. data/spec/boletosimples/resources/partner/user_spec.rb +19 -0
  25. data/spec/boletosimples/resources/transactions_spec.rb +17 -0
  26. data/spec/fixtures/vcr_cassettes/configuration/client_credentials/invalid.yml +64 -0
  27. data/spec/fixtures/vcr_cassettes/configuration/client_credentials/valid.yml +56 -0
  28. data/spec/fixtures/vcr_cassettes/extra/userinfo/authenticated.yml +58 -0
  29. data/spec/fixtures/vcr_cassettes/extra/userinfo/not_authenticated.yml +54 -0
  30. data/spec/fixtures/vcr_cassettes/last_request/bank_billets.yml +129 -0
  31. data/spec/fixtures/vcr_cassettes/last_request/userinfo.yml +58 -0
  32. data/spec/fixtures/vcr_cassettes/resources/bank_billet/all.yml +132 -0
  33. data/spec/fixtures/vcr_cassettes/resources/bank_billet/cancel.yml +125 -0
  34. data/spec/fixtures/vcr_cassettes/resources/bank_billet/create/invalid_params.yml +61 -0
  35. data/spec/fixtures/vcr_cassettes/{BoletoSimples_Client/_cancel_bank_billet/already_canceled.yml → resources/bank_billet/create/invalid_root.yml} +24 -24
  36. data/spec/fixtures/vcr_cassettes/{BoletoSimples_Client/_create_bank_billet/with_valid_data.yml → resources/bank_billet/create/valid.yml} +32 -28
  37. data/spec/fixtures/vcr_cassettes/{BoletoSimples_Client/_bank_billet/existing_bank_billet.yml → resources/bank_billet/find.yml} +30 -28
  38. data/spec/fixtures/vcr_cassettes/resources/customer/all.yml +72 -0
  39. data/spec/fixtures/vcr_cassettes/resources/customer/create/invalid_params.yml +59 -0
  40. data/spec/fixtures/vcr_cassettes/resources/customer/create/invalid_root.yml +58 -0
  41. data/spec/fixtures/vcr_cassettes/{BoletoSimples_Client/_create_customer/with_valid_data.yml → resources/customer/create/valid.yml} +30 -26
  42. data/spec/fixtures/vcr_cassettes/resources/customer/find.yml +59 -0
  43. data/spec/fixtures/vcr_cassettes/resources/partner/user/create.yml +60 -0
  44. data/spec/fixtures/vcr_cassettes/resources/transaction/all.yml +62 -0
  45. data/spec/spec_helper.rb +10 -0
  46. data/spec/support/vcr.rb +8 -0
  47. metadata +97 -80
  48. data/example/access_token_example.rb +0 -79
  49. data/example/oauth_example.rb +0 -126
  50. data/lib/boletosimples/client.rb +0 -100
  51. data/lib/boletosimples/oauth_client.rb +0 -74
  52. data/spec/boletosimples/client_spec.rb +0 -415
  53. data/spec/boletosimples/oauth_client_spec.rb +0 -17
  54. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_bank_billet/not_found.yml +0 -44
  55. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_bank_billets.yml +0 -63
  56. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_cancel_bank_billet/with_invalid_bank_billet.yml +0 -54
  57. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_cancel_bank_billet/with_valid_bank_billet.yml +0 -71
  58. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_create_bank_billet/with_invalid_data.yml +0 -64
  59. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_create_customer/with_invalid_data.yml +0 -59
  60. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_customer/existing_customer.yml +0 -57
  61. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_customer/not_found.yml +0 -58
  62. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_customers.yml +0 -59
  63. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_transactions.yml +0 -67
  64. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_userinfo/with_authentication.yml +0 -56
  65. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_userinfo/with_authentication/.yml +0 -56
  66. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_userinfo/without_authentication.yml +0 -54
  67. data/spec/fixtures/vcr_cassettes/BoletoSimples_Client/_userinfo/without_authentication/.yml +0 -54
  68. data/spec/fixtures/vcr_cassettes/BoletoSimples_OAuthClient/_userinfo/without_authentication/.yml +0 -62
@@ -0,0 +1,4 @@
1
+ module BoletoSimples
2
+ class Customer < BaseModel
3
+ end
4
+ end
@@ -0,0 +1,7 @@
1
+ module BoletoSimples
2
+ module Partner
3
+ class User < BoletoSimples::BaseModel
4
+ collection_path "partner/users"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ module BoletoSimples
2
+ class Transaction < BaseModel
3
+ end
4
+ end
@@ -0,0 +1,43 @@
1
+ module BoletoSimples
2
+ # BoletoSimples::ResponseError
3
+ # Exception that gets raised if the response is an error (4xx or 5xx)
4
+ #
5
+ # Formats a readable error message including HTTP status, method and requested URL
6
+ #
7
+ # Examples:
8
+ #
9
+ # BoletoSimples::BankBillet.all
10
+ # BoletoSimples::ResponseError: 401 POST https://sandbox.boletosimples.com.br/api/v1/bank_billets
11
+ #
12
+ # begin
13
+ # BoletoSimples::BankBillet.all
14
+ # rescue BoletoSimples::ResponseError => response
15
+ # response.status # => 401
16
+ # response.method # => "GET"
17
+ # response.url # => "https://sandbox.boletosimples.com.br/api/v1/bank_billets"
18
+ # response.body # => "{"error":"Você precisa se logar ou registrar antes de prosseguir."}"
19
+ # response.error_message # => "Você precisa se logar ou registrar antes de prosseguir."
20
+ # end
21
+ #
22
+ class ResponseError < StandardError
23
+ attr_reader :response, :body, :status, :method, :url, :error_message
24
+
25
+ def initialize(response = nil)
26
+ @response = response
27
+
28
+ @body = response[:body][:data]
29
+ @status = response[:status].to_i
30
+ @method = response[:method].to_s.upcase
31
+ @url = response[:url]
32
+ @error_message = @body[:error]
33
+
34
+ super
35
+ end
36
+
37
+ def to_s
38
+ msg = "#{status} #{method} #{url}"
39
+ msg << " (#{error_message})" unless error_message.blank?
40
+ msg
41
+ end
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
1
  module BoletoSimples
2
- VERSION = '0.0.7'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -0,0 +1,84 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe BoletoSimples::Configuration do
5
+ describe 'defaults' do
6
+ before {
7
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_ENV').and_return(nil)
8
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_APP_ID').and_return(nil)
9
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_APP_SECRET').and_return(nil)
10
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_ACCESS_TOKEN').and_return(nil)
11
+ }
12
+ subject { BoletoSimples::Configuration.new }
13
+ it { expect(subject.environment).to eq(:sandbox) }
14
+ it { expect(subject.base_uri).to eq('https://sandbox.boletosimples.com.br/api/v1') }
15
+ it { expect(subject.application_id).to be_nil }
16
+ it { expect(subject.application_secret).to be_nil }
17
+ it { expect(subject.access_token).to be_nil }
18
+ it { expect(subject.cache).to be_nil }
19
+ it { expect(subject).not_to be_access_token }
20
+ end
21
+ describe 'environment variables' do
22
+ before {
23
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_ENV').and_return('production')
24
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_APP_ID').and_return('app-id')
25
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_APP_SECRET').and_return('app-secret')
26
+ allow(ENV).to receive(:[]).with('BOLETOSIMPLES_ACCESS_TOKEN').and_return('access-token')
27
+ }
28
+ subject { BoletoSimples::Configuration.new }
29
+ it { expect(subject.environment).to eq(:production) }
30
+ it { expect(subject.base_uri).to eq('https://boletosimples.com.br/api/v1') }
31
+ it { expect(subject.application_id).to eq('app-id') }
32
+ it { expect(subject.application_secret).to eq('app-secret') }
33
+ it { expect(subject.access_token).to eq('access-token') }
34
+ it { expect(subject).to be_access_token }
35
+ describe 'cache' do
36
+ it { expect(subject.cache).to be_nil }
37
+ it { expect(Her::API.default_api.connection.builder.handlers).not_to include(Faraday::HttpCache) }
38
+ end
39
+ end
40
+ describe 'configuration' do
41
+ let(:cache_object) { double('Dalli') }
42
+ before {
43
+ BoletoSimples.configure do |c|
44
+ c.environment = :production
45
+ c.application_id = 'app-id'
46
+ c.application_secret = 'app-secret'
47
+ c.access_token = 'access-token'
48
+ c.cache = cache_object
49
+ end
50
+ }
51
+ subject { BoletoSimples.configuration }
52
+ it { expect(subject.environment).to eq(:production) }
53
+ it { expect(subject.user_agent).to eq("BoletoSimples Ruby Client v#{BoletoSimples::VERSION} (contato@boletosimples.com.br)") }
54
+ it { expect(subject.base_uri).to eq('https://boletosimples.com.br/api/v1') }
55
+ it { expect(subject.application_id).to eq('app-id') }
56
+ it { expect(subject.application_secret).to eq('app-secret') }
57
+ it { expect(subject.access_token).to eq('access-token') }
58
+ describe 'cache' do
59
+ it { expect(subject.cache).to eq(cache_object) }
60
+ it { expect(Her::API.default_api.connection.builder.handlers).to include(Faraday::HttpCache) }
61
+ end
62
+ describe 'client credentials' do
63
+ context 'invalid credentials', vcr: { cassette_name: 'configuration/client_credentials/invalid'} do
64
+ before {
65
+ BoletoSimples.configure do |c|
66
+ c.application_id = 'app-id'
67
+ c.application_secret = 'app-secret'
68
+ c.access_token = nil
69
+ end
70
+ }
71
+ it { expect{subject.client_credentials}.to raise_error(BoletoSimples::ResponseError, "401 POST https://sandbox.boletosimples.com.br/api/v1/oauth2/token (invalid_client)") }
72
+ end
73
+ context 'valid credentials', vcr: { cassette_name: 'configuration/client_credentials/valid'} do
74
+ # Before running this spec again, you need to set environment variable BOLETOSIMPLES_APP_ID and BOLETOSIMPLES_APP_SECRET
75
+ before {
76
+ BoletoSimples.configure do |c|
77
+ c.access_token = nil
78
+ end
79
+ }
80
+ it { expect(subject.client_credentials).to include(:access_token) }
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ # Before running this spec again, you need to set environment variable BOLETOSIMPLES_ACCESS_TOKEN
5
+ RSpec.describe BoletoSimples::Extra do
6
+ context 'not authenticated' do
7
+ before {
8
+ BoletoSimples.configure do |c|
9
+ c.application_id = nil
10
+ c.application_secret = nil
11
+ c.access_token = 'invalid'
12
+ end
13
+ }
14
+ describe 'userinfo', vcr: { cassette_name: 'extra/userinfo/not_authenticated'} do
15
+ subject { BoletoSimples::Extra.userinfo }
16
+ it { expect{subject}.to raise_error(BoletoSimples::ResponseError, "401 GET https://sandbox.boletosimples.com.br/api/v1/userinfo.json?access_token=invalid (Você precisa se logar ou registrar antes de prosseguir.)") }
17
+ end
18
+ end
19
+ context 'authenticated' do
20
+ before {
21
+ BoletoSimples.configure do |c|
22
+ c.application_id = nil
23
+ c.application_secret = nil
24
+ end
25
+ }
26
+ describe 'userinfo', vcr: { cassette_name: 'extra/userinfo/authenticated'} do
27
+ subject { BoletoSimples::Extra.userinfo }
28
+ it { expect(subject).to eq({:id=>53, :login_url=>"https://sandbox.boletosimples.com.br/welcome?email=user1%40example.com&token=Dx6tDtrP_v9_CcDjMRmr", :email=>"user1@example.com", :account_type=>nil, :first_name=>nil, :middle_name=>nil, :last_name=>nil, :full_name=>nil, :cpf=>nil, :date_of_birth=>nil, :mother_name=>nil, :father_name=>nil, :account_level=>2, :phone_number=>nil, :address_street_name=>nil, :address_number=>nil, :address_complement=>nil, :address_neighborhood=>nil, :address_postal_code=>nil, :address_city_name=>nil, :address_state=>nil, :business_name=>nil, :business_cnpj=>nil, :business_legal_name=>nil}) }
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe BoletoSimples::LastRequest do
5
+ before {
6
+ BoletoSimples.configure do |c|
7
+ c.application_id = nil
8
+ c.application_secret = nil
9
+ end
10
+ }
11
+ describe 'bank_billets', vcr: { cassette_name: 'last_request/bank_billets'} do
12
+ before { BoletoSimples::BankBillet.all.size }
13
+ subject { BoletoSimples.last_request }
14
+ it { expect(subject).to be_kind_of(BoletoSimples::LastRequest) }
15
+ it { expect(subject.body).to be_kind_of(Array) }
16
+ it { expect(subject.body.first).to be_kind_of(Hash) }
17
+ it { expect(subject.response_headers).to be_kind_of(Hash) }
18
+ it { expect(subject.total).to be_kind_of(Integer) }
19
+ it { expect(subject.ratelimit_limit).to be_kind_of(Integer) }
20
+ it { expect(subject.ratelimit_remaining).to be_kind_of(Integer) }
21
+ it { expect(subject.links.keys).to match_array([:next, :last]) }
22
+ end
23
+ describe 'user_info', vcr: { cassette_name: 'last_request/userinfo'} do
24
+ before { BoletoSimples::Extra.userinfo }
25
+ subject { BoletoSimples.last_request }
26
+ it { expect(subject).to be_kind_of(BoletoSimples::LastRequest) }
27
+ it { expect(subject.body).to be_kind_of(Hash) }
28
+ it { expect(subject.response_headers).to be_kind_of(Hash) }
29
+ it { expect(subject.total).to eq(0) }
30
+ it { expect(subject.ratelimit_limit).to be_kind_of(Integer) }
31
+ it { expect(subject.ratelimit_remaining).to be_kind_of(Integer) }
32
+ it { expect(subject.links).to eq({}) }
33
+ end
34
+ end
@@ -0,0 +1,75 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+
5
+ # Before running this spec again, you need to set environment variable BOLETOSIMPLES_ACCESS_TOKEN
6
+ RSpec.describe BoletoSimples::BankBillet do
7
+ before {
8
+ BoletoSimples.configure do |c|
9
+ c.application_id = nil
10
+ c.application_secret = nil
11
+ end
12
+ }
13
+ describe 'methods' do
14
+ before {
15
+ VCR.use_cassette('resources/bank_billet/create/valid') do
16
+ @bank_billet = BoletoSimples::BankBillet.create({
17
+ amount: 9.01,
18
+ description: 'Despesas do contrato 0012',
19
+ expire_at: '2014-01-01',
20
+ customer_address: 'Rua quinhentos',
21
+ customer_address_complement: 'Sala 4',
22
+ customer_address_number: '111',
23
+ customer_city_name: 'Rio de Janeiro',
24
+ customer_cnpj_cpf: '012.345.678-90',
25
+ customer_email: 'cliente@bom.com',
26
+ customer_neighborhood: 'Sao Francisco',
27
+ customer_person_name: 'Joao da Silva',
28
+ customer_person_type: 'individual',
29
+ customer_phone_number: '2112123434',
30
+ customer_state: 'RJ',
31
+ customer_zipcode: '12312-123',
32
+ notification_url: 'http://example.com.br/notify'
33
+ })
34
+ end
35
+ }
36
+ describe 'create' do
37
+ context 'valid parameters' do
38
+ subject { @bank_billet }
39
+ it { expect(subject).to be_a_kind_of(BoletoSimples::BankBillet) }
40
+ it { expect(subject.response_errors).to eq({}) }
41
+ it { expect(subject.attributes.keys).to match_array(["amount","description","expire_at","customer_address","customer_address_complement","customer_address_number","customer_city_name","customer_cnpj_cpf","customer_email","customer_neighborhood","customer_person_name","customer_person_type","customer_phone_number","customer_state","customer_zipcode","notification_url","id","paid_at","status","shorten_url","send_email_on_creation","created_via_api","paid_amount"]) }
42
+ end
43
+ context 'invalid parameters' do
44
+ context 'empty bank_billet' do
45
+ subject {
46
+ VCR.use_cassette('resources/bank_billet/create/invalid_root') do
47
+ BoletoSimples::BankBillet.create({})
48
+ end
49
+ }
50
+ it { expect(subject.response_errors).to eq({:bank_billet=>["não pode ficar em branco"]}) }
51
+ end
52
+ context 'invalid params' do
53
+ subject {
54
+ VCR.use_cassette('resources/bank_billet/create/invalid_params') do
55
+ BoletoSimples::BankBillet.create({amount: 9.1})
56
+ end
57
+ }
58
+ it { expect(subject.response_errors).to eq({:expire_at=>["não pode ficar em branco", "não é uma data válida"], :customer_person_name=>["não pode ficar em branco"], :customer_cnpj_cpf=>["não pode ficar em branco"], :description=>["não pode ficar em branco"], :customer_zipcode=>["não pode ficar em branco"]}) }
59
+ end
60
+ end
61
+ end
62
+ describe 'find', vcr: { cassette_name: 'resources/bank_billet/find'} do
63
+ subject { BoletoSimples::BankBillet.find(@bank_billet.id) }
64
+ it { expect(subject).to be_a_kind_of(BoletoSimples::BankBillet) }
65
+ end
66
+ describe 'cancel', vcr: { cassette_name: 'resources/bank_billet/cancel'} do
67
+ subject { BoletoSimples::BankBillet.find(@bank_billet.id).cancel }
68
+ it { expect(subject).to be_a_kind_of(BoletoSimples::BankBillet) }
69
+ end
70
+ describe 'all', vcr: { cassette_name: 'resources/bank_billet/all'} do
71
+ subject { BoletoSimples::BankBillet.all }
72
+ it { expect(subject.first).to be_a_kind_of(BoletoSimples::BankBillet) }
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+
5
+ # Before running this spec again, you need to set environment variable BOLETOSIMPLES_ACCESS_TOKEN
6
+ RSpec.describe BoletoSimples::Customer do
7
+ before {
8
+ BoletoSimples.configure do |c|
9
+ c.application_id = nil
10
+ c.application_secret = nil
11
+ end
12
+ }
13
+ describe 'methods' do
14
+ before {
15
+ VCR.use_cassette('resources/customer/create/valid') do
16
+ @customer = BoletoSimples::Customer.create({
17
+ person_name: "Maria José",
18
+ cnpj_cpf: "811.536.151-85",
19
+ email: "cliente@bom.com",
20
+ address: "Rua quinhentos",
21
+ city_name: "Rio de Janeiro",
22
+ state: "RJ",
23
+ neighborhood: "bairro",
24
+ zipcode: "12312-123",
25
+ address_number: "111",
26
+ address_complement: "Sala 4",
27
+ phone_number: "2112123434"
28
+ })
29
+ end
30
+ }
31
+ describe 'create' do
32
+ context 'valid parameters' do
33
+ subject { @customer }
34
+ it { expect(subject).to be_a_kind_of(BoletoSimples::Customer) }
35
+ it { expect(subject.response_errors).to eq({}) }
36
+ it { expect(subject.attributes.keys).to match_array(["person_name","cnpj_cpf","email","address","city_name","state","neighborhood","zipcode","address_number","address_complement","phone_number","mobile_number","person_type","mobile_local_code","created_via_api","id"]) }
37
+ end
38
+ context 'invalid parameters' do
39
+ context 'empty bank_billet' do
40
+ subject {
41
+ VCR.use_cassette('resources/customer/create/invalid_root') do
42
+ BoletoSimples::Customer.create({})
43
+ end
44
+ }
45
+ it { expect(subject.response_errors).to eq({:customer=>["não pode ficar em branco"]}) }
46
+ end
47
+ context 'invalid params' do
48
+ subject {
49
+ VCR.use_cassette('resources/customer/create/invalid_params') do
50
+ BoletoSimples::Customer.create({person_name: ''})
51
+ end
52
+ }
53
+ it { expect(subject.response_errors).to eq({:person_name=>["não pode ficar em branco"], :cnpj_cpf=>["não pode ficar em branco"], :zipcode=>["não pode ficar em branco"]}) }
54
+ end
55
+ end
56
+ end
57
+ describe 'find', vcr: { cassette_name: 'resources/customer/find'} do
58
+ subject { BoletoSimples::Customer.find(@customer.id) }
59
+ it { expect(subject).to be_a_kind_of(BoletoSimples::Customer) }
60
+ end
61
+ describe 'all', vcr: { cassette_name: 'resources/customer/all'} do
62
+ subject { BoletoSimples::Customer.all }
63
+ it { expect(subject.first).to be_a_kind_of(BoletoSimples::Customer) }
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+
5
+ # Before running this spec again, you need to set environment variable BOLETOSIPLES_CLIENT_CREDENTIALS_TOKEN
6
+ RSpec.describe BoletoSimples::Partner::User do
7
+ before {
8
+ BoletoSimples.configure do |c|
9
+ c.access_token = ENV['BOLETOSIMPLES_CLIENT_CREDENTIALS_TOKEN']
10
+ end
11
+ }
12
+ # ATENÇÃO: Após rodar este teste, edite o vcr_cassette e remova o token do login_url e substitua o application_access_token para xxx
13
+ describe 'create', vcr: { cassette_name: 'resources/partner/user/create'} do
14
+ subject { BoletoSimples::Partner::User.create(email: 'user2@example.com') }
15
+ it { expect(subject.id).not_to be_nil }
16
+ it { expect(subject.response_errors).to eq({}) }
17
+ it { expect(subject.attributes.keys).to eq(["email", "id", "account_type", "sex", "cpf", "address_street_name", "address_state", "address_neighborhood", "address_postal_code", "address_number", "address_complement", "phone_number", "withdrawal_period", "notification_url", "first_name", "middle_name", "last_name", "date_of_birth", "business_category", "business_subcategory", "business_website", "business_name", "business_legal_name", "business_type", "business_cnpj", "address_city_name", "full_name", "login_url", "mother_name", "father_name", "application_access_token"]) }
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+
5
+ # Before running this spec again, you need to set environment variable BOLETOSIMPLES_ACCESS_TOKEN
6
+ RSpec.describe BoletoSimples::Transaction do
7
+ before {
8
+ BoletoSimples.configure do |c|
9
+ c.application_id = nil
10
+ c.application_secret = nil
11
+ end
12
+ }
13
+ describe 'all', vcr: { cassette_name: 'resources/transaction/all'} do
14
+ subject { BoletoSimples::Transaction.all }
15
+ it { expect(subject.first).to be_a_kind_of(BoletoSimples::Transaction) }
16
+ end
17
+ end
@@ -0,0 +1,64 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://sandbox.boletosimples.com.br/api/v1/oauth2/token
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"grant_type":"client_credentials","client_id":"app-id","client_secret":"app-secret"}'
9
+ headers:
10
+ User-Agent:
11
+ - BoletoSimples Ruby Client v0.1.0 (contato@boletosimples.com.br)
12
+ Content-Type:
13
+ - application/json
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 401
21
+ message: Unauthorized
22
+ headers:
23
+ Server:
24
+ - Cowboy
25
+ Connection:
26
+ - keep-alive
27
+ Strict-Transport-Security:
28
+ - max-age=2592000
29
+ Cache-Control:
30
+ - no-store
31
+ Pragma:
32
+ - no-cache
33
+ Content-Type:
34
+ - application/json; charset=utf-8
35
+ Www-Authenticate:
36
+ - !binary |-
37
+ QmVhcmVyIHJlYWxtPSJCb2xldG9TaW1wbGVzIiwgZXJyb3I9ImludmFsaWRf
38
+ Y2xpZW50IiwgZXJyb3JfZGVzY3JpcHRpb249IkF1dGVudGljYcOnw6NvIGRv
39
+ IGNsaWVudGUgZmFsaG91IGRldmlkbyBow6EgdW0gY2xpZW50ZSBkZXNjb25o
40
+ ZWNpZG8sIG5lbmh1bSBjbGllbnRlIGRlIGF1dGVudGljYcOnw6NvIGluY2x1
41
+ c28sIG91IG3DqXRvZG8gZGUgYXV0ZW50aWNhw6fDo28gbsOjbyBzdXBvcnRh
42
+ ZG8uIg==
43
+ X-Request-Id:
44
+ - c694e3a4-3021-40b6-94f4-b8e8d8bac941
45
+ X-Runtime:
46
+ - '0.014012'
47
+ Date:
48
+ - Sun, 08 Mar 2015 19:58:22 GMT
49
+ X-Rack-Cache:
50
+ - invalidate, pass
51
+ Vary:
52
+ - Accept-Encoding
53
+ Transfer-Encoding:
54
+ - chunked
55
+ Via:
56
+ - 1.1 vegur
57
+ body:
58
+ encoding: UTF-8
59
+ string: '{"error":"invalid_client","error_description":"Autenticação do cliente
60
+ falhou devido há um cliente desconhecido, nenhum cliente de autenticação incluso,
61
+ ou método de autenticação não suportado."}'
62
+ http_version:
63
+ recorded_at: Sun, 08 Mar 2015 19:58:21 GMT
64
+ recorded_with: VCR 2.9.3