summaryrefslogtreecommitdiffstats
path: root/deluge/tests
diff options
context:
space:
mode:
authorCalum Lind <calumlind+deluge@gmail.com>2022-07-08 08:29:18 +0100
committerCalum Lind <calumlind+deluge@gmail.com>2022-07-08 08:34:29 +0100
commite120536d8766d07c0ec27accc08a01224e8de1e3 (patch)
treee7b0736fe7ac16f810b5a7e3edbdc83f6c267dc2 /deluge/tests
parentf52cf760e4934f1270c077305a479a9d2ec5fd47 (diff)
downloaddeluge-e120536d8766d07c0ec27accc08a01224e8de1e3.tar.gz
deluge-e120536d8766d07c0ec27accc08a01224e8de1e3.tar.bz2
deluge-e120536d8766d07c0ec27accc08a01224e8de1e3.zip
Fix parsing magnet with tracker tiers
Magnets with trackers specified with tr.x param were not being unquoted so unusable raw tracker string was being set. Fixed by unquoting tracker and adding test See-also: https://dev.deluge-torrent.org/ticket/2716
Diffstat (limited to 'deluge/tests')
-rw-r--r--deluge/tests/test_common.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/deluge/tests/test_common.py b/deluge/tests/test_common.py
index e5027ebca..780d368ef 100644
--- a/deluge/tests/test_common.py
+++ b/deluge/tests/test_common.py
@@ -7,6 +7,7 @@
import os
import sys
import tarfile
+from urllib.parse import quote_plus
import pytest
@@ -19,6 +20,7 @@ from deluge.common import (
fsize,
fspeed,
ftime,
+ get_magnet_info,
get_path_size,
is_infohash,
is_interface,
@@ -209,3 +211,16 @@ class TestCommon:
if tar_info.name == 'archive_message.txt':
result = tar.extractfile(tar_info).read().decode()
assert result == 'test'
+
+ def test_get_magnet_info_tiers(self):
+ tracker1 = 'udp://tracker1.example.com'
+ tracker2 = 'udp://tracker2.example.com'
+ magnet = (
+ 'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN'
+ f'&tr.1={quote_plus(tracker1)}'
+ f'&tr.2={quote_plus(tracker2)}'
+ )
+ result = get_magnet_info(magnet)
+ assert result['info_hash'] == '953bad769164e8482c7785a21d12166f94b9e14d'
+ assert result['trackers'][tracker1] == 1
+ assert result['trackers'][tracker2] == 2