2017-01-19 18:16:04 +01:00
|
|
|
from unittest import mock
|
2017-01-07 12:11:46 +01:00
|
|
|
from urllib.parse import urlencode
|
|
|
|
|
2016-11-22 12:56:22 +01:00
|
|
|
from django.contrib.sitemaps import (
|
|
|
|
SitemapNotFound, _get_sitemap_full_url, ping_google,
|
|
|
|
)
|
|
|
|
from django.core.exceptions import ImproperlyConfigured
|
2017-01-19 18:16:04 +01:00
|
|
|
from django.test import modify_settings, override_settings
|
2016-11-22 12:56:22 +01:00
|
|
|
|
|
|
|
from .base import SitemapTestsBase
|
|
|
|
|
|
|
|
|
|
|
|
class PingGoogleTests(SitemapTestsBase):
|
|
|
|
|
|
|
|
@mock.patch('django.contrib.sitemaps.urlopen')
|
|
|
|
def test_something(self, urlopen):
|
|
|
|
ping_google()
|
2019-01-10 11:00:00 +01:00
|
|
|
params = urlencode({'sitemap': 'https://example.com/sitemap-without-entries/sitemap.xml'})
|
2016-11-22 12:56:22 +01:00
|
|
|
full_url = 'https://www.google.com/webmasters/tools/ping?%s' % params
|
|
|
|
urlopen.assert_called_with(full_url)
|
|
|
|
|
|
|
|
def test_get_sitemap_full_url_global(self):
|
2019-01-10 11:00:00 +01:00
|
|
|
self.assertEqual(_get_sitemap_full_url(None), 'https://example.com/sitemap-without-entries/sitemap.xml')
|
2016-11-22 12:56:22 +01:00
|
|
|
|
|
|
|
@override_settings(ROOT_URLCONF='sitemaps_tests.urls.index_only')
|
|
|
|
def test_get_sitemap_full_url_index(self):
|
2019-01-10 11:00:00 +01:00
|
|
|
self.assertEqual(_get_sitemap_full_url(None), 'https://example.com/simple/index.xml')
|
2016-11-22 12:56:22 +01:00
|
|
|
|
|
|
|
@override_settings(ROOT_URLCONF='sitemaps_tests.urls.empty')
|
|
|
|
def test_get_sitemap_full_url_not_detected(self):
|
|
|
|
msg = "You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected."
|
|
|
|
with self.assertRaisesMessage(SitemapNotFound, msg):
|
|
|
|
_get_sitemap_full_url(None)
|
|
|
|
|
|
|
|
def test_get_sitemap_full_url_exact_url(self):
|
2019-01-10 11:00:00 +01:00
|
|
|
self.assertEqual(_get_sitemap_full_url('/foo.xml'), 'https://example.com/foo.xml')
|
|
|
|
|
|
|
|
def test_get_sitemap_full_url_insecure(self):
|
|
|
|
self.assertEqual(
|
|
|
|
_get_sitemap_full_url('/foo.xml', sitemap_uses_https=False),
|
|
|
|
'http://example.com/foo.xml'
|
|
|
|
)
|
2016-11-22 12:56:22 +01:00
|
|
|
|
|
|
|
@modify_settings(INSTALLED_APPS={'remove': 'django.contrib.sites'})
|
|
|
|
def test_get_sitemap_full_url_no_sites(self):
|
|
|
|
msg = "ping_google requires django.contrib.sites, which isn't installed."
|
|
|
|
with self.assertRaisesMessage(ImproperlyConfigured, msg):
|
|
|
|
_get_sitemap_full_url(None)
|