Skip to content

Commit

Permalink
Covering zinnia.ping at 100%
Browse files Browse the repository at this point in the history
  • Loading branch information
Fantomas42 committed Aug 12, 2013
1 parent 9efac41 commit b1b05d5
Showing 1 changed file with 61 additions and 21 deletions.
82 changes: 61 additions & 21 deletions zinnia/tests/ping.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,19 @@
from zinnia.ping import ExternalUrlsPinger


class NoThreadMixin(object):
def start(self):
self.run()


class NoThreadDirectoryPinger(NoThreadMixin, DirectoryPinger):
pass


class NoThreadExternalUrlsPinger(NoThreadMixin, ExternalUrlsPinger):
pass


class DirectoryPingerTestCase(TestCase):
"""Test cases for DirectoryPinger"""
def setUp(self):
Expand All @@ -23,14 +36,22 @@ def setUp(self):
'tags': 'zinnia, test',
'slug': 'my-entry'}
self.entry = Entry.objects.create(**params)
self.pinger = DirectoryPinger('http://localhost', [self.entry],
start_now=False)

def test_ping_entry(self):
pinger = NoThreadDirectoryPinger('http://localhost', [self.entry],
start_now=False)
self.assertEquals(
self.pinger.ping_entry(self.entry),
pinger.ping_entry(self.entry),
{'message': 'http://localhost is an invalid directory.',
'flerror': True})
self.assertEquals(pinger.results, [])

def test_run(self):
pinger = NoThreadDirectoryPinger('http://localhost', [self.entry])
self.assertEquals(
pinger.results,
[{'flerror': True,
'message': 'http://localhost is an invalid directory.'}])


class ExternalUrlsPingerTestCase(TestCase):
Expand All @@ -42,26 +63,27 @@ def setUp(self):
'tags': 'zinnia, test',
'slug': 'my-entry'}
self.entry = Entry.objects.create(**params)
self.pinger = ExternalUrlsPinger(self.entry, start_now=False)

def test_is_external_url(self):
r = URLRessources()
self.assertEquals(self.pinger.is_external_url(
pinger = ExternalUrlsPinger(self.entry, start_now=False)
self.assertEquals(pinger.is_external_url(
'http://example.com/', 'http://google.com/'), True)
self.assertEquals(self.pinger.is_external_url(
self.assertEquals(pinger.is_external_url(
'http://example.com/toto/', 'http://google.com/titi/'), True)
self.assertEquals(self.pinger.is_external_url(
self.assertEquals(pinger.is_external_url(
'http://example.com/blog/', 'http://example.com/page/'), False)
self.assertEquals(self.pinger.is_external_url(
self.assertEquals(pinger.is_external_url(
'%s/blog/' % r.site_url, r.site_url), False)
self.assertEquals(self.pinger.is_external_url(
self.assertEquals(pinger.is_external_url(
'http://google.com/', r.site_url), True)
self.assertEquals(self.pinger.is_external_url(
self.assertEquals(pinger.is_external_url(
'/blog/', r.site_url), False)

def test_find_external_urls(self):
r = URLRessources()
external_urls = self.pinger.find_external_urls(self.entry)
pinger = ExternalUrlsPinger(self.entry, start_now=False)
external_urls = pinger.find_external_urls(self.entry)
self.assertEquals(external_urls, [])
self.entry.content = """
<p>This is a <a href="http://fantomas.willbreak.it/">link</a>
Expand All @@ -70,23 +92,24 @@ def test_find_external_urls(self):
<p>This is a <a href="/blog/">relative link</a> within my site.</p>
""" % r.site_url
self.entry.save()
external_urls = self.pinger.find_external_urls(self.entry)
external_urls = pinger.find_external_urls(self.entry)
self.assertEquals(external_urls, ['http://fantomas.willbreak.it/'])

def test_find_pingback_href(self):
result = self.pinger.find_pingback_href('')
pinger = ExternalUrlsPinger(self.entry, start_now=False)
result = pinger.find_pingback_href('')
self.assertEquals(result, None)
result = self.pinger.find_pingback_href("""
result = pinger.find_pingback_href("""
<html><head><link rel="pingback" href="/xmlrpc/" /></head>
<body></body></html>
""")
self.assertEquals(result, '/xmlrpc/')
result = self.pinger.find_pingback_href("""
result = pinger.find_pingback_href("""
<html><head><LINK hrEF="/xmlrpc/" REL="PingBack" /></head>
<body></body></html>
""")
self.assertEquals(result, '/xmlrpc/')
result = self.pinger.find_pingback_href("""
result = pinger.find_pingback_href("""
<html><head><LINK REL="PingBack" /></head><body></body></html>
""")
self.assertEquals(result, None)
Expand All @@ -107,22 +130,39 @@ def fake_urlopen(self, url):
elif 'error' in url:
raise URLError('Invalid ressource')

def test_pingback_url(self):
pinger = ExternalUrlsPinger(self.entry, start_now=False)
self.assertEquals(pinger.pingback_url('http://localhost',
'http://error.com'),
'http://error.com cannot be pinged.')

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, start_now=False)

urls = ['http://localhost/', 'http://example.com/', 'http://error',
'http://www.google.co.uk/images/nav_logo72.png']
self.assertEquals(
self.pinger.find_pingback_urls(urls),
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_pingback_url(self):
self.assertEquals(self.pinger.pingback_url('http://localhost',
'http://error.com'),
'http://error.com cannot be pinged.')
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 = NoThreadExternalUrlsPinger(self.entry)
self.assertEquals(pinger.results, [
'http://localhost/ cannot be pinged.'])
zinnia.ping.urlopen = self.original_urlopen

0 comments on commit b1b05d5

Please sign in to comment.