view contact/tests/test_views.py @ 892:79a71b9d0a2a

Use Reply-To header when sending mail from other users. See issue #81.
author Brian Neal <bgneal@gmail.com>
date Mon, 16 Feb 2015 20:30:48 -0600
parents 38db6ec61af3
children b957e4829a03
line wrap: on
line source
"""
Unit tests for the contact application views.

"""
from django.test import TestCase
from django.core.urlresolvers import reverse
from django.core import mail


class BaseTestCase(TestCase):
    """Simple tests to ensure basic functionality."""

    def test_usage(self):
        url = reverse('contact-form')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        post_data = {
            'name': 'John Doe',
            'email': 'jdoe@example.com',
            'subject': 'Test message',
            'message': 'Testing contact form.',
        }
        response = self.client.post(url, data=post_data, follow=True)
        self.assertRedirects(response, reverse('contact-thanks'))

        self.assertEqual(len(mail.outbox), 1)
        email = mail.outbox[0]
        self.assertEqual(len(email.recipients()), 1)
        self.assertEqual(email.extra_headers['Reply-To'], post_data['email'])
        self.assertEqual(email.from_email, 'no_reply@example.com')
        self.assertEqual(email.recipients()[0], 'admin@surfguitar101.com')
        self.assertTrue(post_data['subject'] in email.subject)
        msg = email.message().as_string()
        self.assertTrue(post_data['name'] in msg)
        self.assertTrue(post_data['email'] in msg)
        self.assertTrue(post_data['message'] in msg)

    def test_honeypot(self):
        url = reverse('contact-form')
        post_data = {
            'name': 'John Doe',
            'email': 'jdoe@example.com',
            'subject': 'Test message',
            'message': 'Testing contact form.',
            'honeypot': 'some spam',
        }
        response = self.client.post(url, data=post_data)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(mail.outbox), 0)