test_donations.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from django.core import mail
  2. from rest_framework import status
  3. from rest_framework.reverse import reverse
  4. from desecapi.tests.base import DesecTestCase
  5. class DonationTests(DesecTestCase):
  6. def test_unauthorized_access(self):
  7. for method in [self.client.get, self.client.put, self.client.delete]:
  8. response = method(reverse('v1:donation'))
  9. self.assertStatus(response, status.HTTP_405_METHOD_NOT_ALLOWED)
  10. def test_create_donation_minimal(self):
  11. url = reverse('v1:donation')
  12. data = {
  13. 'name': 'Name',
  14. 'iban': 'DE89370400440532013000',
  15. 'amount': 123.45,
  16. }
  17. response = self.client.post(url, data)
  18. self.assertTrue(mail.outbox)
  19. email_internal = str(mail.outbox[0].message())
  20. direct_debit = str(mail.outbox[0].attachments[0][1])
  21. self.assertStatus(response, status.HTTP_201_CREATED)
  22. self.assertEqual(len(mail.outbox), 1)
  23. self.assertEqual(response.data['iban'], data['iban'])
  24. self.assertEqual(response.data['interval'], 0)
  25. self.assertIn('ONDON1', response.data['mref'])
  26. self.assertTrue('Name' in direct_debit)
  27. self.assertTrue(data['iban'] in email_internal)
  28. def test_create_donation_verbose(self):
  29. url = reverse('v1:donation')
  30. data = {
  31. 'name': 'Komplizierter Vörnämü-ßßß 马大为',
  32. 'iban': 'DE89370400440532013000',
  33. 'bic': 'BYLADEM1SWU',
  34. 'amount': 123.45,
  35. 'message': 'hi there, thank you. Also, some random chars: ™ • ½ ¼ ¾ ⅓ ⅔ † ‡ µ ¢ £ € « » ♤ ♧ ♥ ♢ ¿ ',
  36. 'email': 'email@example.com',
  37. 'interval': 3,
  38. }
  39. response = self.client.post(url, data)
  40. self.assertTrue(mail.outbox)
  41. email_internal = str(mail.outbox[0].message())
  42. direct_debit = str(mail.outbox[0].attachments[0][1])
  43. self.assertStatus(response, status.HTTP_201_CREATED)
  44. self.assertEqual(len(mail.outbox), 2)
  45. self.assertEqual(response.data['iban'], data['iban'])
  46. self.assertEqual(response.data['interval'], 3)
  47. self.assertIn('ONDON1', response.data['mref'])
  48. self.assertTrue('Komplizierter Vornamu' in direct_debit)
  49. self.assertTrue(data['iban'] in email_internal)