示例#1
0
    def setUp(self):
        super(FormsTestCase, self).setUp()
        from django_shop_payer_backend.forms import PayerRedirectForm
        from django_shop_payer_backend.helper import (
            payer_order_item_from_order_item,
            payer_order_item_from_extra_order_price)

        payer_order = PayerOrder(
            order_id=self.shop.get_order_unique_id(self.order),
            description="Test order",
        )
        payer_order.set_buyer_details(
            buyer_details_from_user(user=self.user, order=self.order))

        for order_item in self.order.items.all():
            payer_order.add_order_item(
                payer_order_item_from_order_item(order_item))

        for extra_order_price in self.order.extraorderpricefield_set.all():
            payer_order.add_order_item(
                payer_order_item_from_extra_order_price(extra_order_price))

        pc = PayerProcessingControl(
            success_redirect_url="http://host.com/shop/success/",
            authorize_notification_url="http://host.com/shop/authorize/",
            settle_notification_url="http://host.com/shop/settle/",
            redirect_back_to_shop_url="http://host.com/shop/redirect/",
        )

        self.backend.api.set_processing_control(pc)
        self.backend.api.set_order(payer_order)

        self.redirect_data = self.backend.api.get_post_data()
        self.form = PayerRedirectForm(redirect_data=self.redirect_data)
    def setUp(self):
        super(FormsTestCase, self).setUp()
        from django_shop_payer_backend.forms import PayerRedirectForm
        from django_shop_payer_backend.helper import (
            payer_order_item_from_order_item,
            payer_order_item_from_extra_order_price)

        payer_order = PayerOrder(
            order_id=self.shop.get_order_unique_id(self.order),
            description="Test order",
        )
        payer_order.set_buyer_details(buyer_details_from_user(user=self.user, order=self.order))

        for order_item in self.order.items.all():
            payer_order.add_order_item(payer_order_item_from_order_item(order_item))

        for extra_order_price in self.order.extraorderpricefield_set.all():
            payer_order.add_order_item(payer_order_item_from_extra_order_price(extra_order_price))

        pc = PayerProcessingControl(
            success_redirect_url="http://host.com/shop/success/",
            authorize_notification_url="http://host.com/shop/authorize/",
            settle_notification_url="http://host.com/shop/settle/",
            redirect_back_to_shop_url="http://host.com/shop/redirect/",
        )

        self.backend.api.set_processing_control(pc)
        self.backend.api.set_order(payer_order)

        self.redirect_data = self.backend.api.get_post_data()
        self.form = PayerRedirectForm(redirect_data=self.redirect_data)
示例#3
0
    def test_anonymous_user_with_address_signal(self):

        # Existing callable at path
        with self.settings(SHOP_PAYER_BACKEND_ADDRESS_HANDLER=
                           'django_shop_payer_backend.tests.override_address'):
            buyer = buyer_details_from_user(AnonymousUser(), self.order)

            self.assertEquals(buyer.first_name, "Peter")
            self.assertEquals(buyer.last_name, "Parker")
            self.assertEquals(buyer.address_line_1, "Back Street 987")
            self.assertEquals(buyer.postal_code, "98765")
            self.assertEquals(buyer.city, "Somewhere")
            self.assertEquals(buyer.email, None)

        # Inexistent callable at path
        for invalid_path in ['invalid.path']:
            with self.settings(
                    SHOP_PAYER_BACKEND_ADDRESS_HANDLER=invalid_path):
                self.assertRaises(ImportError, buyer_details_from_user, (
                    AnonymousUser(),
                    self.order,
                ))

        from django_shop_payer_backend.helper import _import_path
        self.assertRaises(ValueError, _import_path, None)
        self.assertRaises(ValueError, _import_path, "")
    def test_anonymous_user_with_signal(self):
        populate_buyer_details_dict.connect(self.add_additional_buyer_details)
        buyer = buyer_details_from_user(AnonymousUser(), self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, None)
        self.assertEquals(buyer.organisation, "The Company Inc.")
        populate_buyer_details_dict.disconnect(self.add_additional_buyer_details)
    def test_auth_user_without_address_with_signal(self):
        populate_buyer_details_dict.connect(self.add_additional_buyer_details)
        buyer = buyer_details_from_user(self.user, self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, "*****@*****.**")
        self.assertEquals(buyer.organisation, "The Company Inc.")
        populate_buyer_details_dict.disconnect(self.add_additional_buyer_details)
