Почему этот тест Django проходит?

Вызов функции send_mail независимо вызовет исключение BadHeaderError из-за новой строки в теме.

Я ожидаю, что это test_newline_causes_exception также потерпит неудачу, но это не так. Это в Django 1.3. Есть идеи?

from django.core.mail import send_mail
from django.utils import unittest

class EmailTestCase(unittest.TestCase):

    def test_newline_causes_exception(self):
        send_mail('Header\nInjection', 'Here is the message.', '[email protected]',
                  ['[email protected]'], fail_silently=False)

РЕДАКТИРОВАТЬ: Этот новый тест показывает, что код проверки заголовка (django.core.mail.message.forbid_multi_line_headers) не вызывается, когда send_mail используется в тестах.

from django.core.mail import send_mail, BadHeaderError, outbox
from django.utils import unittest

class EmailTestCase(unittest.TestCase):

    def test_newline_in_subject_should_raise_exception(self):

        try:
            send_mail('Subject\nhere', 'Here is the message.',
                      '[email protected]', ['[email protected]'], fail_silently=False)
        except BadHeaderError:
            raise Exception

        self.assertEqual(len(outbox), 1)

        self.assertEqual(outbox[0].subject, 'Subject here')

Результат:

AssertionError: 'Subject\nhere' != 'Subject here'

Ответы на вопрос(2)

Ваш ответ на вопрос