Esempio n. 1
0
 def test_admin_import_subscribers_no_addresses(self):
     """
     Cannot confirm subscribers import if 'addresses' misses in session.
     """
     import_url = reverse('admin:newsletter_subscription_import')
     import_confirm_url = reverse(
         'admin:newsletter_subscription_import_confirm')
     response = self.client.post(import_confirm_url, {'confirm': True})
     self.assertRedirects(response, import_url)
Esempio n. 2
0
    def test_message_admin(self):
        """
        Testing message admin change list display and message previews.
        """
        changelist_url = reverse('admin:newsletter_message_changelist')
        response = self.client.get(changelist_url)
        self.assertContains(
            response,
            '<a href="/admin/newsletter/message/%d/preview/">Preview</a>' %
            self.message.pk,
            html=True)

        # Previews
        preview_url = reverse('admin:newsletter_message_preview',
                              args=[self.message.pk])
        preview_text_url = reverse('admin:newsletter_message_preview_text',
                                   args=[self.message.pk])
        preview_html_url = reverse('admin:newsletter_message_preview_html',
                                   args=[self.message.pk])
        response = self.client.get(preview_url)
        self.assertContains(
            response,
            '<iframe src ="%s" width="960px" height="720px"></iframe>' %
            preview_html_url,
            html=True)
        self.assertContains(
            response,
            '<iframe src ="%s" width="960px" height="720px"></iframe>' %
            preview_text_url,
            html=True)

        response = self.client.get(preview_text_url)
        self.assertEqual(
            response.content, b'''++++++++++++++++++++

Test Newsletter: Test message

++++++++++++++++++++



++++++++++++++++++++

Unsubscribe: http://example.com/newsletter/test-newsletter/unsubscribe/
''')

        response = self.client.get(preview_html_url)
        self.assertContains(response, '<h1>Test Newsletter</h1>')
        self.assertContains(response, '<h2>Test message</h2>')
        self.assertContains(response, self.newsletter.unsubscribe_url())

        # HTML preview returns 404 if send_html is False
        self.newsletter.send_html = False
        self.newsletter.save()
        response = self.client.get(preview_html_url)
        self.assertEqual(response.status_code, 404)
Esempio n. 3
0
    def test_detail(self):
        for n in self.newsletters:

            detail_url = reverse('newsletter_detail',
                                 kwargs={'newsletter_slug': n.slug})

            subscribe_url = reverse('newsletter_subscribe_request',
                                    kwargs={'newsletter_slug': n.slug})

            unsubscribe_url = reverse('newsletter_unsubscribe_request',
                                      kwargs={'newsletter_slug': n.slug})

            update_url = reverse('newsletter_update_request',
                                 kwargs={'newsletter_slug': n.slug})

            archive_url = reverse('newsletter_archive',
                                  kwargs={'newsletter_slug': n.slug})

            # Check returned URL's exist and equal result of lookup methods
            self.assertTrue(subscribe_url)
            self.assertEqual(subscribe_url, n.subscribe_url())

            self.assertTrue(unsubscribe_url)
            self.assertEqual(unsubscribe_url, n.unsubscribe_url())

            self.assertTrue(update_url)
            self.assertEqual(update_url, n.update_url())

            self.assertTrue(archive_url)
            self.assertEqual(archive_url, n.archive_url())

            # Request detail URL and assert it links to all other URL's
            response = self.client.get(detail_url)

            if not n.visible:
                self.assertEqual(response.status_code, 404)
                continue

            self.assertContains(response, subscribe_url)
            self.assertContains(response, update_url)
            self.assertContains(response, unsubscribe_url)
            self.assertContains(response, archive_url)

            # Request each particular newsletter URL and assert
            # it returns a 200
            response = self.client.get(subscribe_url)
            self.assertContains(response, n.title, status_code=200)

            response = self.client.get(unsubscribe_url)
            self.assertContains(response, n.title, status_code=200)

            response = self.client.get(update_url)
            self.assertContains(response, n.title, status_code=200)

            response = self.client.get(archive_url)
            self.assertContains(response, n.title, status_code=200)
