You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

bankcard_tests.py 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import nose.tools
  2. from oscar.apps.payment import bankcards
  3. fixture_data = {
  4. bankcards.VISA: ('4111111111111111',),
  5. bankcards.MASTERCARD: ('5500000000000004',),
  6. bankcards.DISCOVER: ('6011000000000004',),
  7. bankcards.AMEX: ('340000000000009',),
  8. None: ('1000010000000007',) # Magic number
  9. }
  10. def compare(number, type):
  11. nose.tools.eq_(bankcards.bankcard_type(number), type)
  12. def test_bankcard_type_sniffing():
  13. for bankcard_type, numbers in fixture_data.items():
  14. for number in numbers:
  15. yield compare, number, bankcard_type
  16. valid_numbers = [
  17. '4111111111111111',
  18. '5500000000000004',
  19. '6011000000000004',
  20. '340000000000009']
  21. invalid_numbers = [
  22. '4111111111111110',
  23. '5500000000000009',
  24. '6011000000000000',
  25. '340000000000005']
  26. def is_valid(n):
  27. assert bankcards.luhn(n) is True
  28. def is_not_valid(n):
  29. assert bankcards.luhn(n) is False
  30. def test_luhn_check():
  31. for number in valid_numbers:
  32. yield is_valid, number
  33. for number in invalid_numbers:
  34. yield is_not_valid, number