Esempio n. 1
0
def validate_credit_card(ch, method, properties, data):
    parsed_msg = json.loads(data)
    card_num = parsed_msg["creditCard"]

    if CreditCardChecker(card_num).valid():
        print_validation_message(True)
    else:
        print_validation_message(False)
Esempio n. 2
0
def validate_card_number(value):
    """
    Validate the card number using luhn algorithm
    :param value: str|int
    :return:
    """
    if CreditCardChecker(value).valid():
        return value
    raise ValueError(
        'Invalid card number {card_number}'.format(card_number=value))
Esempio n. 3
0
def card_data_is_valid(card):
    print(card)

    card_number = card.get("CreditCardNumber")
    if (card_number is None) or (not CreditCardChecker(
            str(card_number)).valid()):
        print("Invalid card number")
        return False

    card_holder = card.get("CardHolder")
    if card_holder is None:
        print("Invalid card holder")
        return False

    expiration_date = card.get("ExpirationDate")
    if expiration_date is None:
        print("Invalid expiration date")
        return False
    else:
        try:
            if datetime.strptime(expiration_date, "%m-%Y") < datetime.now():
                print("Expiration date is in the past")
                return False
        except ValueError:
            print("Wrong expiration date format")
            return False

    security_code = card.get("SecurityCode")
    if (not security_code is None) and len(security_code) != 3:
        print("Invalid security code")
        return False

    amount = card.get("Amount")
    if amount is None:
        print("Invalid amount")
        return False
    else:
        try:
            if float(amount) < 0:
                print("Amount is negative")
                return False
        except ValueError:
            print("Amount could not be converted to a number")
            return False

    print("Valid credit card info")
    return True
Esempio n. 4
0
 def test_is_valid_can_be_called_repeatedly(self):
     number = CreditCardChecker("055 444 285")
     self.assertIs(number.valid(), True)
     self.assertIs(number.valid(), True)
Esempio n. 5
0
 def test_input_digit_9_is_correctly_converted_to_output_digit_9(self):
     self.assertIs(CreditCardChecker("091").valid(), True)
Esempio n. 6
0
 def test_using_ascii_value_for_doubled_non_digit_isn_t_allowed(self):
     self.assertIs(CreditCardChecker(":9").valid(), False)
Esempio n. 7
0
 def test_more_than_a_single_zero_is_valid(self):
     self.assertIs(CreditCardChecker("0000 0").valid(), True)
Esempio n. 8
0
 def test_single_digit_strings_can_not_be_valid(self):
     self.assertIs(CreditCardChecker("1").valid(), False)
Esempio n. 9
0
 def test_a_simple_valid_sin_that_becomes_invalid_if_reversed(self):
     self.assertIs(CreditCardChecker("59").valid(), True)
Esempio n. 10
0
 def test_valid_strings_with_symbols_included_become_invalid(self):
     self.assertIs(CreditCardChecker("055# 444$ 285").valid(), False)
Esempio n. 11
0
def valid_card(cardString):
    return CreditCardChecker(cardString).valid()
Esempio n. 12
0
 def test_valid_strings_with_a_non_digit_added_at_the_end_become_invalid(
         self):
     self.assertIs(CreditCardChecker("059a").valid(), False)
Esempio n. 13
0
 def test_invalid_long_number_with_an_even_remainder(self):
     self.assertIs(
         CreditCardChecker("1 2345 6789 1234 5678 9012").valid(), False)
Esempio n. 14
0
 def test_valid_number_with_an_even_number_of_digits(self):
     self.assertIs(CreditCardChecker("095 245 88").valid(), True)
Esempio n. 15
0
 def test_invalid_credit_card(self):
     self.assertIs(CreditCardChecker("8273 1232 7352 0569").valid(), False)
Esempio n. 16
0
 def test_invalid_canadian_sin(self):
     self.assertIs(CreditCardChecker("055 444 286").valid(), False)
Esempio n. 17
0
 def test_a_valid_canadian_sin(self):
     self.assertIs(CreditCardChecker("055 444 285").valid(), True)
Esempio n. 18
0
 def test_a_single_zero_is_invalid(self):
     self.assertIs(CreditCardChecker("0").valid(), False)
Esempio n. 19
0
 def test_valid_strings_with_punctuation_included_become_invalid(self):
     self.assertIs(CreditCardChecker("055-444-285").valid(), False)
Esempio n. 20
0
 def test_valid_number_with_an_odd_number_of_spaces(self):
     self.assertIs(CreditCardChecker("234 567 891 234").valid(), True)
Esempio n. 21
0
 def test_a_simple_valid_sin_that_remains_valid_if_reversed(self):
     self.assertIs(CreditCardChecker("059").valid(), True)