Skip to content
This repository has been archived by the owner on Oct 16, 2020. It is now read-only.

Commit

Permalink
Return last digits that are less than four characters long
Browse files Browse the repository at this point in the history
git-svn-id: https://activemerchant.googlecode.com/svn/trunk/active_merchant@638 6513ea26-6c20-0410-8a68-89cd7235086d
  • Loading branch information
codyfauser committed Feb 8, 2008
1 parent 19afbe8 commit 446a774
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG
@@ -1,5 +1,6 @@
= ActiveMerchant CHANGELOG

* Return last_digits that are less than 4 characters long [cody]
* Fix Bug with Authorize.Net ARB Remote Test [patrick.t.joyce]
* Add support for forcing test mode on Secure Pay AU gateway [cody]
* Update Secure Pay Au to meet specs for MessageInfo elements [cody]
Expand Down
6 changes: 3 additions & 3 deletions lib/active_merchant/billing/credit_card_methods.rb
Expand Up @@ -84,12 +84,12 @@ def type?(number)
return nil
end

def last_digits(number)
number.to_s.slice(-4..-1) if number.to_s.length >= 4
def last_digits(number)
number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
end

def mask(number)
"XXXX-XXXX-XXXX-#{last_digits(number)}" if number.to_s.length >= 4
"XXXX-XXXX-XXXX-#{last_digits(number)}"
end

# Checks to see if the calculated type matches the specified type
Expand Down
11 changes: 8 additions & 3 deletions test/unit/credit_card_test.rb
Expand Up @@ -162,9 +162,9 @@ def test_should_display_number
assert_equal 'XXXX-XXXX-XXXX-1234', CreditCard.new(:number => '111222233331234').display_number
assert_equal 'XXXX-XXXX-XXXX-1234', CreditCard.new(:number => '1112223331234').display_number

assert_nil CreditCard.new(:number => nil).display_number
assert_nil CreditCard.new(:number => '').display_number
assert_nil CreditCard.new(:number => '123').display_number
assert_equal 'XXXX-XXXX-XXXX-', CreditCard.new(:number => nil).display_number
assert_equal 'XXXX-XXXX-XXXX-', CreditCard.new(:number => '').display_number
assert_equal 'XXXX-XXXX-XXXX-123', CreditCard.new(:number => '123').display_number
assert_equal 'XXXX-XXXX-XXXX-1234', CreditCard.new(:number => '1234').display_number
assert_equal 'XXXX-XXXX-XXXX-1234', CreditCard.new(:number => '01234').display_number
end
Expand Down Expand Up @@ -222,6 +222,11 @@ def test_should_return_last_four_digits_of_card_number
assert_equal "8580", ccn.last_digits
end

def test_bogus_last_digits
ccn = CreditCard.new(:number => "1")
assert_equal "1", ccn.last_digits
end

def test_should_be_true_when_credit_card_has_a_first_name
c = CreditCard.new
assert_false c.first_name?
Expand Down

0 comments on commit 446a774

Please sign in to comment.