Esempio n. 4
0
    def test_message_admin(self):
        """
        Testing message admin change list display and message previews.
        """
        changelist_url = reverse('admin:newsletter_message_changelist')
        response = self.client.get(changelist_url)
        self.assertContains(
            response,
            '<a href="/admin/newsletter/message/%d/preview/">Preview</a>' % self.message.pk,
            html=True
        )

        # Previews
        preview_url = reverse('admin:newsletter_message_preview', args=[self.message.pk])
        preview_text_url = reverse('admin:newsletter_message_preview_text', args=[self.message.pk])
        preview_html_url = reverse('admin:newsletter_message_preview_html', args=[self.message.pk])
        response = self.client.get(preview_url)
        self.assertContains(
            response,
            '<iframe src ="%s" width="960px" height="720px"></iframe>' % preview_html_url,
            html=True
        )
        self.assertContains(
            response,
            '<iframe src ="%s" width="960px" height="720px"></iframe>' % preview_text_url,
            html=True
        )

        response = self.client.get(preview_text_url)
        self.assertEqual(
            response.content,
            b'''++++++++++++++++++++

Test Newsletter: Test message

++++++++++++++++++++



++++++++++++++++++++

Unsubscribe: http://example.com/newsletter/test-newsletter/unsubscribe/
''')

        response = self.client.get(preview_html_url)
        self.assertContains(response, '<h1>Test Newsletter</h1>')
        self.assertContains(response, '<h2>Test message</h2>')
        self.assertContains(response, self.newsletter.unsubscribe_url())

        # HTML preview returns 404 if send_html is False
        self.newsletter.send_html = False
        self.newsletter.save()
        response = self.client.get(preview_html_url)
        self.assertEqual(response.status_code, 404)
Esempio n. 5
0
 def test_admin_import_subscribers_no_addresses(self):
     """
     Cannot confirm subscribers import if 'addresses' misses in session.
     """
     import_url = reverse('admin:newsletter_subscription_import')
     import_confirm_url = reverse(
         'admin:newsletter_subscription_import_confirm'
     )
     response = self.client.post(
         import_confirm_url, {'confirm': True}
     )
     self.assertRedirects(response, import_url)
Esempio n. 6
0
    def test_add_existing_submission_regression(self):
        """ Regression test for #322. """

        # create a third message
        message = Message.objects.create(
            newsletter=self.newsletter, title='3nd message', slug='test-message-3'
        )

        # create submission for third message and add it
        response = self.client.post(self.add_url, data={
            'message': message.pk,
            'site': Site.objects.get_current().id,
            'publish_date_0': '2020-10-30',
            'publish_date_1': '07:24',
            'publish': 'on',
        }, follow=True)

        self.assertContains(response, "added")

        # try to add a submission for third message again
        # -> this will cause a validation error and print a warning
        response = self.client.post(
            reverse('admin:newsletter_submission_change', kwargs={'object_id': 3}), data={
                'message': message.pk,
                'site': Site.objects.get_current().id,
                'publish_date_0': '2020-10-30',
                'publish_date_1': '07:24',
                'publish': 'on',
                '_saveasnew': 'Save as new'
            }, follow=True)

        self.assertContains(response, "This message has already been published in some other submission. "
                                      "Messages can only be published once.")
Esempio n. 7
0
    def admin_import_file(self, source_file, ignore_errors=''):
        """ Upload an address file for import to admin. """

        import_url = reverse('admin:newsletter_subscription_import')

        with open(os.path.join(test_files_dir, source_file), 'rb') as fh:
            return self.client.post(import_url, {
                'newsletter': self.newsletter.pk,
                'address_file': fh,
                'ignore_errors': ignore_errors,
            }, follow=True)
Esempio n. 8
0
    def admin_import_file(self, source_file, ignore_errors=''):
        """ Upload an address file for import to admin. """

        import_url = reverse('admin:newsletter_subscription_import')

        with open(os.path.join(test_files_dir, source_file), 'rb') as fh:
            return self.client.post(import_url, {
                'newsletter': self.newsletter.pk,
                'address_file': fh,
                'ignore_errors': ignore_errors,
            }, follow=True)