示例#6
0
    def test_anonymous_user_with_signal(self):
        populate_buyer_details_dict.connect(self.add_additional_buyer_details)
        buyer = buyer_details_from_user(AnonymousUser(), self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, None)
        self.assertEquals(buyer.organisation, "The Company Inc.")
        populate_buyer_details_dict.disconnect(
            self.add_additional_buyer_details)
示例#7
0
    def test_auth_user_without_address_with_signal(self):
        populate_buyer_details_dict.connect(self.add_additional_buyer_details)
        buyer = buyer_details_from_user(self.user, self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, "*****@*****.**")
        self.assertEquals(buyer.organisation, "The Company Inc.")
        populate_buyer_details_dict.disconnect(
            self.add_additional_buyer_details)
示例#8
0
    def test_auth_user_without_address_no_signal(self):
        user = User.objects.create(username="******",
                                   email="*****@*****.**",
                                   first_name="Mary-Jane",
                                   last_name="Watson")
        user.save()

        buyer = buyer_details_from_user(user, self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, "*****@*****.**")
    def test_auth_user_without_address_no_signal(self):
        user = User.objects.create(
            username="******",
            email="*****@*****.**",
            first_name="Mary-Jane",
            last_name="Watson")
        user.save()

        buyer = buyer_details_from_user(user, self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, "*****@*****.**")
示例#10
0
    def payer_redirect_view(self, request):
        """
        This view generates the order XML data and other key-value pairs needed,
        outputs the as hidden input elemens in a form and redirects to Payer.
        """

        order = self.shop.get_order(request)
        description = self.shop.get_order_short_name(order)
        order_id = self.shop.get_order_unique_id(order)

        user = None
        if request.user.is_authenticated():
            user = request.user

        payer_order = PayerOrder(
            order_id=order_id,
            description=description,
        )
        payer_order.set_buyer_details(buyer_details_from_user(user=user, order=order))

        for order_item in order.items.all():
            payer_order.add_order_item(payer_order_item_from_order_item(order_item))

        for extra_order_price in order.extraorderpricefield_set.all():
            payer_order.add_order_item(payer_order_item_from_extra_order_price(extra_order_price))

        for info in order.extra_info.all():
            for t in list(string_chunks(info.text, 255)):
                payer_order.add_info_line(t)

        self.api.set_processing_control(self.get_processing_control(request))
        self.api.set_order(payer_order)

        redirect_data = self.api.get_post_data()
        form = PayerRedirectForm(redirect_data=redirect_data)

        ctx_data = {
            'order': order,
            'redirect_data': redirect_data,
            'form_action': self.api.get_post_url(),
            'form': form,
        }

        if settings.DEBUG:
            ctx_data['xml_data'] = self.api.get_xml_data(pretty_print=True)

        context = RequestContext(request, ctx_data)

        return render_to_response(self.template, context)
示例#11
0
    def test_anonymous_user_with_address_signal(self):

        # Existing callable at path
        with self.settings(SHOP_PAYER_BACKEND_ADDRESS_HANDLER='django_shop_payer_backend.tests.override_address'):
            buyer = buyer_details_from_user(AnonymousUser(), self.order)

            self.assertEquals(buyer.first_name, "Peter")
            self.assertEquals(buyer.last_name, "Parker")
            self.assertEquals(buyer.address_line_1, "Back Street 987")
            self.assertEquals(buyer.postal_code, "98765")
            self.assertEquals(buyer.city, "Somewhere")
            self.assertEquals(buyer.email, None)

        # Inexistent callable at path
        for invalid_path in ['invalid.path']:
            with self.settings(SHOP_PAYER_BACKEND_ADDRESS_HANDLER=invalid_path):
                self.assertRaises(
                    ImportError,
                    buyer_details_from_user,
                    (AnonymousUser(), self.order,))

        from django_shop_payer_backend.helper import _import_path
        self.assertRaises(ValueError, _import_path, None)
        self.assertRaises(ValueError, _import_path, "")
示例#12
0
    def test_anonymous_user_no_signal(self):
        buyer = buyer_details_from_user(AnonymousUser(), self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, None)
示例#13
0
    def test_auth_user_no_signal(self):
        buyer = buyer_details_from_user(self.user, self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, "*****@*****.**")
示例#14
0
    def test_anonymous_user_no_signal(self):
        buyer = buyer_details_from_user(AnonymousUser(), self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, None)
示例#15
0
    def test_auth_user_no_signal(self):
        buyer = buyer_details_from_user(self.user, self.order)

        self.assertAddressData(buyer)
        self.assertEquals(buyer.email, "*****@*****.**")