from django.apps import apps from django.contrib.sites.models import Site from django.test import TestCase from django.test.utils import modify_settings, override_settings @override_settings( ROOT_URLCONF="flatpages_tests.urls", SITE_ID=1, ) @modify_settings( INSTALLED_APPS={ "append": ["django.contrib.sitemaps", "django.contrib.flatpages"], }, ) class FlatpagesSitemapTests(TestCase): @classmethod def setUpClass(cls): super().setUpClass() # This cleanup is necessary because contrib.sites cache # makes tests interfere with each other, see #11505 Site.objects.clear_cache() @classmethod def setUpTestData(cls): Site = apps.get_model("sites.Site") current_site = Site.objects.get_current() current_site.flatpage_set.create(url="/foo/", title="foo") current_site.flatpage_set.create( url="/private-foo/", title="private foo", registration_required=True ) def test_flatpage_sitemap(self): response = self.client.get("/flatpages/sitemap.xml") self.assertIn( b"http://example.com/flatpage_root/foo/", response.getvalue(), ) self.assertNotIn( b"http://example.com/flatpage_root/private-foo/", response.getvalue(), )