1. from django.apps import apps
    
  2. from django.contrib.sites.models import Site
    
  3. from django.test import TestCase
    
  4. from django.test.utils import modify_settings, override_settings
    
  5. 
    
  6. 
    
  7. @override_settings(
    
  8.     ROOT_URLCONF="flatpages_tests.urls",
    
  9.     SITE_ID=1,
    
  10. )
    
  11. @modify_settings(
    
  12.     INSTALLED_APPS={
    
  13.         "append": ["django.contrib.sitemaps", "django.contrib.flatpages"],
    
  14.     },
    
  15. )
    
  16. class FlatpagesSitemapTests(TestCase):
    
  17.     @classmethod
    
  18.     def setUpClass(cls):
    
  19.         super().setUpClass()
    
  20.         # This cleanup is necessary because contrib.sites cache
    
  21.         # makes tests interfere with each other, see #11505
    
  22.         Site.objects.clear_cache()
    
  23. 
    
  24.     @classmethod
    
  25.     def setUpTestData(cls):
    
  26.         Site = apps.get_model("sites.Site")
    
  27.         current_site = Site.objects.get_current()
    
  28.         current_site.flatpage_set.create(url="/foo/", title="foo")
    
  29.         current_site.flatpage_set.create(
    
  30.             url="/private-foo/", title="private foo", registration_required=True
    
  31.         )
    
  32. 
    
  33.     def test_flatpage_sitemap(self):
    
  34.         response = self.client.get("/flatpages/sitemap.xml")
    
  35.         self.assertIn(
    
  36.             b"<url><loc>http://example.com/flatpage_root/foo/</loc></url>",
    
  37.             response.getvalue(),
    
  38.         )
    
  39.         self.assertNotIn(
    
  40.             b"<url><loc>http://example.com/flatpage_root/private-foo/</loc></url>",
    
  41.             response.getvalue(),
    
  42.         )