Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

tests.py 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from decimal import Decimal as D
  2. from xml.dom.minidom import parseString
  3. import datetime
  4. from django.test import TestCase
  5. from django.conf import settings
  6. from oscar.apps.payment.datacash.models import OrderTransaction
  7. from oscar.apps.payment.datacash.utils import Gateway, Facade
  8. from oscar.apps.payment.utils import Bankcard
  9. class OrderTransactionTests(TestCase):
  10. def test_cc_numbers_are_not_saved(self):
  11. request_xml = """<?xml version="1.0" encoding="UTF-8" ?>
  12. <Request>
  13. <Authentication>
  14. <client>99000001</client>
  15. <password>boomboom</password>
  16. </Authentication>
  17. <Transaction>
  18. <CardTxn>
  19. <Card>
  20. <pan>1000011100000004</pan>
  21. <expirydate>04/06</expirydate>
  22. <startdate>01/04</startdate>
  23. </Card>
  24. <method>auth</method>
  25. </CardTxn>
  26. <TxnDetails>
  27. <merchantreference>1000001</merchantreference>
  28. <amount currency="GBP">95.99</amount>
  29. </TxnDetails>
  30. </Transaction>
  31. </Request>"""
  32. response_xml = """<?xml version="1.0" encoding="UTF-8" ?>
  33. <Response>
  34. <CardTxn>
  35. <authcode>060642</authcode>
  36. <card_scheme>Switch</card_scheme>
  37. <country>United Kingdom</country>
  38. <issuer>HSBC</issuer>
  39. </CardTxn>
  40. <datacash_reference>3000000088888888</datacash_reference>
  41. <merchantreference>1000001</merchantreference>
  42. <mode>LIVE</mode>
  43. <reason>ACCEPTED</reason>
  44. <status>1</status>
  45. <time>1071567305</time>
  46. </Response>"""
  47. txn = OrderTransaction.objects.create(order_number='1000',
  48. method='auth',
  49. datacash_ref='3000000088888888',
  50. merchant_ref='1000001',
  51. amount=D('95.99'),
  52. status=1,
  53. reason='ACCEPTED',
  54. request_xml=request_xml,
  55. response_xml=response_xml)
  56. doc = parseString(txn.request_xml)
  57. element = doc.getElementsByTagName('pan')[0]
  58. self.assertEqual('XXXXXXXXXXXX0004', element.firstChild.data)
  59. class IntegrationTests(TestCase):
  60. def _test_for_smoke(self):
  61. gateway = Gateway(settings.DATACASH_CLIENT,
  62. settings.DATACASH_PASSWORD,
  63. host=settings.DATACASH_HOST)
  64. response = gateway.auth(card_number='1000011000000005',
  65. expiry_date='01/13',
  66. amount=D('50.00'),
  67. currency='GBP',
  68. merchant_reference='123456_%s' % datetime.datetime.now().microsecond)
  69. print response
  70. def _test_adapter(self):
  71. bankcard = Bankcard(card_number='1000011000000005', expiry_date='01/13')
  72. dc_facade = Facade()
  73. reference = dc_facade.debit('102910', D('23.00'), bankcard)
  74. print reference
  75. OrderTransaction.objects.get(order_number='102910')