Source code for web_payments.testcommon


from decimal import Decimal
from .logic import BasicPayment
from . import PaymentStatus, PurchasedItem, ProviderVariant
from .utils import getter_prefixed_address

__all__ = ["create_test_payment"]

PAYMENT_VARIANTS_API = {
    'default': ('web_payments_dummy.DummyProvider', {}, {}),
    'DummyProvider': ('web_payments_dummy.DummyProvider', {}, {"test_var": "test"}),
    'DirectPaymentProvider': ('web_payments_externalpayments.DirectPaymentProvider', {}, {}),
    'iban': ('web_payments_externalpayments.BankTransferProvider', {
        "iban": "GL5604449876543210",
        "bic": "DABAIE2D"}, {"localized_name": "iban"}
        ),
    }

[docs]def create_test_payment(PAYMENT_VARIANTS_API=PAYMENT_VARIANTS_API, **attributes): class TestPayment(BasicPayment): id = 523 pk = id description = 'payment' currency = 'USD' status = PaymentStatus.WAITING message = "" token = "354338723" total = Decimal(100) captured_amount = Decimal("0.0") extra_data = "" variant = "undefined" transaction_id = None billing_first_name = "John" billing_last_name = "Smith" billing_address_1 = "JohnStreet 23" billing_address_2 = "" billing_city = "Neches" billing_postcode = "75779" billing_country_code = "US" billing_country_area = "Tennessee" billing_email = "example@example.com" get_billing_address = getter_prefixed_address("billing") get_shipping_address = get_billing_address def __init__(self, **kwargs): for key, val in kwargs.items(): setattr(self, key, val) def get_purchased_items(self): return [ PurchasedItem( name='foo', quantity=10, price=Decimal('20'), currency='USD', sku='bar')] @staticmethod def _list_providers_helper(item): _ndict = {"name": item[0]} _ndict.update(item[1][2]) return ProviderVariant(item[1][0], item[1][1], _ndict) @classmethod def list_providers(cls, **kwargs): """ returns an iterable with ProviderVariants """ if "name" in kwargs: if kwargs["name"] in PAYMENT_VARIANTS_API: return [cls._list_providers_helper((kwargs["name"], PAYMENT_VARIANTS_API[kwargs["name"]]))] return [] return map(cls._list_providers_helper, PAYMENT_VARIANTS_API.items()) def get_provider_variant(self): variant_tup = PAYMENT_VARIANTS_API[self.variant] variant = ProviderVariant(variant_tup[0], variant_tup[1], {"name": self.variant}) variant.extra.update(variant_tup[2]) return variant def get_failure_url(self): return 'http://cancel.com' def get_process_url(self, extra_data=None): return 'http://example.com/token' def get_success_url(self): return 'http://success.com' def save(self, **kwargs): pass # workaround limitation in python for key, val in attributes.items(): setattr(TestPayment, key, val) return TestPayment