示例#1
0
    def test_order_process(self):
        # Create sample order
        ct = model.CouponType('test', 300.0, "Test flight")
        order = model.order_create('1', ct, test=True)

        # Process successful payment
        order, coupons = model.order_process(order.order_id,
                                             '*****@*****.**', 100.0, 'EUR',
                                             payer_name='Andrey',
                                             payer_surname='Lebedev',
                                             payment_provider='dnb')
        self.assertEqual(order.status, model.Order.ST_PAID)
        self.assertEqual(order.payer_name, 'Andrey')
        self.assertEqual(order.payer_surname, 'Lebedev')
        self.assertEqual(order.payer_email, u'*****@*****.**')
        self.assertIsNotNone(order.payment_time)
        self.assertEqual(order.paid_amount, 100.0)
        self.assertEqual(order.paid_currency, 'EUR')

        # Check created coupon
        self.assertEqual(len(coupons), 1)
        coupon = coupons[0]
        self.assertIsNotNone(coupon.order)
        self.assertIs(coupon.order, order)
        self.assertEqual(coupon.status, model.Coupon.ST_ACTIVE)
        self.assertIsNone(coupon.use_time)
        cid = coupon.coupon_id
        self.assertEqual(len(cid), 9)

        # Make sure coupon is in database
        self.assertEqual(model.coupon_get(cid).key(), coupon.key())
示例#2
0
    def get(self, id):
        coupon = model.coupon_get(id)
        if coupon is None:
            webapp2.abort(404)

        values = {'coupon': coupon}
        write_template(self.response, 'check.html', values)
示例#3
0
    def get(self, id):
        coupon = model.coupon_get(id)
        if coupon is None:
            webapp2.abort(404)

        values = {'coupon': coupon,
                  'qr': webapp2.uri_for('qr', id=id)
                  }

        write_template(self.response, 'coupon.html', values)
    def test_admin_check_use(self):
        app = create_testapp()
        self.cpolicy.SetProbability(1.0)

        ct = model.get_coupon_type("plane_long")
        order = model.order_create("1", ct)
        coupons = model.coupon_create(order)
        cid = coupons[0].coupon_id

        resp = app.post("/admin/check/%s" % cid)
        self.assertEqual(resp.status, "302 Moved Temporarily")

        used = model.coupon_get(cid)
        self.assertEqual(used.status, model.Coupon.ST_USED)
    def test_callback_success(self, send_mail_mock):
        # Create test order

        ct = model.CouponType('test', 200.0, 'Test coupon')
        order = model.order_create('1', ct)

        # Prepare request as webtopay would
        req = {'orderid': '1',
               'payamount': '20000',
               'paycurrency': 'LTL',
               'p_email': '*****@*****.**',
               'status': '1',
               'name': 'Bill',
               'surename': 'Gates',
               'payment': 'test'}
        data = webtopay._safe_base64_encode(
            webtopay._prepare_query_string(req, 'test'))
        signature = webtopay._sign(data, 'pass')

        app = create_testapp()
        params = {'data': data, 'ss1': signature}
        with mock.patch('soaringcoupons.model.coupon_gen_id') as m:
            m.return_value = '1001'
            resp = app.get('/callback', params=params)

        self.assertEqual(resp.body, 'OK')

        # Check order status
        order = model.order_get('1')
        self.assertEqual(order.status, model.Order.ST_PAID)

        # Check coupon status
        coupon = model.coupon_get('1001')
        self.assertNotEqual(coupon, None)
        self.assertEqual(coupon.status, model.Coupon.ST_ACTIVE)

        # Make sure email was sent
        self.assertEqual(len(send_mail_mock.mock_calls), 1)

        # Make sure email contains correct link to coupon
        msg = send_mail_mock.mock_calls[0][2]
        msg_contents = msg['body']
        self.assertRegexpMatches(msg_contents, r'http://.*/coupon/1001')