mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-10-04 00:00:47 -04:00
* Rename the `Update` operation to `Save` * Add the `update` class method to all saveable resources * Add tests for update method * Add tests for plans, invoice items, and application fees
294 lines
8.7 KiB
Ruby
294 lines
8.7 KiB
Ruby
require File.expand_path('../../test_helper', __FILE__)
|
|
|
|
module Stripe
|
|
class AccountTest < Test::Unit::TestCase
|
|
should "be retrievable" do
|
|
resp = make_account({
|
|
:charges_enabled => false,
|
|
:details_submitted => false,
|
|
:email => "test+bindings@stripe.com",
|
|
})
|
|
@mock.expects(:get).
|
|
once.
|
|
with('https://api.stripe.com/v1/account', nil, nil).
|
|
returns(make_response(resp))
|
|
a = Stripe::Account.retrieve
|
|
assert_equal "test+bindings@stripe.com", a.email
|
|
assert !a.charges_enabled
|
|
assert !a.details_submitted
|
|
end
|
|
|
|
should "be retrievable via plural endpoint" do
|
|
resp = make_account({
|
|
:charges_enabled => false,
|
|
:details_submitted => false,
|
|
:email => "test+bindings@stripe.com",
|
|
})
|
|
@mock.expects(:get).
|
|
once.
|
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, nil).
|
|
returns(make_response(resp))
|
|
a = Stripe::Account.retrieve('acct_foo')
|
|
assert_equal "test+bindings@stripe.com", a.email
|
|
assert !a.charges_enabled
|
|
assert !a.details_submitted
|
|
end
|
|
|
|
should "be retrievable using an API key as the only argument" do
|
|
account = mock
|
|
Stripe::Account.expects(:new).once.with(nil, {:api_key => 'sk_foobar'}).returns(account)
|
|
account.expects(:refresh).once
|
|
Stripe::Account.retrieve('sk_foobar')
|
|
end
|
|
|
|
should "allow access to keys by method" do
|
|
account = Stripe::Account.construct_from(make_account({
|
|
:keys => {
|
|
:publishable => 'publishable-key',
|
|
:secret => 'secret-key',
|
|
}
|
|
}))
|
|
assert_equal 'publishable-key', account.keys.publishable
|
|
assert_equal 'secret-key', account.keys.secret
|
|
end
|
|
|
|
should "be rejectable" do
|
|
account_data = {:id => 'acct_foo'}
|
|
@mock.expects(:get).
|
|
once.
|
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, nil).
|
|
returns(make_response(account_data))
|
|
|
|
@mock.expects(:post).
|
|
once.
|
|
with("https://api.stripe.com/v1/accounts/acct_foo/reject", nil, 'reason=fraud').
|
|
returns(make_response(account_data))
|
|
|
|
account = Stripe::Account.retrieve('acct_foo')
|
|
account.reject(:reason => 'fraud')
|
|
end
|
|
|
|
should "be saveable" do
|
|
resp = {
|
|
:id => 'acct_foo',
|
|
:legal_entity => {
|
|
:address => {
|
|
:line1 => '1 Two Three'
|
|
}
|
|
}
|
|
}
|
|
@mock.expects(:get).
|
|
once.
|
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, nil).
|
|
returns(make_response(resp))
|
|
|
|
@mock.expects(:post).
|
|
once.
|
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, 'legal_entity[address][line1]=2+Three+Four&legal_entity[first_name]=Bob').
|
|
returns(make_response(resp))
|
|
|
|
a = Stripe::Account.retrieve('acct_foo')
|
|
a.legal_entity.first_name = 'Bob'
|
|
a.legal_entity.address.line1 = '2 Three Four'
|
|
a.save
|
|
end
|
|
|
|
should "be updatable" do
|
|
resp = {
|
|
:id => 'acct_foo',
|
|
:legal_entity => {
|
|
:first_name => 'Bob',
|
|
:address => {
|
|
:line1 => '2 Three Four'
|
|
}
|
|
}
|
|
}
|
|
@mock.expects(:post).
|
|
once.
|
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, 'legal_entity[address][line1]=2+Three+Four&legal_entity[first_name]=Bob').
|
|
returns(make_response(resp))
|
|
|
|
a = Stripe::Account.update('acct_foo', :legal_entity => {
|
|
:first_name => 'Bob',
|
|
:address => {
|
|
:line1 => '2 Three Four'
|
|
}
|
|
})
|
|
assert_equal('Bob', a.legal_entity.first_name)
|
|
assert_equal('2 Three Four', a.legal_entity.address.line1)
|
|
end
|
|
|
|
should 'disallow direct overrides of legal_entity' do
|
|
account = Stripe::Account.construct_from(make_account({
|
|
:keys => {
|
|
:publishable => 'publishable-key',
|
|
:secret => 'secret-key',
|
|
},
|
|
:legal_entity => {
|
|
:first_name => 'Bling'
|
|
}
|
|
}))
|
|
|
|
assert_raise NoMethodError do
|
|
account.legal_entity = {:first_name => 'Blah'}
|
|
end
|
|
|
|
account.legal_entity.first_name = 'Blah'
|
|
end
|
|
|
|
should "be able to deauthorize an account" do
|
|
resp = {:id => 'acct_1234', :email => "test+bindings@stripe.com", :charge_enabled => false, :details_submitted => false}
|
|
@mock.expects(:get).once.returns(make_response(resp))
|
|
a = Stripe::Account.retrieve
|
|
|
|
|
|
@mock.expects(:post).once.with do |url, api_key, params|
|
|
url == "#{Stripe.connect_base}/oauth/deauthorize" && api_key.nil? && CGI.parse(params) == { 'client_id' => [ 'ca_1234' ], 'stripe_user_id' => [ a.id ]}
|
|
end.returns(make_response({ 'stripe_user_id' => a.id }))
|
|
a.deauthorize('ca_1234', 'sk_test_1234')
|
|
end
|
|
|
|
should "reject nil api keys" do
|
|
assert_raise TypeError do
|
|
Stripe::Account.retrieve(nil)
|
|
end
|
|
assert_raise TypeError do
|
|
Stripe::Account.retrieve(:api_key => nil)
|
|
end
|
|
end
|
|
|
|
should "be able to create a bank account" do
|
|
resp = {
|
|
:id => 'acct_1234',
|
|
:external_accounts => {
|
|
:object => "list",
|
|
:resource_url => "/v1/accounts/acct_1234/external_accounts",
|
|
:data => [],
|
|
}
|
|
}
|
|
@mock.expects(:get).once.returns(make_response(resp))
|
|
a = Stripe::Account.retrieve
|
|
|
|
@mock.expects(:post).
|
|
once.
|
|
with('https://api.stripe.com/v1/accounts/acct_1234/external_accounts', nil, 'external_account=btok_1234').
|
|
returns(make_response(resp))
|
|
a.external_accounts.create({:external_account => 'btok_1234'})
|
|
end
|
|
|
|
should "be able to retrieve a bank account" do
|
|
resp = {
|
|
:id => 'acct_1234',
|
|
:external_accounts => {
|
|
:object => "list",
|
|
:resource_url => "/v1/accounts/acct_1234/external_accounts",
|
|
:data => [{
|
|
:id => "ba_1234",
|
|
:object => "bank_account",
|
|
}],
|
|
}
|
|
}
|
|
@mock.expects(:get).once.returns(make_response(resp))
|
|
a = Stripe::Account.retrieve
|
|
assert_equal(BankAccount, a.external_accounts.data[0].class)
|
|
end
|
|
|
|
should "#serialize_params an a new additional_owners" do
|
|
obj = Stripe::Util.convert_to_stripe_object({
|
|
:object => "account",
|
|
:legal_entity => Stripe::StripeObject.construct_from({
|
|
}),
|
|
}, {})
|
|
obj.legal_entity.additional_owners = [
|
|
{ :first_name => "Joe" },
|
|
{ :first_name => "Jane" },
|
|
]
|
|
|
|
expected = {
|
|
:legal_entity => {
|
|
:additional_owners => {
|
|
"0" => { :first_name => "Joe" },
|
|
"1" => { :first_name => "Jane" },
|
|
}
|
|
}
|
|
}
|
|
assert_equal(expected, obj.serialize_params)
|
|
end
|
|
|
|
should "#serialize_params on an partially changed additional_owners" do
|
|
obj = Stripe::Util.convert_to_stripe_object({
|
|
:object => "account",
|
|
:legal_entity => {
|
|
:additional_owners => [
|
|
Stripe::StripeObject.construct_from({
|
|
:first_name => "Joe"
|
|
}),
|
|
Stripe::StripeObject.construct_from({
|
|
:first_name => "Jane"
|
|
}),
|
|
]
|
|
}
|
|
}, {})
|
|
obj.legal_entity.additional_owners[1].first_name = "Stripe"
|
|
|
|
expected = {
|
|
:legal_entity => {
|
|
:additional_owners => {
|
|
"1" => { :first_name => "Stripe" }
|
|
}
|
|
}
|
|
}
|
|
assert_equal(expected, obj.serialize_params)
|
|
end
|
|
|
|
should "#serialize_params on an unchanged additional_owners" do
|
|
obj = Stripe::Util.convert_to_stripe_object({
|
|
:object => "account",
|
|
:legal_entity => {
|
|
:additional_owners => [
|
|
Stripe::StripeObject.construct_from({
|
|
:first_name => "Joe"
|
|
}),
|
|
Stripe::StripeObject.construct_from({
|
|
:first_name => "Jane"
|
|
}),
|
|
]
|
|
}
|
|
}, {})
|
|
|
|
expected = {
|
|
:legal_entity => {
|
|
:additional_owners => {}
|
|
}
|
|
}
|
|
assert_equal(expected, obj.serialize_params)
|
|
end
|
|
|
|
# Note that the empty string that we send for this one has a special
|
|
# meaning for the server, which interprets it as an array unset.
|
|
should "#serialize_params on an unset additional_owners" do
|
|
obj = Stripe::Util.convert_to_stripe_object({
|
|
:object => "account",
|
|
:legal_entity => {
|
|
:additional_owners => [
|
|
Stripe::StripeObject.construct_from({
|
|
:first_name => "Joe"
|
|
}),
|
|
Stripe::StripeObject.construct_from({
|
|
:first_name => "Jane"
|
|
}),
|
|
]
|
|
}
|
|
}, {})
|
|
obj.legal_entity.additional_owners = nil
|
|
|
|
expected = {
|
|
:legal_entity => {
|
|
:additional_owners => ""
|
|
}
|
|
}
|
|
assert_equal(expected, obj.serialize_params)
|
|
end
|
|
end
|
|
end
|