Skip to content

Commit

Permalink
Merge pull request #3 from chargify/pass-cvv-on-card-update
Browse files Browse the repository at this point in the history
Pass cvv on card update
  • Loading branch information
shayfrendt committed Jun 15, 2012
2 parents 7ea6cdf + 0836d0c commit 9a0b738
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/active_merchant/billing/gateways/braintree_blue.rb
Expand Up @@ -105,6 +105,7 @@ def update(vault_id, creditcard, options = {})
credit_card_params = merge_credit_card_options({
:credit_card => {
:number => creditcard.number,
:cvv => creditcard.verification_value,
:expiration_month => creditcard.month.to_s.rjust(2, "0"),
:expiration_year => creditcard.year.to_s
}
Expand Down
30 changes: 30 additions & 0 deletions test/unit/gateways/braintree_blue_test.rb
Expand Up @@ -150,6 +150,36 @@ def test_store_with_billing_address_options
@gateway.store(credit_card("41111111111111111111"), :billing_address => billing_address)
end

def test_update_with_cvv
stored_credit_card = mock(:token => "token", :default? => true)
customer = mock(:credit_cards => [stored_credit_card], :id => '123')
Braintree::Customer.stubs(:find).with('vault_id').returns(customer)
BraintreeBlueGateway.any_instance.stubs(:customer_hash)

result = Braintree::SuccessfulResult.new(:customer => customer)
Braintree::Customer.expects(:update).with do |vault, params|
assert_equal "567", params[:credit_card][:cvv]
[vault, params]
end.returns(result)

@gateway.update('vault_id', credit_card("41111111111111111111", :verification_value => "567"))
end

def test_update_with_verify_card_true
stored_credit_card = mock(:token => "token", :default? => true)
customer = mock(:credit_cards => [stored_credit_card], :id => '123')
Braintree::Customer.stubs(:find).with('vault_id').returns(customer)
BraintreeBlueGateway.any_instance.stubs(:customer_hash)

result = Braintree::SuccessfulResult.new(:customer => customer)
Braintree::Customer.expects(:update).with do |vault, params|
assert_equal true, params[:credit_card][:options][:verify_card]
[vault, params]
end.returns(result)

@gateway.update('vault_id', credit_card("41111111111111111111"), :verify_card => true)
end

def test_merge_credit_card_options_ignores_bad_option
params = {:first_name => 'John', :credit_card => {:cvv => '123'}}
options = {:verify_card => true, :bogus => 'ignore me'}
Expand Down

0 comments on commit 9a0b738

Please sign in to comment.