def test_zone_url_ends_with_slash(self): """Ensure urls only rewrite with a '/' at the end of url_root bug 1189596 """ zone_url_root = "Firéfox" zone_root_content = "This is the Firéfox zone" root_rev = revision( title="Firéfox", slug="Mozilla/Firéfox", content=zone_root_content, is_approved=True, save=True ) root_doc = root_rev.document root_zone = DocumentZone(document=root_doc) root_zone.url_root = zone_url_root root_zone.save() none_zone_rev = revision( title="Firéfox for iOS", slug="Mozilla/Firéfox_for_iOS", content="Page outside zone with same prefix", is_approved=True, save=True, ) non_zone_doc = none_zone_rev.document non_zone_doc.save() url = "/en-US/docs/%s" % non_zone_doc.slug response = self.client.get(url, follow=False) eq_(200, response.status_code)
def test_zone_url_ends_with_slash(self): """Ensure urls only rewrite with a '/' at the end of url_root bug 1189596 """ zone_url_root = 'Firéfox' zone_root_content = 'This is the Firéfox zone' root_rev = revision(title='Firéfox', slug='Mozilla/Firéfox', content=zone_root_content, is_approved=True, save=True) root_doc = root_rev.document root_zone = DocumentZone(document=root_doc) root_zone.url_root = zone_url_root root_zone.save() none_zone_rev = revision(title='Firéfox for iOS', slug='Mozilla/Firéfox_for_iOS', content='Page outside zone with same prefix', is_approved=True, save=True) non_zone_doc = none_zone_rev.document non_zone_doc.save() url = '/en-US/docs/{0!s}'.format(non_zone_doc.slug) response = self.client.get(url, follow=False) eq_(200, response.status_code)
def setUp(self): super(DocumentZoneTests, self).setUp() self.root_links_content = """ <p>Links content</p> """ self.root_content = """ <h4 id="links">Links</h4> %s """ % (self.root_links_content) root_rev = revision(title='ZoneRoot', slug='ZoneRoot', content=self.root_content, is_approved=True, save=True) self.root_doc = root_rev.document self.root_doc.rendered_html = self.root_content self.root_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.save() sub_rev = revision(title='SubPage', slug='SubPage', content='This is a subpage', is_approved=True, save=True) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.root_doc self.sub_doc.rendered_html = sub_rev.content self.sub_doc.save() self.sub_sub_links_content = """ <p>Sub-page links content</p> """ self.sub_sub_content = """ <h4 id="links">Links</h4> %s """ % (self.sub_sub_links_content) sub_sub_rev = revision(title='SubSubPage', slug='SubSubPage', content='This is a subpage', is_approved=True, save=True) self.sub_sub_doc = sub_sub_rev.document self.sub_sub_doc.parent_topic = self.sub_doc self.sub_sub_doc.rendered_html = self.sub_sub_content self.sub_sub_doc.save() other_rev = revision(title='otherPage', slug='otherPage', content='This is an other page', is_approved=True, save=True) self.other_doc = other_rev.document self.other_doc.save() memcache.clear()
def setUp(self): super(DocumentZoneMiddlewareTestCase, self).setUp() memcache.clear() self.zone_root = "ExtraWiki" self.zone_root_content = "This is the Zone Root" root_rev = revision( title="ZoneRoot", slug="Zones/Root", content=self.zone_root_content, is_approved=True, save=True ) self.root_doc = root_rev.document middle_rev = revision( title="middlePage", slug="Zones/Root/Middle", content="This is a middlepage", is_approved=True, save=True ) self.middle_doc = middle_rev.document self.middle_doc.parent_topic = self.root_doc self.middle_doc.save() sub_rev = revision( title="SubPage", slug="Zones/Root/Middle/SubPage", content="This is a subpage", is_approved=True, save=True ) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.middle_doc self.sub_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.url_root = self.zone_root self.root_zone.save() self.middle_zone = DocumentZone(document=self.middle_doc) self.middle_zone.save() other_rev = revision( title="otherPage", slug="otherPage", content="This is an otherpage", is_approved=True, save=True ) self.other_doc = other_rev.document self.other_doc.save() self.other_zone = DocumentZone(document=self.other_doc) self.other_zone.url_root = "" self.other_zone.save() # One more doc, just to be sure we can have multiple blank url_roots onemore_rev = revision( title="onemorePage", slug="onemorePage", content="This is an onemorepage", is_approved=True, save=True ) self.onemore_doc = onemore_rev.document self.onemore_doc.save() self.onemore_zone = DocumentZone(document=self.onemore_doc) self.onemore_zone.url_root = "" self.onemore_zone.save()
def setUp(self): super(DocumentZoneMiddlewareTestCase, self).setUp() s_cache = get_cache(SECONDARY_CACHE_ALIAS) s_cache.clear() self.zone_root = 'ExtraWiki' self.zone_root_content = 'This is the Zone Root' root_rev = revision(title='ZoneRoot', slug='Zones/Root', content=self.zone_root_content, is_approved=True, save=True) self.root_doc = root_rev.document middle_rev = revision(title='middlePage', slug='Zones/Root/Middle', content='This is a middlepage', is_approved=True, save=True) self.middle_doc = middle_rev.document self.middle_doc.parent_topic = self.root_doc self.middle_doc.save() sub_rev = revision(title='SubPage', slug='Zones/Root/Middle/SubPage', content='This is a subpage', is_approved=True, save=True) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.middle_doc self.sub_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.url_root = self.zone_root self.root_zone.save() self.middle_zone = DocumentZone(document=self.middle_doc) self.middle_zone.save() other_rev = revision(title='otherPage', slug='otherPage', content='This is an otherpage', is_approved=True, save=True) self.other_doc = other_rev.document self.other_doc.save() self.other_zone = DocumentZone(document=self.other_doc) self.other_zone.url_root = '' self.other_zone.save() # One more doc, just to be sure we can have multiple blank url_roots onemore_rev = revision(title='onemorePage', slug='onemorePage', content='This is an onemorepage', is_approved=True, save=True) self.onemore_doc = onemore_rev.document self.onemore_doc.save() self.onemore_zone = DocumentZone(document=self.onemore_doc) self.onemore_zone.url_root = '' self.onemore_zone.save()
class DocumentZoneMiddlewareTestCase(UserTestCase, WikiTestCase): def setUp(self): super(DocumentZoneMiddlewareTestCase, self).setUp() s_cache = get_cache(SECONDARY_CACHE_ALIAS) s_cache.clear() self.zone_root = 'ExtraWiki' self.zone_root_content = 'This is the Zone Root' root_rev = revision(title='ZoneRoot', slug='Zones/Root', content=self.zone_root_content, is_approved=True, save=True) self.root_doc = root_rev.document middle_rev = revision(title='middlePage', slug='Zones/Root/Middle', content='This is a middlepage', is_approved=True, save=True) self.middle_doc = middle_rev.document self.middle_doc.parent_topic = self.root_doc self.middle_doc.save() sub_rev = revision(title='SubPage', slug='Zones/Root/Middle/SubPage', content='This is a subpage', is_approved=True, save=True) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.middle_doc self.sub_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.url_root = self.zone_root self.root_zone.save() self.middle_zone = DocumentZone(document=self.middle_doc) self.middle_zone.save() other_rev = revision(title='otherPage', slug='otherPage', content='This is an otherpage', is_approved=True, save=True) self.other_doc = other_rev.document self.other_doc.save() self.other_zone = DocumentZone(document=self.other_doc) self.other_zone.url_root = '' self.other_zone.save() # One more doc, just to be sure we can have multiple blank url_roots onemore_rev = revision(title='onemorePage', slug='onemorePage', content='This is an onemorepage', is_approved=True, save=True) self.onemore_doc = onemore_rev.document self.onemore_doc.save() self.onemore_zone = DocumentZone(document=self.onemore_doc) self.onemore_zone.url_root = '' self.onemore_zone.save() def test_url_root_internal_redirect(self): """Ensure document zone with URL root results in internal redirect""" url = '/en-US/%s?raw' % self.zone_root response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.zone_root_content, response.content) url = '/en-US/%s/Middle/SubPage?raw' % self.zone_root response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.sub_doc.html, response.content) self.root_zone.url_root = 'NewRoot' self.root_zone.save() url = '/en-US/%s/Middle/SubPage?raw' % 'NewRoot' response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.sub_doc.html, response.content) def test_actual_wiki_url_redirect(self): """Ensure a request for the 'real' path to a document results in a redirect to the internal redirect path""" url = '/en-US/docs/%s?raw=1' % self.middle_doc.slug response = self.client.get(url, follow=False) eq_(302, response.status_code) eq_('http://testserver/en-US/ExtraWiki/Middle?raw=1', response['Location']) self.root_zone.url_root = 'NewRoot' self.root_zone.save() url = '/en-US/docs/%s?raw=1' % self.middle_doc.slug response = self.client.get(url, follow=False) eq_(302, response.status_code) eq_('http://testserver/en-US/NewRoot/Middle?raw=1', response['Location']) def test_blank_url_root(self): """Ensure a blank url_root does not trigger URL remap""" url = '/en-US/docs/%s?raw=1' % self.other_doc.slug response = self.client.get(url, follow=False) eq_(200, response.status_code) def test_reverse_rewrite(self): """Ensure reverse() URLs are remapped""" # HACK: This actually exercises code in apps/sumo/urlresolvers.py, but # lives here to share fixtures and such with other wiki URL remap code. url = reverse('wiki.document', args=[self.other_doc.slug], locale='en-US') eq_('/en-US/docs/otherPage', url) url = reverse('wiki.edit_document', args=[self.other_doc.slug], locale='en-US') eq_('/en-US/docs/otherPage$edit', url) url = reverse('wiki.document', args=[self.middle_doc.slug], locale='en-US') eq_('/en-US/ExtraWiki/Middle', url) url = reverse('wiki.edit_document', args=[self.middle_doc.slug], locale='en-US') eq_('/en-US/ExtraWiki/Middle$edit', url) url = reverse('wiki.edit_document', args=[self.middle_doc.slug]) eq_('/ExtraWiki/Middle$edit', url) self.root_zone.url_root = 'NewRoot' self.root_zone.save() url = reverse('wiki.edit_document', args=[self.middle_doc.slug]) eq_('/NewRoot/Middle$edit', url)
class DocumentZoneTests(TestCaseBase): """Tests for DocumentZone helpers""" fixtures = ['test_users.json'] def setUp(self): super(DocumentZoneTests, self).setUp() self.root_links_content = """ <p>Links content</p> """ self.root_content = """ <h4 id="links">Links</h4> %s """ % (self.root_links_content) root_rev = revision(title='ZoneRoot', slug='ZoneRoot', content=self.root_content, is_approved=True, save=True) self.root_doc = root_rev.document self.root_doc.rendered_html = self.root_content self.root_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.save() sub_rev = revision(title='SubPage', slug='SubPage', content='This is a subpage', is_approved=True, save=True) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.root_doc self.sub_doc.rendered_html = sub_rev.content self.sub_doc.save() self.sub_sub_links_content = """ <p>Sub-page links content</p> """ self.sub_sub_content = """ <h4 id="links">Links</h4> %s """ % (self.sub_sub_links_content) sub_sub_rev = revision(title='SubSubPage', slug='SubSubPage', content='This is a subpage', is_approved=True, save=True) self.sub_sub_doc = sub_sub_rev.document self.sub_sub_doc.parent_topic = self.sub_doc self.sub_sub_doc.rendered_html = self.sub_sub_content self.sub_sub_doc.save() other_rev = revision(title='otherPage', slug='otherPage', content='This is an other page', is_approved=True, save=True) self.other_doc = other_rev.document self.other_doc.save() def test_document_zone_links(self): admin = User.objects.filter(is_superuser=True)[0] random = User.objects.filter(is_superuser=False)[0] cases = [ (admin, self.root_doc, False, True), (random, self.root_doc, False, False), (admin, self.sub_doc, True, True), (random, self.sub_doc, False, False), (admin, self.other_doc, True, False), (random, self.other_doc, False, False), ] for (user, doc, add, change) in cases: result_links = document_zone_management_links(user, doc) eq_(add, (result_links['add'] is not None)) eq_(change, (result_links['change'] is not None))
class DocumentZoneMiddlewareTestCase(UserTestCase, WikiTestCase): def setUp(self): super(DocumentZoneMiddlewareTestCase, self).setUp() memcache.clear() self.zone_root = 'ExtraWiki' self.zone_root_content = 'This is the Zone Root' root_rev = revision(title='ZoneRoot', slug='Zones/Root', content=self.zone_root_content, is_approved=True, save=True) self.root_doc = root_rev.document middle_rev = revision(title='middlePage', slug='Zones/Root/Middle', content='This is a middlepage', is_approved=True, save=True) self.middle_doc = middle_rev.document self.middle_doc.parent_topic = self.root_doc self.middle_doc.save() sub_rev = revision(title='SubPage', slug='Zones/Root/Middle/SubPage', content='This is a subpage', is_approved=True, save=True) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.middle_doc self.sub_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.url_root = self.zone_root self.root_zone.save() self.middle_zone = DocumentZone(document=self.middle_doc) self.middle_zone.save() other_rev = revision(title='otherPage', slug='otherPage', content='This is an otherpage', is_approved=True, save=True) self.other_doc = other_rev.document self.other_doc.save() self.other_zone = DocumentZone(document=self.other_doc) self.other_zone.url_root = '' self.other_zone.save() # One more doc, just to be sure we can have multiple blank url_roots onemore_rev = revision(title='onemorePage', slug='onemorePage', content='This is an onemorepage', is_approved=True, save=True) self.onemore_doc = onemore_rev.document self.onemore_doc.save() self.onemore_zone = DocumentZone(document=self.onemore_doc) self.onemore_zone.url_root = '' self.onemore_zone.save() def test_url_root_internal_redirect(self): """Ensure document zone with URL root results in internal redirect""" url = '/en-US/%s?raw' % self.zone_root response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.zone_root_content, response.content) url = '/en-US/%s/Middle/SubPage?raw' % self.zone_root response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.sub_doc.html, response.content) self.root_zone.url_root = 'NewRoot' self.root_zone.save() url = '/en-US/%s/Middle/SubPage?raw' % 'NewRoot' response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.sub_doc.html, response.content) def test_actual_wiki_url_redirect(self): """ Ensure a request for the 'real' path to a document results in a redirect to the internal redirect path """ url = '/en-US/docs/%s?raw=1' % self.middle_doc.slug response = self.client.get(url, follow=False) eq_(302, response.status_code) eq_('http://testserver/en-US/ExtraWiki/Middle?raw=1', response['Location']) self.root_zone.url_root = 'NewRoot' self.root_zone.save() url = '/en-US/docs/%s?raw=1' % self.middle_doc.slug response = self.client.get(url, follow=False) eq_(302, response.status_code) eq_('http://testserver/en-US/NewRoot/Middle?raw=1', response['Location']) def test_blank_url_root(self): """Ensure a blank url_root does not trigger URL remap""" url = '/en-US/docs/%s?raw=1' % self.other_doc.slug response = self.client.get(url, follow=False) eq_(200, response.status_code) @attr('bug1189596') def test_zone_url_ends_with_slash(self): """Ensure urls only rewrite with a '/' at the end of url_root""" zone_url_root = 'Firéfox' zone_root_content = 'This is the Firéfox zone' root_rev = revision(title='Firéfox', slug='Mozilla/Firéfox', content=zone_root_content, is_approved=True, save=True) root_doc = root_rev.document root_zone = DocumentZone(document=root_doc) root_zone.url_root = zone_url_root root_zone.save() none_zone_rev = revision(title='Firéfox for iOS', slug='Mozilla/Firéfox_for_iOS', content='Page outside zone with same prefix', is_approved=True, save=True) non_zone_doc = none_zone_rev.document non_zone_doc.save() url = '/en-US/docs/%s' % non_zone_doc.slug response = self.client.get(url, follow=False) eq_(200, response.status_code)
class DocumentZoneTests(UserTestCase, WikiTestCase): """Tests for DocumentZone helpers""" def setUp(self): super(DocumentZoneTests, self).setUp() self.root_links_content = """ <p>Links content</p> """ self.root_content = """ <h4 id="links">Links</h4> %s """ % (self.root_links_content) root_rev = revision(title='ZoneRoot', slug='ZoneRoot', content=self.root_content, is_approved=True, save=True) self.root_doc = root_rev.document self.root_doc.rendered_html = self.root_content self.root_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.save() sub_rev = revision(title='SubPage', slug='SubPage', content='This is a subpage', is_approved=True, save=True) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.root_doc self.sub_doc.rendered_html = sub_rev.content self.sub_doc.save() self.sub_sub_links_content = """ <p>Sub-page links content</p> """ self.sub_sub_content = """ <h4 id="links">Links</h4> %s """ % (self.sub_sub_links_content) sub_sub_rev = revision(title='SubSubPage', slug='SubSubPage', content='This is a subpage', is_approved=True, save=True) self.sub_sub_doc = sub_sub_rev.document self.sub_sub_doc.parent_topic = self.sub_doc self.sub_sub_doc.rendered_html = self.sub_sub_content self.sub_sub_doc.save() other_rev = revision(title='otherPage', slug='otherPage', content='This is an other page', is_approved=True, save=True) self.other_doc = other_rev.document self.other_doc.save() def test_document_zone_links(self): admin = User.objects.filter(is_superuser=True)[0] random = User.objects.filter(is_superuser=False)[0] cases = [ (admin, self.root_doc, False, True), (random, self.root_doc, False, False), (admin, self.sub_doc, True, True), (random, self.sub_doc, False, False), (admin, self.other_doc, True, False), (random, self.other_doc, False, False), ] for (user, doc, add, change) in cases: result_links = document_zone_management_links(user, doc) eq_(add, (result_links['add'] is not None)) eq_(change, (result_links['change'] is not None))
class DocumentZoneMiddlewareTestCase(UserTestCase, WikiTestCase): def setUp(self): super(DocumentZoneMiddlewareTestCase, self).setUp() memcache.clear() self.zone_root = "ExtraWiki" self.zone_root_content = "This is the Zone Root" root_rev = revision( title="ZoneRoot", slug="Zones/Root", content=self.zone_root_content, is_approved=True, save=True ) self.root_doc = root_rev.document middle_rev = revision( title="middlePage", slug="Zones/Root/Middle", content="This is a middlepage", is_approved=True, save=True ) self.middle_doc = middle_rev.document self.middle_doc.parent_topic = self.root_doc self.middle_doc.save() sub_rev = revision( title="SubPage", slug="Zones/Root/Middle/SubPage", content="This is a subpage", is_approved=True, save=True ) self.sub_doc = sub_rev.document self.sub_doc.parent_topic = self.middle_doc self.sub_doc.save() self.root_zone = DocumentZone(document=self.root_doc) self.root_zone.url_root = self.zone_root self.root_zone.save() self.middle_zone = DocumentZone(document=self.middle_doc) self.middle_zone.save() other_rev = revision( title="otherPage", slug="otherPage", content="This is an otherpage", is_approved=True, save=True ) self.other_doc = other_rev.document self.other_doc.save() self.other_zone = DocumentZone(document=self.other_doc) self.other_zone.url_root = "" self.other_zone.save() # One more doc, just to be sure we can have multiple blank url_roots onemore_rev = revision( title="onemorePage", slug="onemorePage", content="This is an onemorepage", is_approved=True, save=True ) self.onemore_doc = onemore_rev.document self.onemore_doc.save() self.onemore_zone = DocumentZone(document=self.onemore_doc) self.onemore_zone.url_root = "" self.onemore_zone.save() def test_url_root_internal_redirect(self): """Ensure document zone with URL root results in internal redirect""" url = "/en-US/%s?raw" % self.zone_root response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.zone_root_content, response.content) url = "/en-US/%s/Middle/SubPage?raw" % self.zone_root response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.sub_doc.html, response.content) self.root_zone.url_root = "NewRoot" self.root_zone.save() url = "/en-US/%s/Middle/SubPage?raw" % "NewRoot" response = self.client.get(url, follow=False) eq_(200, response.status_code) eq_(self.sub_doc.html, response.content) def test_actual_wiki_url_redirect(self): """ Ensure a request for the 'real' path to a document results in a redirect to the internal redirect path """ url = "/en-US/docs/%s?raw=1" % self.middle_doc.slug response = self.client.get(url, follow=False) eq_(302, response.status_code) eq_("http://testserver/en-US/ExtraWiki/Middle?raw=1", response["Location"]) self.root_zone.url_root = "NewRoot" self.root_zone.save() url = "/en-US/docs/%s?raw=1" % self.middle_doc.slug response = self.client.get(url, follow=False) eq_(302, response.status_code) eq_("http://testserver/en-US/NewRoot/Middle?raw=1", response["Location"]) def test_blank_url_root(self): """Ensure a blank url_root does not trigger URL remap""" url = "/en-US/docs/%s?raw=1" % self.other_doc.slug response = self.client.get(url, follow=False) eq_(200, response.status_code)