Esempio n. 9
0
    def test_subscription_admin(self):
        """
        Testing subscription admin change list display and actions.
        """
        Subscription.objects.bulk_create([
            Subscription(
                newsletter=self.newsletter, name_field='Sara',
                email_field='*****@*****.**', subscribed=True,
            ),
            Subscription(
                newsletter=self.newsletter, name_field='Bob',
                email_field='*****@*****.**', unsubscribed=True,
            ),
            Subscription(
                newsletter=self.newsletter, name_field='Khaled',
                email_field='*****@*****.**', subscribed=False,
                unsubscribed=False,
            ),
        ])
        changelist_url = reverse('admin:newsletter_subscription_changelist')
        response = self.client.get(changelist_url)
        self.assertContains(
            response,
            '<img src="/static/newsletter/admin/img/icon-no.gif" width="10" height="10" alt="Unsubscribed"/>',
            html=True
        )
        self.assertContains(
            response,
            '<img src="/static/newsletter/admin/img/icon-yes.gif" width="10" height="10" alt="Subscribed"/>',
            html=True
        )
        self.assertContains(
            response,
            '<img src="/static/newsletter/admin/img/waiting.gif" width="10" height="10" alt="Unactivated"/>',
            html=True
        )

        # Test actions
        response = self.client.post(changelist_url, data={
            'index': 0,
            'action': ['make_subscribed'],
            '_selected_action': [str(Subscription.objects.get(name_field='Khaled').pk)],
        })
        self.assertTrue(Subscription.objects.get(name_field='Khaled').subscribed)

        response = self.client.post(changelist_url, data={
            'index': 0,
            'action': ['make_unsubscribed'],
            '_selected_action': [str(Subscription.objects.get(name_field='Sara').pk)],
        })
        self.assertFalse(Subscription.objects.get(name_field='Sara').subscribed)
Esempio n. 10
0
    def test_subscription_admin(self):
        """
        Testing subscription admin change list display and actions.
        """
        Subscription.objects.bulk_create([
            Subscription(
                newsletter=self.newsletter, name_field='Sara',
                email_field='*****@*****.**', subscribed=True,
            ),
            Subscription(
                newsletter=self.newsletter, name_field='Bob',
                email_field='*****@*****.**', unsubscribed=True,
            ),
            Subscription(
                newsletter=self.newsletter, name_field='Khaled',
                email_field='*****@*****.**', subscribed=False,
                unsubscribed=False,
            ),
        ])
        changelist_url = reverse('admin:newsletter_subscription_changelist')
        response = self.client.get(changelist_url)
        self.assertContains(
            response,
            '<img src="/static/newsletter/admin/img/icon-no.gif" width="10" height="10" alt="Unsubscribed"/>',
            html=True
        )
        self.assertContains(
            response,
            '<img src="/static/newsletter/admin/img/icon-yes.gif" width="10" height="10" alt="Subscribed"/>',
            html=True
        )
        self.assertContains(
            response,
            '<img src="/static/newsletter/admin/img/waiting.gif" width="10" height="10" alt="Unactivated"/>',
            html=True
        )

        # Test actions
        response = self.client.post(changelist_url, data={
            'index': 0,
            'action': ['make_subscribed'],
            '_selected_action': [str(Subscription.objects.get(name_field='Khaled').pk)],
        })
        self.assertTrue(Subscription.objects.get(name_field='Khaled').subscribed)

        response = self.client.post(changelist_url, data={
            'index': 0,
            'action': ['make_unsubscribed'],
            '_selected_action': [str(Subscription.objects.get(name_field='Sara').pk)],
        })
        self.assertFalse(Subscription.objects.get(name_field='Sara').subscribed)
Esempio n. 11
0
 def test_newsletter_admin(self):
     """
     Testing newsletter admin change list display.
     """
     changelist_url = reverse('admin:newsletter_newsletter_changelist')
     response = self.client.get(changelist_url)
     self.assertContains(
         response,
         '<a href="/admin/newsletter/message/?newsletter__id=%s">Messages</a>'
         % self.newsletter.pk)
     self.assertContains(
         response,
         '<a href="/admin/newsletter/subscription/?newsletter__id=%s">Subscriptions</a>'
         % self.newsletter.pk)
Esempio n. 12
0
 def test_newsletter_admin(self):
     """
     Testing newsletter admin change list display.
     """
     changelist_url = reverse('admin:newsletter_newsletter_changelist')
     response = self.client.get(changelist_url)
     self.assertContains(
         response,
         '<a href="/admin/newsletter/message/?newsletter__id=%s">Messages</a>' % self.newsletter.pk
     )
     self.assertContains(
         response,
         '<a href="/admin/newsletter/subscription/?newsletter__id=%s">Subscriptions</a>' % self.newsletter.pk
     )
Esempio n. 13
0
    def test_detail_invisible_not_found(self):
        """
        Test whether an invisible newsletter causes a 404 in detail view.
        """

        # Get an invisible newsletter
        n = Newsletter.objects.filter(visible=False)[0]

        detail_url = reverse('newsletter_detail',
                             kwargs={'newsletter_slug': n.slug})

        response = self.client.get(detail_url)

        self.assertEqual(response.status_code, 404)
