diff options
Diffstat (limited to 'deluge/tests/test_tracker_icons.py')
-rw-r--r-- | deluge/tests/test_tracker_icons.py | 80 |
1 files changed, 41 insertions, 39 deletions
diff --git a/deluge/tests/test_tracker_icons.py b/deluge/tests/test_tracker_icons.py index e18d339..2f793d1 100644 --- a/deluge/tests/test_tracker_icons.py +++ b/deluge/tests/test_tracker_icons.py @@ -1,34 +1,25 @@ -# -*- coding: utf-8 -*- # # This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with # the additional special exception to link portions of this program with the OpenSSL library. # See LICENSE for more details. # - -from __future__ import unicode_literals +import os.path import pytest -from twisted.trial.unittest import SkipTest +import pytest_twisted import deluge.component as component import deluge.ui.tracker_icons -from deluge.common import windows_check +from deluge.conftest import BaseTestCase from deluge.ui.tracker_icons import TrackerIcon, TrackerIcons from . import common -from .basetest import BaseTestCase -common.set_tmp_config_dir() -deluge.ui.tracker_icons.PIL_INSTALLED = False common.disable_new_release_check() @pytest.mark.internet -class TrackerIconsTestCase(BaseTestCase): - - if windows_check(): - skip = 'cannot use os.path.samefile to compair on windows(unix only)' - +class TestTrackerIcons(BaseTestCase): def set_up(self): # Disable resizing with Pillow for consistency. self.patch(deluge.ui.tracker_icons, 'Image', None) @@ -37,41 +28,52 @@ class TrackerIconsTestCase(BaseTestCase): def tear_down(self): return component.shutdown() - def test_get_deluge_png(self): + @pytest_twisted.ensureDeferred + async def test_get_deluge_png(self, mock_mkstemp): # 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 + result = await self.icons.fetch('deluge-torrent.org') + assert result == icon + assert not os.path.isfile(mock_mkstemp[1]) - def test_get_google_ico(self): + @pytest_twisted.ensureDeferred + async 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 + result = await self.icons.fetch('www.google.com') + assert result == icon - def test_get_google_ico_with_redirect(self): + @pytest_twisted.ensureDeferred + async def test_get_google_ico_hebrew(self): + """Test that Google.co.il page is read as UTF-8""" + icon = TrackerIcon(common.get_test_data_file('google.ico')) + result = await self.icons.fetch('www.google.co.il') + assert result == icon + + @pytest_twisted.ensureDeferred + async 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 + result = await self.icons.fetch('google.com') + assert result == icon - def test_get_seo_ico_with_sni(self): + @pytest.mark.skip(reason='Site removed favicon, new SNI test will be needed') + @pytest_twisted.ensureDeferred + async def test_get_seo_svg_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 + icon = TrackerIcon(common.get_test_data_file('seo.svg')) + result = await self.icons.fetch('www.seo.com') + assert result == icon + + @pytest_twisted.ensureDeferred + async def test_get_empty_string_tracker(self): + result = await self.icons.fetch('') + assert result is None - def test_get_empty_string_tracker(self): - d = self.icons.fetch('') - d.addCallback(self.assertIdentical, None) - return d + @pytest_twisted.ensureDeferred + async def test_invalid_host(self, mock_mkstemp): + """Test that TrackerIcon can handle invalid hostname""" + result = await self.icons.fetch('deluge.example.com') + assert not result + assert not os.path.isfile(mock_mkstemp[1]) |