moip2 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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +4 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Guardfile +9 -0
- data/LICENSE.txt +22 -0
- data/README.md +129 -0
- data/Rakefile +1 -0
- data/lib/moip2/api.rb +24 -0
- data/lib/moip2/auth/basic.rb +19 -0
- data/lib/moip2/auth/oauth.rb +18 -0
- data/lib/moip2/client.rb +107 -0
- data/lib/moip2/customer_api.rb +24 -0
- data/lib/moip2/exceptions/invalid_enviroment_error.rb +6 -0
- data/lib/moip2/invoice_api.rb +32 -0
- data/lib/moip2/keys_api.rb +17 -0
- data/lib/moip2/multi_order_api.rb +23 -0
- data/lib/moip2/multi_payment_api.rb +17 -0
- data/lib/moip2/order_api.rb +25 -0
- data/lib/moip2/payment_api.rb +15 -0
- data/lib/moip2/resource/customer.rb +16 -0
- data/lib/moip2/resource/invoice.rb +14 -0
- data/lib/moip2/resource/keys.rb +14 -0
- data/lib/moip2/resource/multi_order.rb +25 -0
- data/lib/moip2/resource/multi_payment.rb +11 -0
- data/lib/moip2/resource/order.rb +25 -0
- data/lib/moip2/resource/payment.rb +13 -0
- data/lib/moip2/response.rb +20 -0
- data/lib/moip2/version.rb +3 -0
- data/lib/moip2.rb +74 -0
- data/moip2.gemspec +30 -0
- data/spec/moip2/api_spec.rb +25 -0
- data/spec/moip2/auth/basic_spec.rb +9 -0
- data/spec/moip2/auth/oauth_spec.rb +9 -0
- data/spec/moip2/client_spec.rb +133 -0
- data/spec/moip2/customer_api_spec.rb +152 -0
- data/spec/moip2/invoice_spec.rb +95 -0
- data/spec/moip2/keys_spec.rb +19 -0
- data/spec/moip2/multi_order_api_spec.rb +198 -0
- data/spec/moip2/order_api_spec.rb +138 -0
- data/spec/moip2/payment_api_spec.rb +43 -0
- data/spec/moip2/resource/order_spec.rb +47 -0
- data/spec/moip2/response_spec.rb +51 -0
- data/spec/moip2_spec.rb +50 -0
- data/spec/spec_helper.rb +113 -0
- data/vcr_cassettes/create_customer.yml +43 -0
- data/vcr_cassettes/create_customer_with_funding_instrument.yml +45 -0
- data/vcr_cassettes/create_invoice.yml +42 -0
- data/vcr_cassettes/create_mulit_order_success.yml +142 -0
- data/vcr_cassettes/create_multi_order_fail.yml +43 -0
- data/vcr_cassettes/create_order_fail.yml +43 -0
- data/vcr_cassettes/create_order_success.yml +47 -0
- data/vcr_cassettes/create_payment_success.yml +39 -0
- data/vcr_cassettes/get_customer.yml +42 -0
- data/vcr_cassettes/get_invoice.yml +41 -0
- data/vcr_cassettes/get_keys.yml +42 -0
- data/vcr_cassettes/list_invoices.yml +43 -0
- data/vcr_cassettes/show_multi_order.yml +132 -0
- data/vcr_cassettes/show_multi_order_not_found.yml +40 -0
- data/vcr_cassettes/show_order.yml +43 -0
- data/vcr_cassettes/show_order_not_found.yml +38 -0
- data/vcr_cassettes/update_invoice.yml +41 -0
- data/wercker.yml +48 -0
- metadata +238 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
module Moip2
|
2
|
+
|
3
|
+
class Response < SimpleDelegator
|
4
|
+
|
5
|
+
def initialize(resp, json)
|
6
|
+
super(RecursiveOpenStruct.new(json, :recurse_over_arrays => true))
|
7
|
+
@resp = resp
|
8
|
+
end
|
9
|
+
|
10
|
+
def success?
|
11
|
+
(200..299).include? @resp.code.to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def client_error?
|
15
|
+
(400..499).include? @resp.code.to_i
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/lib/moip2.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
require "httparty"
|
2
|
+
require "delegate"
|
3
|
+
require "recursive-open-struct"
|
4
|
+
|
5
|
+
require "moip2/version"
|
6
|
+
|
7
|
+
require "moip2/auth/basic"
|
8
|
+
require "moip2/auth/oauth"
|
9
|
+
|
10
|
+
require "moip2/resource/order"
|
11
|
+
require "moip2/resource/multi_order"
|
12
|
+
require "moip2/resource/payment"
|
13
|
+
require "moip2/resource/multi_payment"
|
14
|
+
require "moip2/resource/customer"
|
15
|
+
require "moip2/resource/invoice"
|
16
|
+
require "moip2/resource/keys"
|
17
|
+
|
18
|
+
require "moip2/response"
|
19
|
+
require "moip2/client"
|
20
|
+
require "moip2/order_api"
|
21
|
+
require "moip2/multi_order_api"
|
22
|
+
require "moip2/payment_api"
|
23
|
+
require "moip2/multi_payment_api"
|
24
|
+
require "moip2/customer_api"
|
25
|
+
require "moip2/invoice_api"
|
26
|
+
require "moip2/api"
|
27
|
+
|
28
|
+
require "moip2/keys_api"
|
29
|
+
|
30
|
+
require "moip2/exceptions/invalid_enviroment_error"
|
31
|
+
|
32
|
+
module Moip2
|
33
|
+
|
34
|
+
class << self
|
35
|
+
|
36
|
+
VALID_ENVS = %i(sandbox production)
|
37
|
+
|
38
|
+
def env=(env)
|
39
|
+
raise InvalidEnviromentError unless VALID_ENVS.include?(env.to_sym)
|
40
|
+
@env = env
|
41
|
+
end
|
42
|
+
|
43
|
+
def env
|
44
|
+
@env ||= :sandbox
|
45
|
+
end
|
46
|
+
|
47
|
+
def auth=(credentials)
|
48
|
+
@credentials = credentials
|
49
|
+
end
|
50
|
+
|
51
|
+
def auth
|
52
|
+
@credentials
|
53
|
+
end
|
54
|
+
|
55
|
+
def opts=(opts = {})
|
56
|
+
@opts = opts
|
57
|
+
end
|
58
|
+
|
59
|
+
def opts
|
60
|
+
@opts ||= {}
|
61
|
+
end
|
62
|
+
|
63
|
+
def new
|
64
|
+
raise "Auth is not set" unless auth
|
65
|
+
|
66
|
+
Api.new Client.new(env, auth)
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
class NotFoundError < StandardError
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
data/moip2.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'moip2/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "moip2"
|
8
|
+
spec.version = Moip2::VERSION
|
9
|
+
spec.authors = ["Rodrigo Saito", "Danillo Souza", "Caio Gama"]
|
10
|
+
spec.email = ["rodrigo.saito@moip.com.br", "danillo.souza@moip.com.br", "caio.gama@moip.com.br"]
|
11
|
+
spec.summary = %q{Ruby client for moip v2 api}
|
12
|
+
spec.description = %q{Ruby client for moip v2 api}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "httparty"
|
22
|
+
spec.add_dependency "recursive-open-struct"
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.5"
|
25
|
+
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0.0.beta2"
|
27
|
+
spec.add_development_dependency "vcr"
|
28
|
+
spec.add_development_dependency "webmock"
|
29
|
+
spec.add_development_dependency "guard-rspec"
|
30
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
describe Moip2::Api do
|
2
|
+
|
3
|
+
let(:auth) { Moip2::Auth::Basic.new('', '') }
|
4
|
+
let(:client) { Moip2::Client.new(:sandbox, auth) }
|
5
|
+
let(:api) { described_class.new client }
|
6
|
+
|
7
|
+
describe "#order" do
|
8
|
+
|
9
|
+
it "returns an OrderApi" do
|
10
|
+
expect(api.order).to be_a(Moip2::OrderApi)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#payment" do
|
16
|
+
it "returns a PaymentApi" do
|
17
|
+
expect(api.payment).to be_a(Moip2::PaymentApi)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#invoice" do
|
22
|
+
it { expect(api.invoice).to be_a Moip2::InvoiceApi }
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
describe Moip2::Auth::Basic do
|
2
|
+
|
3
|
+
let(:basic) { described_class.new('01010101010101010101010101010101', 'ABABABABABABABABABABABABABABABABABABABAB') }
|
4
|
+
|
5
|
+
it "builds authorization header" do
|
6
|
+
expect(basic.header).to eq "Basic MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE6QUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQg=="
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
describe Moip2::Auth::OAuth do
|
2
|
+
let(:oauth_with_text) { described_class.new "OAuth d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
3
|
+
let(:oauth_without_text) { described_class.new "d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
4
|
+
|
5
|
+
describe ".header" do
|
6
|
+
it { expect(oauth_with_text.header).to eq "OAuth d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
7
|
+
it { expect(oauth_without_text.header).to eq "OAuth d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
describe Moip2::Client do
|
2
|
+
|
3
|
+
let(:auth) do
|
4
|
+
Moip2::Auth::Basic.new("TOKEN", "SECRET")
|
5
|
+
end
|
6
|
+
|
7
|
+
let(:oauth) do
|
8
|
+
Moip2::Auth::OAuth.new "d63tz2xwyu0ewrembove4j5cbv2otpd"
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "initialize env with string" do
|
12
|
+
let(:client) do
|
13
|
+
described_class.new "sandbox", auth
|
14
|
+
end
|
15
|
+
|
16
|
+
it { expect(client.env).to eq :sandbox }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "initialize on sandbox with OAuth" do
|
20
|
+
|
21
|
+
let(:client) do
|
22
|
+
described_class.new :sandbox, auth
|
23
|
+
end
|
24
|
+
|
25
|
+
let(:client) { described_class.new :sandbox, oauth }
|
26
|
+
it { expect(client.uri).to eq "https://test.moip.com.br" }
|
27
|
+
it { expect(client.env).to eq :sandbox }
|
28
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "OAuth d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "initialize on production" do
|
33
|
+
let(:client) do
|
34
|
+
described_class.new :production, oauth
|
35
|
+
end
|
36
|
+
|
37
|
+
it { expect(client.uri).to eq "https://api.moip.com.br" }
|
38
|
+
it { expect(client.env).to eq :production }
|
39
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "OAuth d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "initialize on sandbox with base_uri and OAuth" do
|
43
|
+
|
44
|
+
before do
|
45
|
+
ENV['base_uri'] = "http://localhost:5000"
|
46
|
+
end
|
47
|
+
|
48
|
+
let(:client) do
|
49
|
+
described_class.new :sandbox, oauth
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
it { expect(client.uri).to eq "http://localhost:5000" }
|
54
|
+
it { expect(client.env).to eq :sandbox }
|
55
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "OAuth d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "initialize on production with base_uri and OAuth" do
|
60
|
+
|
61
|
+
before do
|
62
|
+
ENV['base_uri'] = "http://localhost:5000"
|
63
|
+
end
|
64
|
+
|
65
|
+
let(:client) do
|
66
|
+
described_class.new :production, oauth
|
67
|
+
end
|
68
|
+
|
69
|
+
it { expect(client.uri).to eq "http://localhost:5000" }
|
70
|
+
it { expect(client.env).to eq :production }
|
71
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "OAuth d63tz2xwyu0ewrembove4j5cbv2otpd" }
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "initialize on sandbox with base_uri" do
|
76
|
+
|
77
|
+
before do
|
78
|
+
ENV['base_uri'] = "http://localhost:5000"
|
79
|
+
end
|
80
|
+
|
81
|
+
let(:client) do
|
82
|
+
described_class.new :sandbox, auth
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
it { expect(client.uri).to eq "http://localhost:5000" }
|
87
|
+
it { expect(client.env).to eq :sandbox }
|
88
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "Basic VE9LRU46U0VDUkVU" }
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "initialize on production with base_uri" do
|
93
|
+
|
94
|
+
before do
|
95
|
+
ENV['base_uri'] = "http://localhost:5000"
|
96
|
+
end
|
97
|
+
|
98
|
+
let(:client) do
|
99
|
+
described_class.new :production, auth
|
100
|
+
end
|
101
|
+
|
102
|
+
it { expect(client.uri).to eq "http://localhost:5000" }
|
103
|
+
it { expect(client.env).to eq :production }
|
104
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "Basic VE9LRU46U0VDUkVU" }
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
describe "initialize on sandbox" do
|
109
|
+
|
110
|
+
before do
|
111
|
+
ENV['base_uri'] = nil
|
112
|
+
end
|
113
|
+
|
114
|
+
let(:client) do
|
115
|
+
described_class.new :sandbox, auth
|
116
|
+
end
|
117
|
+
|
118
|
+
it { expect(client.uri).to eq "https://test.moip.com.br" }
|
119
|
+
it { expect(client.env).to eq :sandbox }
|
120
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "Basic VE9LRU46U0VDUkVU" }
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "initialize on production" do
|
124
|
+
let(:client) do
|
125
|
+
described_class.new :production, auth
|
126
|
+
end
|
127
|
+
|
128
|
+
it { expect(client.uri).to eq "https://api.moip.com.br" }
|
129
|
+
it { expect(client.env).to eq :production }
|
130
|
+
it { expect(client.opts[:headers]["Authorization"]).to eq "Basic VE9LRU46U0VDUkVU" }
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
@@ -0,0 +1,152 @@
|
|
1
|
+
describe Moip2::CustomerApi do
|
2
|
+
|
3
|
+
let(:customer_api) { described_class.new(sandbox_client) }
|
4
|
+
|
5
|
+
describe "#show" do
|
6
|
+
|
7
|
+
let(:customer_external_id) { "CUS-B6LE6HLFFXKF" }
|
8
|
+
|
9
|
+
let(:customer) do
|
10
|
+
VCR.use_cassette("get_customer") do
|
11
|
+
customer_api.show(customer_external_id)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it { expect(customer.id).to eq customer_external_id }
|
16
|
+
it { expect(customer.own_id).to eq "your_customer_own_id" }
|
17
|
+
it { expect(customer.email).to eq "john.doe@mailinator.com" }
|
18
|
+
it { expect(customer.funding_instrument).to_not be_nil }
|
19
|
+
it { expect(customer.funding_instrument.credit_card.id).to eq "CRC-OQPJYLGZOY7P" }
|
20
|
+
it { expect(customer.funding_instrument.credit_card.brand).to eq "VISA" }
|
21
|
+
it { expect(customer.phone).to_not be_nil }
|
22
|
+
it { expect(customer.tax_document).to_not be_nil }
|
23
|
+
it { expect(customer.tax_document.type).to eq "CPF" }
|
24
|
+
it { expect(customer.shipping_address).to_not be_nil }
|
25
|
+
it { expect(customer.shipping_address.zip_code).to eq "01234000" }
|
26
|
+
it { expect(customer._links).to_not be_nil }
|
27
|
+
it { expect(customer._links.self.href).to eq "https://test.moip.com.br/v2/customers/CUS-B6LE6HLFFXKF" }
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#create with funding instrument" do
|
32
|
+
|
33
|
+
let(:customer_with_funding_instrument) do
|
34
|
+
{
|
35
|
+
ownId: "meu_id_de_cliente",
|
36
|
+
fullname: "Jose Silva",
|
37
|
+
email: "josedasilva@email.com",
|
38
|
+
phone: {
|
39
|
+
areaCode: "11",
|
40
|
+
number: "66778899"
|
41
|
+
},
|
42
|
+
birthDate: "1988-12-30",
|
43
|
+
taxDocument: {
|
44
|
+
type: "CPF",
|
45
|
+
number: "22222222222"
|
46
|
+
},
|
47
|
+
shippingAddress: {
|
48
|
+
street: "Avenida Faria Lima",
|
49
|
+
streetNumber: "2927",
|
50
|
+
complement: "8",
|
51
|
+
district: "Itaim",
|
52
|
+
city: "Sao Paulo",
|
53
|
+
state: "SP",
|
54
|
+
country: "BRA",
|
55
|
+
zipCode: "01234000"
|
56
|
+
},
|
57
|
+
fundingInstrument: {
|
58
|
+
method: "CREDIT_CARD",
|
59
|
+
creditCard: {
|
60
|
+
expirationMonth: 12,
|
61
|
+
expirationYear: 15,
|
62
|
+
number: "4073020000000002",
|
63
|
+
holder: {
|
64
|
+
fullname: "Jose Silva",
|
65
|
+
birthdate: "1988-12-30",
|
66
|
+
taxDocument: {
|
67
|
+
type: "CPF",
|
68
|
+
number: "22222222222"
|
69
|
+
},
|
70
|
+
phone: {
|
71
|
+
areaCode: "11",
|
72
|
+
number: "66778899"
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
}
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
let(:created_customer_with_funding_instrument) do
|
82
|
+
VCR.use_cassette("create_customer_with_funding_instrument") do
|
83
|
+
customer_api.create customer_with_funding_instrument
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it { expect(created_customer_with_funding_instrument.id).to eq "CUS-E5CO735TBXTI" }
|
88
|
+
it { expect(created_customer_with_funding_instrument.own_id).to eq "meu_id_de_cliente" }
|
89
|
+
it { expect(created_customer_with_funding_instrument.email).to eq "josedasilva@email.com" }
|
90
|
+
it { expect(created_customer_with_funding_instrument.funding_instrument).to_not be_nil }
|
91
|
+
it { expect(created_customer_with_funding_instrument.funding_instrument.credit_card.id).to eq "CRC-F5DR8SVINCUI" }
|
92
|
+
it { expect(created_customer_with_funding_instrument.funding_instrument.credit_card.brand).to eq "VISA" }
|
93
|
+
it { expect(created_customer_with_funding_instrument.phone).to_not be_nil }
|
94
|
+
it { expect(created_customer_with_funding_instrument.tax_document).to_not be_nil }
|
95
|
+
it { expect(created_customer_with_funding_instrument.tax_document.type).to eq "CPF" }
|
96
|
+
it { expect(created_customer_with_funding_instrument.shipping_address).to_not be_nil }
|
97
|
+
it { expect(created_customer_with_funding_instrument.shipping_address.zip_code).to eq "01234000" }
|
98
|
+
it { expect(created_customer_with_funding_instrument._links).to_not be_nil }
|
99
|
+
it { expect(created_customer_with_funding_instrument._links.self.href).to eq "https://test.moip.com.br/v2/customers/CUS-E5CO735TBXTI" }
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "#create without funding instrument" do
|
104
|
+
|
105
|
+
let(:customer) do
|
106
|
+
{
|
107
|
+
ownId: "meu_id_sandbox_1231234",
|
108
|
+
fullname: "Jose Silva",
|
109
|
+
email: "jose_silva0@email.com",
|
110
|
+
birthDate: "1988-12-30",
|
111
|
+
taxDocument: {
|
112
|
+
type: "CPF",
|
113
|
+
number: "22222222222"
|
114
|
+
},
|
115
|
+
phone: {
|
116
|
+
countryCode: "55",
|
117
|
+
areaCode: "11",
|
118
|
+
number: "66778899"
|
119
|
+
},
|
120
|
+
shippingAddress: {
|
121
|
+
city: "Sao Paulo",
|
122
|
+
complement: "8",
|
123
|
+
district: "Itaim",
|
124
|
+
street: "Avenida Faria Lima",
|
125
|
+
streetNumber: "2927",
|
126
|
+
zipCode: "01234000",
|
127
|
+
state: "SP",
|
128
|
+
country: "BRA"
|
129
|
+
}
|
130
|
+
}
|
131
|
+
end
|
132
|
+
|
133
|
+
let(:created_customer) do
|
134
|
+
VCR.use_cassette("create_customer") do
|
135
|
+
customer_api.create customer
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
it { expect(created_customer.id).to eq "CUS-4GESZSOAH7HX" }
|
140
|
+
it { expect(created_customer.own_id).to eq "meu_id_sandbox_1231234" }
|
141
|
+
it { expect(created_customer.email).to eq "jose_silva0@email.com" }
|
142
|
+
it { expect(created_customer.phone).to_not be_nil }
|
143
|
+
it { expect(created_customer.tax_document).to_not be_nil }
|
144
|
+
it { expect(created_customer.tax_document.type).to eq "CPF" }
|
145
|
+
it { expect(created_customer.shipping_address).to_not be_nil }
|
146
|
+
it { expect(created_customer.shipping_address.zip_code).to eq "01234000" }
|
147
|
+
it { expect(created_customer._links).to_not be_nil }
|
148
|
+
it { expect(created_customer._links.self.href).to eq "https://test.moip.com.br/v2/customers/CUS-4GESZSOAH7HX" }
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
describe Moip2::InvoiceApi do
|
2
|
+
|
3
|
+
let(:invoice_api) { described_class.new sandbox_oauth_client }
|
4
|
+
|
5
|
+
let(:invoice_external_id) do
|
6
|
+
"INV-4517A209DDA9"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#create" do
|
10
|
+
|
11
|
+
let(:invoice) do
|
12
|
+
{
|
13
|
+
amount: 13470,
|
14
|
+
email: "caio.gama@moip.com.br",
|
15
|
+
invoiceType: :subscription,
|
16
|
+
description: "Assinatura da aula de desenho"
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:created_invoice) do
|
21
|
+
VCR.use_cassette("create_invoice") do
|
22
|
+
invoice_api.create invoice
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it { expect(created_invoice.id).to_not be_nil }
|
27
|
+
it { expect(created_invoice.email).to eq "caio.gama@moip.com.br" }
|
28
|
+
it { expect(created_invoice.type).to eq "subscription" }
|
29
|
+
it { expect(created_invoice.description).to eq "Assinatura da aula de desenho" }
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#show" do
|
34
|
+
|
35
|
+
let(:invoice) do
|
36
|
+
VCR.use_cassette("get_invoice") do
|
37
|
+
invoice_api.show invoice_external_id
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it { expect(invoice.id).to eq "INV-4517A209DDA9" }
|
42
|
+
it { expect(invoice.email).to eq "caio.gama@moip.com.br" }
|
43
|
+
it { expect(invoice.type).to eq "subscription" }
|
44
|
+
it { expect(invoice.description).to eq "Assinatura da aula de desenho" }
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#update" do
|
49
|
+
let(:update_params) do
|
50
|
+
{
|
51
|
+
orderExternalId: "ORD-NLQ916TW81TN",
|
52
|
+
customerExternalId: "CUS-GF45QI98NST1"
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
let(:updated_invoice) do
|
57
|
+
VCR.use_cassette("update_invoice") do
|
58
|
+
invoice_api.update invoice_external_id, update_params
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
it { expect(updated_invoice.id).to eq "INV-4517A209DDA9" }
|
63
|
+
|
64
|
+
it { expect(updated_invoice.order_external_id).to eq "ORD-NLQ916TW81TN" }
|
65
|
+
it { expect(updated_invoice.customer_external_id).to eq "CUS-GF45QI98NST1" }
|
66
|
+
|
67
|
+
it { expect(updated_invoice.email).to eq "caio.gama@moip.com.br" }
|
68
|
+
it { expect(updated_invoice.type).to eq "subscription" }
|
69
|
+
it { expect(updated_invoice.description).to eq "Assinatura da aula de desenho" }
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "#list" do
|
74
|
+
let (:result) do
|
75
|
+
VCR.use_cassette("list_invoices") do
|
76
|
+
invoice_api.list begin_date, end_date
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "request with results" do
|
81
|
+
|
82
|
+
let(:begin_date) { '2015-01-01' }
|
83
|
+
let(:end_date) { '2015-03-31' }
|
84
|
+
|
85
|
+
it { expect(result).to_not be_nil }
|
86
|
+
it { expect(result.invoices.size).to eq 2 }
|
87
|
+
it { expect(result.invoices[0].id).to eq 'INV-635DC2BB9422' }
|
88
|
+
it { expect(result.invoices[0].account_id).to eq 'MPA-MAROTO000000' }
|
89
|
+
it { expect(result.invoices[1].id).to eq 'INV-635DC2BSHJ90' }
|
90
|
+
it { expect(result.invoices[1].account_id).to eq 'MPA-MAROTO000000' }
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
describe Moip2::KeysApi do
|
2
|
+
let(:keys_api) { described_class.new sandbox_oauth_client }
|
3
|
+
|
4
|
+
describe "#show" do
|
5
|
+
|
6
|
+
let(:keys) do
|
7
|
+
VCR.use_cassette("get_keys") do
|
8
|
+
keys_api.show
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'when shooting request' do
|
13
|
+
it { expect(keys).not_to be_nil }
|
14
|
+
it { expect(keys.keys.basic_auth.secret).to eq "ABABABABABABABABABABABABABABABABABABABAB" }
|
15
|
+
it { expect(keys.keys.basic_auth.token).to eq "01010101010101010101010101010101"}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|