Esempio n. 14
0
    def test_message_with_attachment_admin(self):
        """
        Testing message with attachment admin change list display.
        """
        self.assertEqual(Message.objects.count(), 2)

        message_with_a = Message.objects.last()
        self.assertEqual(message_with_a.attachments.count(), 1)

        upload_to = attachment_upload_to(self.attachment, 'sample.txt')
        self.assertEqual(os.path.split(upload_to)[1], 'sample.txt')

        change_url = reverse('admin:newsletter_message_change', args=(self.message_with_attachment.pk,))
        response = self.client.get(change_url)
        self.assertContains(response, '<h2>Attachments</h2>', html=True)
Esempio n. 15
0
    def test_admin_import_subscribers_permission(self):
        """
        To be able to import subscriptions, user must have the
        'add_subscription' permission.
        """
        self.admin_user.is_superuser = False
        self.admin_user.save()
        import_url = reverse('admin:newsletter_subscription_import')
        response = self.client.get(import_url)
        self.assertEqual(response.status_code, 403)

        self.admin_user.user_permissions.add(
            Permission.objects.get(codename='add_subscription'))
        response = self.client.get(import_url)
        self.assertEqual(response.status_code, 200)
Esempio n. 16
0
    def test_detail_invisible_not_found(self):
        """
        Test whether an invisible newsletter causes a 404 in detail view.
        """

        # Get an invisible newsletter
        n = Newsletter.objects.filter(visible=False)[0]

        detail_url = reverse(
            'newsletter_detail',
            kwargs={'newsletter_slug': n.slug}
        )

        response = self.client.get(detail_url)

        self.assertEqual(response.status_code, 404)
Esempio n. 17
0
    def test_admin_import_subscribers_permission(self):
        """
        To be able to import subscriptions, user must have the
        'add_subscription' permission.
        """
        self.admin_user.is_superuser = False
        self.admin_user.save()
        import_url = reverse('admin:newsletter_subscription_import')
        response = self.client.get(import_url)
        self.assertEqual(response.status_code, 403)

        self.admin_user.user_permissions.add(
            Permission.objects.get(codename='add_subscription')
        )
        response = self.client.get(import_url)
        self.assertEqual(response.status_code, 200)
Esempio n. 18
0
    def test_list(self):
        """
        Test whether all newsletters are in the list and whether the links
        to them are correct.
        """
        response = self.client.get(self.list_url)

        for n in self.newsletters.filter(visible=True):
            self.assertContains(response, n.title)

            detail_url = reverse('newsletter_detail',
                                 kwargs={'newsletter_slug': n.slug})
            self.assertContains(response, '<a href="%s">' % detail_url)

        for n in self.newsletters.filter(visible=False):
            self.assertNotContains(response, n.title)
Esempio n. 19
0
    def test_list(self):
        """
        Test whether all newsletters are in the list and whether the links
        to them are correct.
        """
        response = self.client.get(self.list_url)

        for n in self.newsletters.filter(visible=True):
            self.assertContains(response, n.title)

            detail_url = reverse('newsletter_detail',
                                 kwargs={'newsletter_slug': n.slug})
            self.assertContains(response, '<a href="%s">' % detail_url)

        for n in self.newsletters.filter(visible=False):
            self.assertNotContains(response, n.title)
Esempio n. 20
0
    def admin_import_subscribers(self, source_file, ignore_errors=''):
        """
        Import process of a CSV/LDIF/VCARD file containing subscription
        addresses from the admin site.
        """

        response = self.admin_import_file(source_file, ignore_errors)

        self.assertContains(response, "<h1>Confirm import</h1>")
        self.assertContains(response,
                            "<li>Jill Martin &lt;[email protected]&gt;</li>")

        import_confirm_url = reverse(
            'admin:newsletter_subscription_import_confirm')

        return self.client.post(import_confirm_url, {'confirm': True},
                                follow=True)
Esempio n. 21
0
    def admin_import_subscribers(self, source_file, ignore_errors=''):
        """
        Import process of a CSV/LDIF/VCARD file containing subscription
        addresses from the admin site.
        """

        response = self.admin_import_file(source_file, ignore_errors)

        self.assertContains(response, "<h1>Confirm import</h1>")
        self.assertContains(response, "<li>Jill Martin &lt;[email protected]&gt;</li>")

        import_confirm_url = reverse(
            'admin:newsletter_subscription_import_confirm'
        )

        return self.client.post(
            import_confirm_url, {'confirm': True}, follow=True
        )
