testdonations.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from rest_framework.reverse import reverse
  2. from rest_framework import status
  3. from rest_framework.test import APITestCase
  4. from django.core import mail
  5. class UnsuccessfulDonationTests(APITestCase):
  6. def testExpectUnauthorizedOnGet(self):
  7. url = reverse('v1:donation')
  8. response = self.client.get(url, format='json')
  9. self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
  10. def testExpectUnauthorizedOnPut(self):
  11. url = reverse('v1:donation')
  12. response = self.client.put(url, format='json')
  13. self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
  14. def testExpectUnauthorizedOnDelete(self):
  15. url = reverse('v1:donation')
  16. response = self.client.delete(url, format='json')
  17. self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
  18. class SuccessfulDonationTests(APITestCase):
  19. def testCanPostDonations(self):
  20. url = reverse('v1:donation')
  21. data = \
  22. {
  23. 'name': 'Komplizierter Vörnämü-ßßß 马大为',
  24. 'iban': 'DE89370400440532013000',
  25. 'bic': 'BYLADEM1SWU',
  26. 'amount': 123.45,
  27. 'message': 'hi there, thank you. Also, some random chars: ™ • ½ ¼ ¾ ⅓ ⅔ † ‡ µ ¢ £ € « » ♤ ♧ ♥ ♢ ¿ ',
  28. 'email': 'email@example.com',
  29. }
  30. response = self.client.post(url, data)
  31. self.assertTrue(len(mail.outbox) > 0)
  32. email_internal = str(mail.outbox[0].message())
  33. direct_debit = str(mail.outbox[0].attachments[0][1])
  34. self.assertEqual(response.status_code, status.HTTP_201_CREATED)
  35. self.assertEqual(len(mail.outbox), 2)
  36. self.assertEqual(response.data['iban'], 'DE8937xxx')
  37. self.assertTrue('Komplizierter Vornamu' in direct_debit)
  38. self.assertTrue(data['iban'] in email_internal)