def test_upgrade_link_spaces(self): """Test upgrade of a simple link with spaces in the path. """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <link target="_blank" url=" ./publication">Publication link</link> </p> </doc>""") self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertTrue(link.hasAttribute('reference')) self.assertFalse(link.hasAttribute('url')) self.assertFalse(link.hasAttribute('anchor')) reference_name = link.getAttribute('reference') reference_service = component.getUtility(IReferenceService) reference = reference_service.get_reference( editable, name=reference_name) self.assertEqual(reference.target, self.root.publication)
def test_upgrade_image(self): """Test upgrade of an image, regular without any link """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <image alignment="image-left" title="" width="600" image_title="Chocobo" rewritten_path="http://localhost/root/chocobo" target="_self" height="177" path="/root/chocobo" link_to_hires="0" link="" /> </p> </doc>""") self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement images = document_dom.getElementsByTagName('image') self.assertEqual(len(images), 1) image = images[0] self.assertTrue(image.hasAttribute('reference')) self.assertFalse(image.hasAttribute('path')) self.assertFalse(image.hasAttribute('rewritten_path')) self.assertFalse(image.hasAttribute('target')) self.assertFalse(image.hasAttribute('link')) self.assertFalse(image.hasAttribute('link_to_hires')) self.assertFalse(image.hasAttribute('silva_title')) self.assertTrue(image.hasAttribute('title')) self.assertEqual(image.getAttribute('title'), 'Chocobo') reference_name = image.getAttribute('reference') reference_service = component.getUtility(IReferenceService) reference = reference_service.get_reference( editable, name=reference_name) self.assertEqual(reference.target, self.root.chocobo)
def test_upgrade_image_broken_link(self): """Test to upgrade an missing image that contains a link to a different content in Silva. """ document = self.root.document editable = self.root.document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <image alignment="image-left" title="Pub" width="600" image_title="Nothing" rewritten_path="http://localhost/root/nothing" target="_blank" height="177" path="nothing" link_to_hires="0" link="../publication" /> </p> </doc>""") reference_service = component.getUtility(IReferenceService) self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement # The converter added a link to the publication links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertTrue(link.hasAttribute('reference')) self.assertTrue(link.hasAttribute('target')) self.assertEqual(link.getAttribute('target'), '_blank') self.assertTrue(link.hasAttribute('title')) self.assertEqual(link.getAttribute('title'), 'Pub') reference_name = link.getAttribute('reference') reference = reference_service.get_reference( editable, name=reference_name) self.assertEqual(reference.target, self.root.publication) # The image keeps its old path settings images = link.childNodes self.assertEqual(len(images), 1) image = images[0] self.assertEqual(image.nodeName, 'image') self.assertFalse(image.hasAttribute('reference')) self.assertTrue(image.hasAttribute('path')) self.assertEqual(image.getAttribute('path'), 'nothing') self.assertTrue(image.hasAttribute('rewritten_path')) self.assertEqual( image.getAttribute('rewritten_path'), 'http://localhost/root/nothing') self.assertFalse(image.hasAttribute('target')) self.assertFalse(image.hasAttribute('link')) self.assertFalse(image.hasAttribute('link_to_hires')) self.assertFalse(image.hasAttribute('silva_title')) self.assertTrue(image.hasAttribute('title')) self.assertEqual(image.getAttribute('title'), 'Nothing') # There is only one image in the document images = document_dom.getElementsByTagName('image') self.assertEqual(len(images), 1) self.assertEqual(image, images[0])
def test_upgrade_image_link_to_hires(self): """Test to upgrade an image that contains a link to a hires version of itself. """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <image alignment="image-left" title="Big Chocobo" width="600" image_title="Chocobo" rewritten_path="http://localhost/root/chocobo" target="_self" height="177" path="chocobo" link_to_hires="1" link="" /> </p> </doc>""") reference_service = component.getUtility(IReferenceService) self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement # The converter added a link to the hires chocobo links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertTrue(link.hasAttribute('reference')) self.assertTrue(link.hasAttribute('target')) self.assertEqual(link.getAttribute('target'), '_self') self.assertTrue(link.hasAttribute('title')) self.assertEqual(link.getAttribute('title'), 'Big Chocobo') reference_name = link.getAttribute('reference') reference = reference_service.get_reference( editable, name=reference_name) self.assertEqual(reference.target, self.root.chocobo) # The image points to the chocobo as well images = link.childNodes self.assertEqual(len(images), 1) image = images[0] self.assertEqual(image.nodeName, 'image') self.assertTrue(image.hasAttribute('reference')) self.assertFalse(image.hasAttribute('path')) self.assertFalse(image.hasAttribute('rewritten_path')) self.assertFalse(image.hasAttribute('target')) self.assertFalse(image.hasAttribute('link')) self.assertFalse(image.hasAttribute('link_to_hires')) self.assertFalse(image.hasAttribute('silva_title')) self.assertTrue(image.hasAttribute('title')) self.assertEqual(image.getAttribute('title'), 'Chocobo') reference_name = image.getAttribute('reference') reference = reference_service.get_reference( editable, name=reference_name) self.assertEqual(reference.target, self.root.chocobo) # There is only one image in the document images = document_dom.getElementsByTagName('image') self.assertEqual(len(images), 1) self.assertEqual(image, images[0])
def test_upgrade_image_link_broken(self): """Test to upgrade an image that contains a link to a different missing content in Silva. This would be the same for link with external URLs. """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <image alignment="image-left" title="Pub" width="600" image_title="Chocobo" rewritten_path="http://localhost/root/chocobo" target="_blank" height="177" path="chocobo" link_to_hires="0" link="foo_bar" /> </p> </doc>""") reference_service = component.getUtility(IReferenceService) self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement # The converter added a link to the foo_bar URL. links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertFalse(link.hasAttribute('reference')) self.assertTrue(link.hasAttribute('url')) self.assertEqual(link.getAttribute('url'), 'foo_bar') self.assertTrue(link.hasAttribute('target')) self.assertEqual(link.getAttribute('target'), '_blank') self.assertTrue(link.hasAttribute('title')) self.assertEqual(link.getAttribute('title'), 'Pub') # The image points to the chocobo images = link.childNodes self.assertEqual(len(images), 1) image = images[0] self.assertEqual(image.nodeName, 'image') self.assertTrue(image.hasAttribute('reference')) self.assertFalse(image.hasAttribute('path')) self.assertFalse(image.hasAttribute('rewritten_path')) self.assertFalse(image.hasAttribute('target')) self.assertFalse(image.hasAttribute('link')) self.assertFalse(image.hasAttribute('link_to_hires')) self.assertFalse(image.hasAttribute('silva_title')) self.assertTrue(image.hasAttribute('title')) self.assertEqual(image.getAttribute('title'), 'Chocobo') reference_name = image.getAttribute('reference') reference = reference_service.get_reference( editable, name=reference_name) self.assertEqual(reference.target, self.root.chocobo) # There is only one image in the document images = document_dom.getElementsByTagName('image') self.assertEqual(len(images), 1) self.assertEqual(image, images[0])
def test_upgrade_link_broken(self): """Test upgrade of a link which is an external URL """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <link target="_blank" url="./../publication/inexisting_document">Document link</link> </p> </doc>""") self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertFalse(link.hasAttribute('reference')) self.assertTrue(link.hasAttribute('url')) url = link.getAttribute('url') self.assertEqual(url, './../publication/inexisting_document')
def test_upgrade_link_invalid(self): """Test upgrade of a simple link with a completely invalid URL as a link. """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', u"""<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <link target="_blank" url="Aléatoire">On me link</link> </p> </doc>""".encode('utf-8')) self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertTrue(link.hasAttribute('url')) self.assertEqual(link.getAttribute('url'), u'Aléatoire') self.assertFalse(link.hasAttribute('anchor')) self.assertFalse(link.hasAttribute('reference'))
def test_upgrade_link_only_anchor_spaces(self): """Test upgrade of a link that is only to an anchor on the same page """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <link target="_blank" url=" #on_me ">On me link</link> </p> </doc>""") self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertFalse(link.hasAttribute('reference')) self.assertFalse(link.hasAttribute('url')) self.assertTrue(link.hasAttribute('anchor')) self.assertEqual(link.getAttribute('anchor'), 'on_me')
def test_upgrade_link_too_high(self): """Test upgrade of a link that have an invalid relative path to something not possible (like too many ..). """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <link target="_blank" url="./../../../MANAGE">ME HACKER</link> </p> </doc>""") self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertFalse(link.hasAttribute('reference')) self.assertTrue(link.hasAttribute('url')) self.assertEquals(link.getAttribute('url'), './../../../MANAGE') self.assertFalse(link.hasAttribute('anchor'))
def test_upgrade_link_not_silva_object(self): """Test upgrade of a link that does not point to a Silva object, like for instance to the edit interface. """ document = self.root.document editable = document.get_editable() editable.content = ParsedXML( 'content', """<?xml version="1.0" encoding="utf-8"?> <doc> <p type="normal"> <link target="_blank" url="./edit">SMI</link> </p> </doc>""") self.assertEqual(document_upgrader.upgrade(document), document) document_dom = editable.content.documentElement links = document_dom.getElementsByTagName('link') self.assertEqual(len(links), 1) link = links[0] self.assertFalse(link.hasAttribute('reference')) self.assertTrue(link.hasAttribute('url')) self.assertEquals(link.getAttribute('url'), './edit') self.assertFalse(link.hasAttribute('anchor'))