diff options
author | Calum Lind <calumlind+deluge@gmail.com> | 2022-07-08 08:29:18 +0100 |
---|---|---|
committer | Calum Lind <calumlind+deluge@gmail.com> | 2022-07-08 08:34:29 +0100 |
commit | e120536d8766d07c0ec27accc08a01224e8de1e3 (patch) | |
tree | e7b0736fe7ac16f810b5a7e3edbdc83f6c267dc2 /deluge/tests | |
parent | f52cf760e4934f1270c077305a479a9d2ec5fd47 (diff) | |
download | deluge-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.py | 15 |
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 |