test_donations.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  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(self):
  11. url = reverse('v1:donation')
  12. data = \
  13. {
  14. 'name': 'Komplizierter Vörnämü-ßßß 马大为',
  15. 'iban': 'DE89370400440532013000',
  16. 'bic': 'BYLADEM1SWU',
  17. 'amount': 123.45,
  18. 'message': 'hi there, thank you. Also, some random chars: ™ • ½ ¼ ¾ ⅓ ⅔ † ‡ µ ¢ £ € « » ♤ ♧ ♥ ♢ ¿ ',
  19. 'email': 'email@example.com',
  20. }
  21. response = self.client.post(url, data)
  22. self.assertTrue(mail.outbox)
  23. email_internal = str(mail.outbox[0].message())
  24. direct_debit = str(mail.outbox[0].attachments[0][1])
  25. self.assertStatus(response, status.HTTP_201_CREATED)
  26. self.assertEqual(len(mail.outbox), 2)
  27. self.assertEqual(response.data['iban'], 'DE8937xxx')
  28. self.assertTrue('Komplizierter Vornamu' in direct_debit)
  29. self.assertTrue(data['iban'] in email_internal)