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)