def test__base_card_transaction__save_token__saves_to_model(user): """Confirm models are created as expected.""" count = models.HelcimToken.objects.all().count() base = gateway.BaseCardTransaction(save_token=True, django_user=user) base.response = { 'token': 'abcdefghijklmnopqrstuvw', 'token_f4l4': '11119999', 'customer_code': 'CST1000', } base.save_token_to_vault() assert count + 1 == models.HelcimToken.objects.all().count()
def test_determine_card_details_cc(): details = { 'cc_number': '1234567890123456', 'cc_expiry': '0125', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.validate_fields() transaction.determine_card_details() assert len(transaction.cleaned) == 2 assert transaction.cleaned['cc_number'] == details['cc_number'] assert transaction.cleaned['cc_expiry'] == details['cc_expiry']
def test_determine_card_details_mag_encrypted_priority(): details = { 'mag_enc': 'iscySW5ks7LeQQ8r4Tz7vb6el6QFpuQMbxGbh1==', 'mag_enc_serial_number': 'SERIAL1230129912', 'mag': '%B45**********SENSITIVE*DATA******************01?2', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.validate_fields() transaction.determine_card_details() assert len(transaction.cleaned) == 2 assert 'mag_enc' in transaction.cleaned
def test_save_token_missing_token_f4l4(): details = { 'token': 'abcdefghijklmnopqrstuvw', 'customer_code': 'CST1000', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, django_user=1, **details) transaction.response = details token_entry = transaction.save_token_to_vault() # Checks that all proper fields ended up getting passed to model assert token_entry is None
def test_save_token_saves_to_model_with_user(django_user_model): user = django_user_model.objects.create_user( username='******', password='******' ) count = models.HelcimToken.objects.all().count() base = gateway.BaseCardTransaction(save_token=True, django_user=user) base.response = { 'token': 'abcdefghijklmnopqrstuvw', 'token_f4l4': '11119999', 'customer_code': 'CST1000', } base.save_token_to_vault() assert count + 1 == models.HelcimToken.objects.all().count()
def test_determine_card_details_token_f4l4_missing_error(): details = { 'token': 'abcdefghijklmnopqrstuvwxyz', 'customer_code': 'CST1000', } try: transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.validate_fields() transaction.determine_card_details() except ValueError: assert True else: assert False
def test_determine_card_details_token_with_f4l4_skip(): details = { 'token': 'abcdefghijklmnopqrstuvw', 'customer_code': 'CST1000', 'token_f4l4_skip': True, } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.validate_fields() transaction.determine_card_details() assert len(transaction.cleaned) == 3 assert transaction.cleaned['token'] == details['token'] assert transaction.cleaned['customer_code'] == details['customer_code'] assert transaction.cleaned['token_f4l4_skip'] == 1
def test_determine_card_details_mag_encrypted(): details = { 'mag_enc': 'iscySW5ks7LeQQ8r4Tz7vb6el6QFpuQMbxGbh1==', 'mag_enc_serial_number': 'SERIAL1230129912', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.validate_fields() transaction.determine_card_details() assert len(transaction.cleaned) == 2 assert transaction.cleaned['mag_enc'] == details['mag_enc'] assert (transaction.cleaned['mag_enc_serial_number'] == details['mag_enc_serial_number'])
def test_determine_card_details_customer_priority(): details = { 'customer_code': 'CST1000', 'cc_number': '1234567890123456', 'cc_expiry': '0125', 'mag_enc': 'iscySW5ks7LeQQ8r4Tz7vb6el6QFpuQMbxGbh1==', 'mag_enc_serial_number': 'SERIAL1230129912', 'mag': '%B45**********SENSITIVE*DATA******************01?2', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.validate_fields() transaction.determine_card_details() assert len(transaction.cleaned) == 1 assert 'customer_code' in transaction.cleaned
def test_save_token_with_customer_code(): details = { 'token': 'abcdefghijklmnopqrstuvw', 'token_f4l4': '11119999', 'customer_code': 'CST1000', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.response = details token_entry = transaction.save_token_to_vault() # Checks that all proper fields ended up getting passed to model assert token_entry.data['token'] == 'abcdefghijklmnopqrstuvw' assert token_entry.data['token_f4l4'] == '11119999' assert token_entry.data['customer_code'] == 'CST1000' assert token_entry.data['django_user'] is None
def test_save_token_with_django_user_not_provided(): details = { 'token': 'abcdefghijklmnopqrstuvw', 'token_f4l4': '11119999', 'customer_code': 'CST1000', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.response = details try: transaction.save_token_to_vault() except helcim_exceptions.ProcessingError as error: assert str(error) == ( 'Unable to save token - user reference not provided') else: assert False
def test_save_token_missing_customer_code(): details = { 'token': 'abcdefghijklmnopqrstuvw', 'token_f4l4': '11119999', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.response = details transaction.redact_data() try: transaction.save_token_to_vault() except helcim_exceptions.ProcessingError as error: assert str(error) == ( 'Unable to save token - customer code not provided') else: assert False
def test__base_card_transaction__save_token__duplicate_without_associate(): """Confirms handling with duplicate token and no associated user.""" first_instance = models.HelcimToken.objects.create( token='abcdefghijklmnopqrstuvw', token_f4l4='11119999', customer_code='CST1000', django_user=None, ) count = models.HelcimToken.objects.all().count() base = gateway.BaseCardTransaction(save_token=True, django_user=None) base.response = { 'token': 'abcdefghijklmnopqrstuvw', 'token_f4l4': '11119999', 'customer_code': 'CST1000', } second_instance = base.save_token_to_vault() assert count == models.HelcimToken.objects.all().count() assert first_instance == second_instance
def test_determine_card_details_cc_with_details(): details = { 'cc_number': '1234567890123456', 'cc_expiry': '0125', 'cc_name': 'Test Person', 'cc_cvv': '123', 'cc_address': '100 Fake Street', 'cc_postal_code': 'T1T 1T1', } transaction = gateway.BaseCardTransaction(api_details=API_DETAILS, **details) transaction.validate_fields() transaction.determine_card_details() assert len(transaction.cleaned) == 6 assert transaction.cleaned['cc_number'] == details['cc_number'] assert transaction.cleaned['cc_expiry'] == details['cc_expiry'] assert transaction.cleaned['cc_name'] == details['cc_name'] assert transaction.cleaned['cc_cvv'] == details['cc_cvv'] assert transaction.cleaned['cc_address'] == details['cc_address'] assert transaction.cleaned['cc_postal_code'] == details['cc_postal_code']
def test_save_token_handles_duplicate_token(django_user_model): user = django_user_model.objects.create_user( username='******', password='******' ) first_instance = models.HelcimToken.objects.create( token='abcdefghijklmnopqrstuvw', token_f4l4='11119999', customer_code='CST1000', django_user=user, ) count = models.HelcimToken.objects.all().count() base = gateway.BaseCardTransaction(save_token=True, django_user=user) base.response = { 'token': 'abcdefghijklmnopqrstuvw', 'token_f4l4': '11119999', 'customer_code': 'CST1000', } second_instance = base.save_token_to_vault() assert count == models.HelcimToken.objects.all().count() assert first_instance == second_instance