From dcd3918f3626403e32f00993d0a6e7014be3cbf3 Mon Sep 17 00:00:00 2001 From: Hans Ole Hatzel Date: Wed, 27 May 2020 23:13:19 +0200 Subject: [WebUI] Add test for torrent files containing md5sums Some torrent files built with py3createtorrent fail to produce a file listing in the WebUI when uploading them. This made it impossible to add such files. Specifically this is caused by the additional metadata when using py3createtorrent with the `--md5` flag. --- deluge/tests/data/md5sum.torrent | 1 + deluge/tests/test_web_api.py | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 deluge/tests/data/md5sum.torrent diff --git a/deluge/tests/data/md5sum.torrent b/deluge/tests/data/md5sum.torrent new file mode 100644 index 000000000..0e8c93f33 --- /dev/null +++ b/deluge/tests/data/md5sum.torrent @@ -0,0 +1 @@ +d8:announce25:lol.this.is.not.a.tracker7:comment36:created with py3createtorrent v0.9.610:created by23:py3createtorrent v0.9.613:creation datei1590076175e4:infod5:filesld6:lengthi4e6:md5sum32:59bcc3ad6775562f845953cf016242254:pathl3:loleed6:lengthi5e6:md5sum32:10245815f893d79f3d779690774f0b434:pathl4:rofleee4:name4:test12:piece lengthi16384e6:pieces20:û8éß6A¢Ú²ú-Y>+S]\/ßee \ No newline at end of file diff --git a/deluge/tests/test_web_api.py b/deluge/tests/test_web_api.py index 982a93b1f..0180e0bda 100644 --- a/deluge/tests/test_web_api.py +++ b/deluge/tests/test_web_api.py @@ -9,6 +9,7 @@ from __future__ import unicode_literals +import json from io import BytesIO from twisted.internet import defer, reactor @@ -130,6 +131,16 @@ class WebAPITestCase(WebServerTestBase): self.assertEqual(ret['info_hash'], 'ab570cdd5a17ea1b61e970bb72047de141bce173') self.assertTrue('files_tree' in ret) + def test_get_torrent_info_with_md5(self): + filename = common.get_test_data_file('md5sum.torrent') + ret = self.deluge_web.web_api.get_torrent_info(filename) + # JSON dumping happens during response creation in normal usage + # JSON serialization may fail if any of the dictionary items are byte arrays rather than strings + ret = json.loads(json.dumps(ret)) + self.assertEqual(ret['name'], 'test') + self.assertEqual(ret['info_hash'], 'f6408ba9944cf9fe01b547b28f336b3ee6ec32c5') + self.assertTrue('files_tree' in ret) + def test_get_magnet_info(self): ret = self.deluge_web.web_api.get_magnet_info( 'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN' -- cgit