Ignore:
Timestamp:
6 Dec 2012, 08:42:16 (12 years ago)
Author:
Henrik Bettermann
Message:

Store provider_amt and gateway_amt when opening goto_interswitch pages.

Both fileds must be invisible on display pages and pdf slips.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.uniben/trunk/src/waeup/uniben/interswitch/tests.py

    r9731 r9775  
    1616## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    1717##
     18import os
    1819from zope.component import createObject, getUtility
    1920from zope.catalog.interfaces import ICatalog
     
    5859                           self.browser.contents)
    5960        ctrl = self.browser.getControl(name='val_id')
    60         value = ctrl.options[0]
    61         self.browser.getLink(value).click()
     61        self.value = ctrl.options[0]
     62        self.browser.getLink(self.value).click()
    6263        self.assertMatches('...Amount Authorized...',
    6364                           self.browser.contents)
     
    122123        ctrl = self.browser.getControl(name='val_id')
    123124        value = ctrl.options[1]
     125        self.assertEqual(self.student['payments'][value].provider_amt, 0.0)
     126        self.assertEqual(self.student['payments'][value].gateway_amt, 0.0)
    124127        self.browser.getLink(value).click()
    125128        self.browser.getLink("CollegePAY", index=0).click()
     129        # Split amounts have been set.
     130        self.assertEqual(self.student['payments'][value].provider_amt, 1500.0)
     131        self.assertEqual(self.student['payments'][value].gateway_amt, 150.0)
    126132        self.assertMatches('...<input type="hidden" name="pay_item_id" value="5701" />...',
    127133                           self.browser.contents)
     
    148154        # Manager can access InterswitchForm
    149155        self.browser.getLink("CollegePAY", index=0).click()
     156        self.assertEqual(self.student['payments'][value].provider_amt, 1500.0)
     157        self.assertEqual(self.student['payments'][value].gateway_amt, 150.0)
    150158        self.assertMatches('...<input type="hidden" name="pay_item_id" value="5702" />...',
    151159                           self.browser.contents)
     
    176184        # Manager can access InterswitchForm
    177185        self.browser.getLink("CollegePAY", index=0).click()
     186        self.assertEqual(self.student['payments'][value].provider_amt, 0.0)
     187        self.assertEqual(self.student['payments'][value].gateway_amt, 150.0)
    178188        self.assertMatches('...<input type="hidden" name="pay_item_id" value="5704" />...',
    179189                           self.browser.contents)
     
    201211        # Manager can access InterswitchForm
    202212        self.browser.getLink("CollegePAY", index=0).click()
     213        self.assertEqual(self.student['payments'][value].provider_amt, 0.0)
     214        self.assertEqual(self.student['payments'][value].gateway_amt, 150.0)
    203215        self.assertMatches('...<input type="hidden" name="pay_item_id" value="5705" />...',
    204216                           self.browser.contents)
     
    237249    @external_test
    238250    def test_webservice(self):
    239 
     251        # First we have open InterswitchPageStudent to set provider_amt
     252        # and gateway_amt
     253        self.browser.open(self.payment_url + '/goto_interswitch')
     254        # Now we can call the webservice
    240255        self.browser.open(self.payment_url + '/request_webservice')
    241256        self.assertMatches('...Unsuccessful callback...',
     
    250265        self.assertEqual(len(results), 1)
    251266        self.assertEqual(results[0].p_state, 'failed')
     267
     268        # Let's replace the p_id with a valid p_id of the Uniben
     269        # live system. This is definitely not an appropriate
     270        # solution for testing, but we have no choice since
     271        # Interswitch doesn't provide any interface
     272        # for testing.
     273        payment = self.student['payments'][self.value]
     274        payment.p_id = 'p3547789850240'
     275        self.browser.open(self.payment_url + '/request_webservice')
     276        self.assertMatches('...Callback amount does not match...',
     277                          self.browser.contents)
     278        # The payment is now in state failed ...
     279        self.assertMatches('...<span>Failed</span>...',
     280                          self.browser.contents)
     281        # Let's replace the amount autorized with the amount of the
     282        # live system payment
     283        payment.amount_auth = payment.r_amount_approved
     284        self.browser.open(self.payment_url + '/request_webservice')
     285        self.assertMatches('...Successful payment...',
     286                          self.browser.contents)
     287        # The payment is now in state paid ...
     288        self.assertMatches('...<span>Paid</span>...',
     289                          self.browser.contents)
     290        # ... and the catalog has been updated
     291        cat = getUtility(ICatalog, name='payments_catalog')
     292        results = list(
     293            cat.searchResults(p_state=('paid', 'paid')))
     294        self.assertEqual(len(results), 1)
     295        self.assertEqual(results[0].p_state, 'paid')
     296        # Approval is logged in students.log ...
     297        logfile = os.path.join(
     298            self.app['datacenter'].storage, 'logs', 'students.log')
     299        logcontent = open(logfile).read()
     300        self.assertTrue(
     301            'zope.mgr - '
     302            'waeup.uniben.interswitch.browser.InterswitchPaymentRequestWebservicePageStudent - '
     303            'B1000000 - successful schoolfee payment: p3547789850240\n'
     304            in logcontent)
     305        # ... and in payments.log
     306        logfile = os.path.join(
     307            self.app['datacenter'].storage, 'logs', 'payments.log')
     308        logcontent = open(logfile).read()
     309        self.assertTrue(
     310            '"zope.mgr",B1000000,p3547789850240,schoolfee,'
     311            '12000.0,00,1500.0,150.0,0.0,,,\n'
     312            in logcontent)
     313
    252314
    253315class InterswitchTestsApplicants(ApplicantsFullSetup):
Note: See TracChangeset for help on using the changeset viewer.