From 76bc45a3bfc91a6e93d423a507a14a135b851144 Mon Sep 17 00:00:00 2001 From: Andrew Resch Date: Sun, 5 Jul 2009 01:17:38 +0000 Subject: [PATCH] Add some tests for core --- deluge/tests/common.py | 25 +++++++++++++++--- deluge/tests/test.torrent | 2 ++ deluge/tests/test_core.py | 55 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 deluge/tests/test.torrent create mode 100644 deluge/tests/test_core.py diff --git a/deluge/tests/common.py b/deluge/tests/common.py index 94c707609..4393c10b9 100644 --- a/deluge/tests/common.py +++ b/deluge/tests/common.py @@ -3,6 +3,25 @@ import tempfile import deluge.configmanager import deluge.log -deluge.log.setupLogger() -config_directory = tempfile.mkdtemp() -deluge.configmanager.set_config_dir(config_directory) +deluge.log.setupLogger("none") + +def set_tmp_config_dir(): + config_directory = tempfile.mkdtemp() + deluge.configmanager.set_config_dir(config_directory) + +import gettext +import locale +import pkg_resources + +# Initialize gettext +try: + locale.setlocale(locale.LC_ALL, '') + if hasattr(locale, "bindtextdomain"): + locale.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) + if hasattr(locale, "textdomain"): + locale.textdomain("deluge") + gettext.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) + gettext.textdomain("deluge") + gettext.install("deluge", pkg_resources.resource_filename("deluge", "i18n")) +except Exception, e: + print e diff --git a/deluge/tests/test.torrent b/deluge/tests/test.torrent new file mode 100644 index 000000000..847ec5895 --- /dev/null +++ b/deluge/tests/test.torrent @@ -0,0 +1,2 @@ +d8:announce40:http://tracker.aelitis.com:6969/announce13:announce-listll40:http://tracker.aelitis.com:6969/announceel41:http://tracker.aelitis.com:16969/announceee18:azureus_propertiesd17:dht_backup_enablei0ee7:comment34:provided by http://getazureus.com/13:comment.utf-834:provided by http://getazureus.com/10:created by19:Azureus/2.5.0.3_CVS13:creation datei1169429806e4:infod4:ed2k16:>pl]K^\;;e6:lengthi307949e4:name22:azcvsupdater_2.6.2.jar10:name.utf-822:azcvsupdater_2.6.2.jar12:piece lengthi32768e6:pieces200:B'bsu97ugA2|ڂb#wIfWswKrGWiد#u E?:ub(oj ^AJ?֌&7:privatei0e4:sha120:2ζ"Կ^Khŷee \ No newline at end of file diff --git a/deluge/tests/test_core.py b/deluge/tests/test_core.py new file mode 100644 index 000000000..72bd9261a --- /dev/null +++ b/deluge/tests/test_core.py @@ -0,0 +1,55 @@ +from twisted.trial import unittest + +try: + from hashlib import sha1 as sha +except ImportError: + from sha import sha + +import common + +from deluge.core.rpcserver import RPCServer +from deluge.core.core import Core +import deluge.component as component + +class CoreTestCase(unittest.TestCase): + def setUp(self): + common.set_tmp_config_dir() + self.rpcserver = RPCServer(listen=False) + self.core = Core() + component.start() + + def tearDown(self): + component.stop() + component.shutdown() + del self.rpcserver + del self.core + + def test_add_torrent_file(self): + options = {} + filename = "../test.torrent" + import base64 + torrent_id = self.core.add_torrent_file(filename, base64.encodestring(open(filename).read()), options) + + # Get the info hash from the test.torrent + from deluge.bencode import bdecode, bencode + info_hash = sha(bencode(bdecode(open(filename).read())["info"])).hexdigest() + + self.assertEquals(torrent_id, info_hash) + + def test_add_torrent_url(self): + url = "http://torrent.ubuntu.com:6969/file?info_hash=%60%D5%D8%23%28%B4Tu%11%FD%EA%C9%BFM%01%12%DA%A0%CE%00" + options = {} + info_hash = "60d5d82328b4547511fdeac9bf4d0112daa0ce00" + + d = self.core.add_torrent_url(url, options) + d.addCallback(self.assertEquals, info_hash) + return d + + def test_add_magnet(self): + info_hash = "60d5d82328b4547511fdeac9bf4d0112daa0ce00" + import deluge.common + uri = deluge.common.create_magnet_uri(info_hash) + options = {} + + torrent_id = self.core.add_torrent_magnet(uri, options) + self.assertEquals(torrent_id, info_hash)