Esempio n. 22
0
    def test_add_existing_message_regression(self):
        """ Regression test for #322. """

        # ToDo(frennkie) is there a more elegant way to handle the inlines?!
        response = self.client.post(reverse('admin:newsletter_message_add'), data={
            'title': self.message.title,
            'slug': self.message.slug,
            'newsletter': self.message.newsletter.id,
            'articles-TOTAL_FORMS': 3,
            'articles-INITIAL_FORMS': 1,
            'articles-MIN_NUM_FORMS': 0,
            'articles-MAX_NUM_FORMS': 1000,
            'attachments-TOTAL_FORMS': 3,
            'attachments-INITIAL_FORMS': 1,
            'attachments-MIN_NUM_FORMS': 0,
            'attachments-MAX_NUM_FORMS': 1000,
            '_saveasnew': 'Save as new'
        }, follow=True)

        self.assertContains(response, "Message with this Slug and Newsletter already exists.")
Esempio n. 23
0
    def test_update_request_activate_form(self):
        """
        Test requesting a form for activating an update without activation
        code in the URL.
        """

        subscription = Subscription(newsletter=self.n,
                                    name=self.testname,
                                    email=self.testemail)
        subscription.save()

        activate_url = reverse('newsletter_update', kwargs={
            'newsletter_slug': self.n.slug,
            'action': 'update',
            'email': subscription.email
        })

        response = self.client.get(activate_url)

        # Make sure the form is there
        self.assertInContext(response, 'form', UpdateForm)
Esempio n. 24
0
    def test_update_request_activate_form(self):
        """
        Test requesting a form for activating an update without activation
        code in the URL.
        """

        subscription = Subscription(newsletter=self.n,
                                    name=self.testname,
                                    email=self.testemail)
        subscription.save()

        activate_url = reverse('newsletter_update', kwargs={
            'newsletter_slug': self.n.slug,
            'action': 'update',
            'email': subscription.email
        })

        response = self.client.get(activate_url)

        # Make sure the form is there
        self.assertInContext(response, 'form', UpdateForm)
Esempio n. 25
0
    def setUp(self):
        super(SubmissionAdminTests, self).setUp()

        self.add_url = reverse('admin:newsletter_submission_add')
        self.changelist_url = reverse('admin:newsletter_submission_changelist')
Esempio n. 26
0
    def setUp(self):
        self.newsletters = Newsletter.objects.all()

        self.list_url = reverse('newsletter_list')
Esempio n. 27
0
    def setUp(self):
        self.n = Newsletter(title='Test newsletter',
                            slug='test-newsletter',
                            sender='Test Sender',
                            email='*****@*****.**')
        self.n.save()
        try:
            self.n.site.set(get_default_sites())
        except AttributeError:  # Django < 1.10
            self.n.site = get_default_sites()

        self.subscribe_url = \
            reverse('newsletter_subscribe_request',
                    kwargs={'newsletter_slug': self.n.slug})
        self.subscribe_confirm_url = \
            reverse('newsletter_subscribe_confirm',
                    kwargs={'newsletter_slug': self.n.slug})
        self.subscribe_email_sent_url = \
            reverse('newsletter_activation_email_sent',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'subscribe'})
        self.subscribe_activated_url = \
            reverse('newsletter_action_activated',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'subscribe'})

        self.update_url = \
            reverse('newsletter_update_request',
                    kwargs={'newsletter_slug': self.n.slug})
        self.update_email_sent_url = \
            reverse('newsletter_activation_email_sent',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'update'})
        self.update_activated_url = \
            reverse('newsletter_action_activated',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'update'})

        self.unsubscribe_url = \
            reverse('newsletter_unsubscribe_request',
                    kwargs={'newsletter_slug': self.n.slug})
        self.unsubscribe_confirm_url = \
            reverse('newsletter_unsubscribe_confirm',
                    kwargs={'newsletter_slug': self.n.slug})
        self.unsubscribe_email_sent_url = \
            reverse('newsletter_activation_email_sent',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'unsubscribe'})
        self.unsubscribe_activated_url = \
            reverse('newsletter_action_activated',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'unsubscribe'})

        super(SubscribeTestCase, self).setUp()
Esempio n. 28
0
    def setUp(self):
        super(SubmissionAdminTests, self).setUp()

        self.add_url = reverse('admin:newsletter_submission_add')
        self.changelist_url = reverse('admin:newsletter_submission_changelist')
