Source code for thecut.emailfield.tests.test_forms
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from django import VERSION as DJANGO_VERSION
from django.core.exceptions import ValidationError
from django.test import TestCase
from dns.exception import DNSException
from mock import patch
from test_app.forms import EmailForm
from unittest import skipIf
[docs]class TestEmailFormField(TestCase):
"""Tests for the :py:class:`thecut.emailfield.models.EmailField`
model field."""
@patch('dns.resolver.query')
[docs] def test_rejects_domain_without_mx_record(self, fake_query):
"""Reject email address for a domain without an MX record."""
fake_query.side_effect = DNSException()
form = EmailForm(data={'email': 'development@thecut.net.au'})
self.assertFalse(form.is_valid())
# Enure dns.resolver.query() was actually called.
fake_query.assert_called_once_with('thecut.net.au', 'MX')
@patch('dns.resolver.query')
[docs] def test_accepts_domain_with_mx_record(self, fake_query):
"""Accept email address for a domain with an MX record."""
form = EmailForm(data={'email': 'development@thecut.net.au'})
self.assertTrue(form.is_valid())
# Enure dns.resolver.query() was actually called.
fake_query.assert_called_once_with('thecut.net.au', 'MX')