Пример #1
0
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()
Пример #2
0
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']
Пример #3
0
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()
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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'])
Пример #9
0
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
Пример #13
0
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
Пример #14
0
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