12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from django.core import mail
- from rest_framework import status
- from rest_framework.reverse import reverse
- from desecapi.tests.base import DesecTestCase
- class DonationTests(DesecTestCase):
- def test_unauthorized_access(self):
- for method in [self.client.get, self.client.put, self.client.delete]:
- response = method(reverse('v1:donation'))
- self.assertStatus(response, status.HTTP_405_METHOD_NOT_ALLOWED)
- def test_create_donation_minimal(self):
- url = reverse('v1:donation')
- data = {
- 'name': 'Name',
- 'iban': 'DE89370400440532013000',
- 'amount': 123.45,
- }
- response = self.client.post(url, data)
- self.assertTrue(mail.outbox)
- email_internal = str(mail.outbox[0].message())
- direct_debit = str(mail.outbox[0].attachments[0][1])
- self.assertStatus(response, status.HTTP_201_CREATED)
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual(response.data['iban'], data['iban'])
- self.assertEqual(response.data['interval'], 0)
- self.assertIn('ONDON1', response.data['mref'])
- self.assertTrue('Name' in direct_debit)
- self.assertTrue(data['iban'] in email_internal)
- def test_create_donation_verbose(self):
- url = reverse('v1:donation')
- data = {
- 'name': 'Komplizierter Vörnämü-ßßß 马大为',
- 'iban': 'DE89370400440532013000',
- 'bic': 'BYLADEM1SWU',
- 'amount': 123.45,
- 'message': 'hi there, thank you. Also, some random chars: ™ • ½ ¼ ¾ ⅓ ⅔ † ‡ µ ¢ £ € « » ♤ ♧ ♥ ♢ ¿ ',
- 'email': 'email@example.com',
- 'interval': 3,
- }
- response = self.client.post(url, data)
- self.assertTrue(mail.outbox)
- email_internal = str(mail.outbox[0].message())
- direct_debit = str(mail.outbox[0].attachments[0][1])
- self.assertStatus(response, status.HTTP_201_CREATED)
- self.assertEqual(len(mail.outbox), 2)
- self.assertEqual(response.data['iban'], data['iban'])
- self.assertEqual(response.data['interval'], 3)
- self.assertIn('ONDON1', response.data['mref'])
- self.assertTrue('Komplizierter Vornamu' in direct_debit)
- self.assertTrue(data['iban'] in email_internal)
|