mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from unittest import mock
 | |
| from urllib.parse import urlencode
 | |
| 
 | |
| from django.contrib.sitemaps import SitemapNotFound, _get_sitemap_full_url, ping_google
 | |
| from django.core.exceptions import ImproperlyConfigured
 | |
| from django.test import modify_settings, override_settings
 | |
| 
 | |
| from .base import SitemapTestsBase
 | |
| 
 | |
| 
 | |
| class PingGoogleTests(SitemapTestsBase):
 | |
|     @override_settings(ROOT_URLCONF="sitemaps_tests.urls.sitemap_only")
 | |
|     @mock.patch("django.contrib.sitemaps.urlopen")
 | |
|     def test_something(self, urlopen):
 | |
|         ping_google()
 | |
|         params = urlencode(
 | |
|             {"sitemap": "https://example.com/sitemap-without-entries/sitemap.xml"}
 | |
|         )
 | |
|         full_url = "https://www.google.com/webmasters/tools/ping?%s" % params
 | |
|         urlopen.assert_called_with(full_url)
 | |
| 
 | |
|     @override_settings(ROOT_URLCONF="sitemaps_tests.urls.sitemap_only")
 | |
|     def test_get_sitemap_full_url_global(self):
 | |
|         self.assertEqual(
 | |
|             _get_sitemap_full_url(None),
 | |
|             "https://example.com/sitemap-without-entries/sitemap.xml",
 | |
|         )
 | |
| 
 | |
|     @override_settings(ROOT_URLCONF="sitemaps_tests.urls.index_only")
 | |
|     def test_get_sitemap_full_url_index(self):
 | |
|         self.assertEqual(
 | |
|             _get_sitemap_full_url(None), "https://example.com/simple/index.xml"
 | |
|         )
 | |
| 
 | |
|     @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):
 | |
|         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",
 | |
|         )
 | |
| 
 | |
|     @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)
 |