mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
* global list of public trackers * infohash => magnet link (only in public trackers) * magnet link => infohash
This commit is contained in:
@@ -124,7 +124,7 @@ namespace Jackett.Test.Common.Indexers
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestFixResults()
|
||||
public void TestFixResultsOriginPublishDate()
|
||||
{
|
||||
var indexer = new TestWebIndexer();
|
||||
var query = new TorznabQuery();
|
||||
@@ -144,6 +144,44 @@ namespace Jackett.Test.Common.Indexers
|
||||
Assert.AreEqual(DateTime.Now.Year, fixedResults.First().PublishDate.Year);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestFixResultsMagnet()
|
||||
{
|
||||
var indexer = new TestWebIndexer();
|
||||
var query = new TorznabQuery();
|
||||
|
||||
// get info_hash from magnet
|
||||
var results = new List<ReleaseInfo>
|
||||
{
|
||||
new ReleaseInfo
|
||||
{
|
||||
MagnetUri = new Uri("magnet:?xt=urn:btih:3333333333333333333333333333333333333333&dn=Title&tr=udp%3A%2F%2Ftracker.com%3A6969")
|
||||
}
|
||||
};
|
||||
Assert.AreEqual(null, results.First().InfoHash);
|
||||
var fixedResults = indexer._FixResults(query, results).ToList();
|
||||
Assert.AreEqual("3333333333333333333333333333333333333333", fixedResults.First().InfoHash);
|
||||
|
||||
// build magnet from info_hash (private site), not allowed
|
||||
results = new List<ReleaseInfo>
|
||||
{
|
||||
new ReleaseInfo
|
||||
{
|
||||
Title = "Tracker Title",
|
||||
InfoHash = "3333333333333333333333333333333333333333"
|
||||
}
|
||||
};
|
||||
Assert.AreEqual(null, results.First().MagnetUri);
|
||||
fixedResults = indexer._FixResults(query, results).ToList();
|
||||
Assert.AreEqual(null, fixedResults.First().MagnetUri);
|
||||
|
||||
// build magnet from info_hash (public, semi-private sites)
|
||||
indexer.SetType("public");
|
||||
Assert.AreEqual(null, results.First().MagnetUri);
|
||||
fixedResults = indexer._FixResults(query, results).ToList();
|
||||
Assert.True(fixedResults.First().MagnetUri.ToString().Contains("3333333333333333333333333333333333333333"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestAddCategoryMapping()
|
||||
{
|
||||
|
45
src/Jackett.Test/Common/Utils/MagnetUtilTests.cs
Normal file
45
src/Jackett.Test/Common/Utils/MagnetUtilTests.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using Jackett.Common.Utils;
|
||||
using NUnit.Framework;
|
||||
using Assert = NUnit.Framework.Assert;
|
||||
|
||||
namespace Jackett.Test.Common.Utils
|
||||
{
|
||||
[TestFixture]
|
||||
public class MagnetUtilTests
|
||||
{
|
||||
[Test]
|
||||
public void TestInfoHashToPublicMagnet()
|
||||
{
|
||||
const string infoHash = "3333333333333333333333333333333333333333";
|
||||
const string title = "Torrent Title 😀"; // with unicode characters
|
||||
|
||||
// TODO: I'm not sure if unicode characters must be encoded
|
||||
// good magnet
|
||||
var magnet = MagnetUtil.InfoHashToPublicMagnet(infoHash, title);
|
||||
Assert.True(magnet.ToString().StartsWith("magnet:?xt=urn:btih:3333333333333333333333333333333333333333&dn=Torrent+Title+😀&tr="));
|
||||
|
||||
// bad magnet (no info hash)
|
||||
magnet = MagnetUtil.InfoHashToPublicMagnet("", title);
|
||||
Assert.AreEqual(null, magnet);
|
||||
|
||||
// bad magnet (no title)
|
||||
magnet = MagnetUtil.InfoHashToPublicMagnet(infoHash, "");
|
||||
Assert.AreEqual(null, magnet);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestMagnetToInfoHash()
|
||||
{
|
||||
// good magnet
|
||||
var magnet = new Uri("magnet:?xt=urn:btih:3333333333333333333333333333333333333333&dn=Torrent+Title+😀&tr=udp%3A%2F%2Ftracker.com%3A6969%2Fannounce");
|
||||
var infoHash = MagnetUtil.MagnetToInfoHash(magnet);
|
||||
Assert.AreEqual("3333333333333333333333333333333333333333", infoHash);
|
||||
|
||||
// bad magnet
|
||||
magnet = new Uri("magnet:?tr=udp%3A%2F%2Ftracker.com%3A6969%2Fannounce");
|
||||
infoHash = MagnetUtil.MagnetToInfoHash(magnet);
|
||||
Assert.AreEqual(null, infoHash);
|
||||
}
|
||||
}
|
||||
}
|
@@ -44,6 +44,7 @@ namespace Jackett.Test.TestHelpers
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// public methods to test private methods
|
||||
public void SetType(string type) => Type = type;
|
||||
|
||||
public IEnumerable<ReleaseInfo> _FilterResults(TorznabQuery query, IEnumerable<ReleaseInfo> results) =>
|
||||
FilterResults(query, results);
|
||||
|
Reference in New Issue
Block a user