class TrackerIconsTestCase(BaseTestCase): if windows_check(): skip = 'cannot use os.path.samefile to compair on windows(unix only)' def set_up(self): # Disable resizing with Pillow for consistency. self.patch(deluge.ui.tracker_icons, 'Image', None) self.icons = TrackerIcons() def tear_down(self): return component.shutdown() def test_get_deluge_png(self): # Deluge has a png favicon link icon = TrackerIcon(common.get_test_data_file('deluge.png')) d = self.icons.fetch('deluge-torrent.org') d.addCallback(self.assertNotIdentical, None) d.addCallback(self.assertEqual, icon) return d def test_get_google_ico(self): # Google doesn't have any icon links # So instead we'll grab its favicon.ico icon = TrackerIcon(common.get_test_data_file('google.ico')) d = self.icons.fetch('www.google.com') d.addCallback(self.assertNotIdentical, None) d.addCallback(self.assertEqual, icon) return d def test_get_google_ico_with_redirect(self): # google.com redirects to www.google.com icon = TrackerIcon(common.get_test_data_file('google.ico')) d = self.icons.fetch('google.com') d.addCallback(self.assertNotIdentical, None) d.addCallback(self.assertEqual, icon) return d def test_get_seo_ico_with_sni(self): # seo using certificates with SNI support only raise SkipTest('Site certificate expired') icon = TrackerIcon(common.get_test_data_file('seo.ico')) d = self.icons.fetch('www.seo.com') d.addCallback(self.assertNotIdentical, None) d.addCallback(self.assertEqual, icon) return d def test_get_empty_string_tracker(self): d = self.icons.fetch('') d.addCallback(self.assertIdentical, None) return d
class Tracker(resource.Resource): def __init__(self): resource.Resource.__init__(self) try: self.tracker_icons = component.get('TrackerIcons') except KeyError: self.tracker_icons = TrackerIcons() def getChild(self, path, request): # NOQA: N802 request.tracker_name = path return self def on_got_icon(self, icon, request): if icon: request.setHeader(b'cache-control', b'public, must-revalidate, max-age=86400') request.setHeader(b'content-type', icon.get_mimetype().encode('utf8')) request.setResponseCode(http.OK) request.write(icon.get_data()) request.finish() else: request.setResponseCode(http.NOT_FOUND) request.finish() def render(self, request): d = self.tracker_icons.fetch(request.tracker_name) d.addCallback(self.on_got_icon, request) return server.NOT_DONE_YET
class Tracker(resource.Resource): def __init__(self): resource.Resource.__init__(self) try: self.tracker_icons = component.get('TrackerIcons') except KeyError: self.tracker_icons = TrackerIcons() def getChild(self, path, request): # NOQA: N802 request.tracker_name = path return self def on_got_icon(self, icon, request): if icon: request.setHeader( b'cache-control', b'public, must-revalidate, max-age=86400' ) request.setHeader(b'content-type', icon.get_mimetype().encode('utf8')) request.setResponseCode(http.OK) request.write(icon.get_data()) request.finish() else: request.setResponseCode(http.NOT_FOUND) request.finish() def render(self, request): d = self.tracker_icons.fetch(request.tracker_name.decode()) d.addCallback(self.on_got_icon, request) return server.NOT_DONE_YET
class TrackerIconsTestCase(BaseTestCase): def set_up(self): self.icons = TrackerIcons() def tear_down(self): return component.shutdown() def test_get_deluge_png(self): # Deluge has a png favicon link icon = TrackerIcon(common.get_test_data_file('deluge.png')) d = self.icons.fetch('deluge-torrent.org') d.addCallback(self.assertNotIdentical, None) d.addCallback(self.assertEqual, icon) return d def test_get_google_ico(self): # Google doesn't have any icon links # So instead we'll grab its favicon.ico icon = TrackerIcon(common.get_test_data_file('google.ico')) d = self.icons.fetch('www.google.com') d.addCallback(self.assertNotIdentical, None) d.addCallback(self.assertEqual, icon) return d def test_get_google_ico_with_redirect(self): # google.com redirects to www.google.com icon = TrackerIcon(common.get_test_data_file('google.ico')) d = self.icons.fetch('google.com') d.addCallback(self.assertNotIdentical, None) d.addCallback(self.assertEqual, icon) return d def test_get_empty_string_tracker(self): d = self.icons.fetch('') d.addCallback(self.assertIdentical, None) return d