def setUp(self): params = {'title': 'My entry', 'content': 'My content', 'tags': 'zinnia, test', 'slug': 'my-entry'} self.entry = Entry.objects.create(**params) self.pinger = ExternalUrlsPinger(self.entry, start_now=False)
def ping_external_urls_handler(sender, **kwargs): """Ping Externals URLS when an entry is saved""" entry = kwargs['instance'] if entry.is_visible and settings.SAVE_PING_EXTERNAL_URLS: from zinnia.ping import ExternalUrlsPinger ExternalUrlsPinger(entry)
def test_find_external_urls(self): r = URLRessources() pinger = ExternalUrlsPinger(self.entry) external_urls = pinger.find_external_urls(self.entry) self.assertEqual(external_urls, []) self.entry.content = """ <p>This is a <a href="http://fantomas.willbreak.it/">link</a> to a site.</p> <p>This is a <a href="%s/blog/">link</a> within my site.</p> <p>This is a <a href="/blog/">relative link</a> within my site.</p> """ % r.site_url self.entry.save() external_urls = pinger.find_external_urls(self.entry) self.assertEqual(external_urls, ['http://fantomas.willbreak.it/'])
def test_is_external_url(self): r = URLRessources() pinger = ExternalUrlsPinger(self.entry) self.assertEqual(pinger.is_external_url( 'http://example.com/', 'http://google.com/'), True) self.assertEqual(pinger.is_external_url( 'http://example.com/toto/', 'http://google.com/titi/'), True) self.assertEqual(pinger.is_external_url( 'http://example.com/blog/', 'http://example.com/page/'), False) self.assertEqual(pinger.is_external_url( '%s/blog/' % r.site_url, r.site_url), False) self.assertEqual(pinger.is_external_url( 'http://google.com/', r.site_url), True) self.assertEqual(pinger.is_external_url( '/blog/', r.site_url), False)
def test_run(self): import zinnia.ping self.original_urlopen = zinnia.ping.urlopen zinnia.ping.urlopen = self.fake_urlopen self.entry.content = """ <a href="http://localhost/">Localhost</a> <a href="http://example.com/">Example</a> <a href="http://error">Error</a> <a href="http://www.google.co.uk/images/nav_logo72.png">Img</a> """ pinger = ExternalUrlsPinger(self.entry) pinger.run() self.assertEqual(pinger.results, [ 'http://localhost/ cannot be pinged.']) zinnia.ping.urlopen = self.original_urlopen
def test_find_pingback_urls(self): # Set up a stub around urlopen import zinnia.ping self.original_urlopen = zinnia.ping.urlopen zinnia.ping.urlopen = self.fake_urlopen pinger = ExternalUrlsPinger(self.entry) urls = ['http://localhost/', 'http://example.com/', 'http://error', 'http://www.google.co.uk/images/nav_logo72.png'] self.assertEqual( pinger.find_pingback_urls(urls), {'http://localhost/': 'http://localhost/xmlrpc/', 'http://example.com/': 'http://example.com/xmlrpc.php'}) # Remove stub zinnia.ping.urlopen = self.original_urlopen
def test_find_pingback_href(self): pinger = ExternalUrlsPinger(self.entry) result = pinger.find_pingback_href('') self.assertEqual(result, None) result = pinger.find_pingback_href(""" <html><head><link rel="pingback" href="/xmlrpc/" /></head> <body></body></html> """) self.assertEqual(result, '/xmlrpc/') result = pinger.find_pingback_href(""" <html><head><LINK hrEF="/xmlrpc/" REL="PingBack" /></head> <body></body></html> """) self.assertEqual(result, '/xmlrpc/') result = pinger.find_pingback_href(""" <html><head><LINK REL="PingBack" /></head><body></body></html> """) self.assertEqual(result, None)
def test_pingback_url(self): pinger = ExternalUrlsPinger(self.entry) self.assertEqual( pinger.pingback_url('http://localhost', 'http://error.com'), 'http://error.com cannot be pinged.')