Esempio n. 29
0
    def setUp(self):
        self.n = Newsletter(title='Test newsletter',
                            slug='test-newsletter',
                            sender='Test Sender',
                            email='*****@*****.**')
        self.n.save()
        try:
            self.n.site.set(get_default_sites())
        except AttributeError:  # Django < 1.10
            self.n.site = get_default_sites()

        self.subscribe_url = \
            reverse('newsletter_subscribe_request',
                    kwargs={'newsletter_slug': self.n.slug})
        self.subscribe_confirm_url = \
            reverse('newsletter_subscribe_confirm',
                    kwargs={'newsletter_slug': self.n.slug})
        self.subscribe_email_sent_url = \
            reverse('newsletter_activation_email_sent',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'subscribe'})
        self.subscribe_activated_url = \
            reverse('newsletter_action_activated',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'subscribe'})

        self.update_url = \
            reverse('newsletter_update_request',
                    kwargs={'newsletter_slug': self.n.slug})
        self.update_email_sent_url = \
            reverse('newsletter_activation_email_sent',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'update'})
        self.update_activated_url = \
            reverse('newsletter_action_activated',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'update'})

        self.unsubscribe_url = \
            reverse('newsletter_unsubscribe_request',
                    kwargs={'newsletter_slug': self.n.slug})
        self.unsubscribe_confirm_url = \
            reverse('newsletter_unsubscribe_confirm',
                    kwargs={'newsletter_slug': self.n.slug})
        self.unsubscribe_email_sent_url = \
            reverse('newsletter_activation_email_sent',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'unsubscribe'})
        self.unsubscribe_activated_url = \
            reverse('newsletter_action_activated',
                    kwargs={'newsletter_slug': self.n.slug,
                            'action': 'unsubscribe'})

        super(SubscribeTestCase, self).setUp()
Esempio n. 30
0
    def setUp(self):
        self.newsletters = Newsletter.objects.all()

        self.list_url = reverse('newsletter_list')
Esempio n. 31
0
    def test_admin_import_get_form(self):
        """ Test Import form. """

        import_url = reverse('admin:newsletter_subscription_import')
        response = self.client.get(import_url)
        self.assertContains(response, "<h1>Import addresses</h1>")
Esempio n. 32
0
    def test_detail(self):
        for n in self.newsletters:

            detail_url = reverse(
                'newsletter_detail',
                kwargs={'newsletter_slug': n.slug}
            )

            subscribe_url = reverse(
                'newsletter_subscribe_request',
                kwargs={'newsletter_slug': n.slug}
            )

            unsubscribe_url = reverse(
                'newsletter_unsubscribe_request',
                kwargs={'newsletter_slug': n.slug}
            )

            update_url = reverse(
                'newsletter_update_request',
                kwargs={'newsletter_slug': n.slug}
            )

            archive_url = reverse(
                'newsletter_archive',
                kwargs={'newsletter_slug': n.slug}
            )

            # Check returned URL's exist and equal result of lookup methods
            self.assertTrue(subscribe_url)
            self.assertEqual(subscribe_url, n.subscribe_url())

            self.assertTrue(unsubscribe_url)
            self.assertEqual(unsubscribe_url, n.unsubscribe_url())

            self.assertTrue(update_url)
            self.assertEqual(update_url, n.update_url())

            self.assertTrue(archive_url)
            self.assertEqual(archive_url, n.archive_url())

            # Request detail URL and assert it links to all other URL's
            response = self.client.get(detail_url)

            if not n.visible:
                self.assertEqual(response.status_code, 404)
                continue

            self.assertContains(response, subscribe_url)
            self.assertContains(response, update_url)
            self.assertContains(response, unsubscribe_url)
            self.assertContains(response, archive_url)

            # Request each particular newsletter URL and assert
            # it returns a 200
            response = self.client.get(subscribe_url)
            self.assertContains(response, n.title, status_code=200)

            response = self.client.get(unsubscribe_url)
            self.assertContains(response, n.title, status_code=200)

            response = self.client.get(update_url)
            self.assertContains(response, n.title, status_code=200)

            response = self.client.get(archive_url)
            self.assertContains(response, n.title, status_code=200)
Esempio n. 33
0
    def test_admin_import_get_form(self):
        """ Test Import form. """

        import_url = reverse('admin:newsletter_subscription_import')
        response = self.client.get(import_url)
        self.assertContains(response, "<h1>Import addresses</h1>")