test_utils.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from unittest import mock
  2. from urllib.parse import urlencode
  3. from django.contrib.sitemaps import (
  4. SitemapNotFound, _get_sitemap_full_url, ping_google,
  5. )
  6. from django.core.exceptions import ImproperlyConfigured
  7. from django.test import modify_settings, override_settings
  8. from .base import SitemapTestsBase
  9. class PingGoogleTests(SitemapTestsBase):
  10. @mock.patch('django.contrib.sitemaps.urlopen')
  11. def test_something(self, urlopen):
  12. ping_google()
  13. params = urlencode({'sitemap': 'https://example.com/sitemap-without-entries/sitemap.xml'})
  14. full_url = 'https://www.google.com/webmasters/tools/ping?%s' % params
  15. urlopen.assert_called_with(full_url)
  16. def test_get_sitemap_full_url_global(self):
  17. self.assertEqual(_get_sitemap_full_url(None), 'https://example.com/sitemap-without-entries/sitemap.xml')
  18. @override_settings(ROOT_URLCONF='sitemaps_tests.urls.index_only')
  19. def test_get_sitemap_full_url_index(self):
  20. self.assertEqual(_get_sitemap_full_url(None), 'https://example.com/simple/index.xml')
  21. @override_settings(ROOT_URLCONF='sitemaps_tests.urls.empty')
  22. def test_get_sitemap_full_url_not_detected(self):
  23. msg = "You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected."
  24. with self.assertRaisesMessage(SitemapNotFound, msg):
  25. _get_sitemap_full_url(None)
  26. def test_get_sitemap_full_url_exact_url(self):
  27. self.assertEqual(_get_sitemap_full_url('/foo.xml'), 'https://example.com/foo.xml')
  28. def test_get_sitemap_full_url_insecure(self):
  29. self.assertEqual(
  30. _get_sitemap_full_url('/foo.xml', sitemap_uses_https=False),
  31. 'http://example.com/foo.xml'
  32. )
  33. @modify_settings(INSTALLED_APPS={'remove': 'django.contrib.sites'})
  34. def test_get_sitemap_full_url_no_sites(self):
  35. msg = "ping_google requires django.contrib.sites, which isn't installed."
  36. with self.assertRaisesMessage(ImproperlyConfigured, msg):
  37. _get_sitemap_full_url(None)