Пример #1
0
        public void ToUriV1()
        {
            var infoHash  = Create();
            var name      = "MyName/Url/Encoded";
            var announces = new [] {
                "http://testUrl.com/foo/bar/announce",
                "http://test2Url.com/foo/bar",
            };
            var webSeeds = new [] {
                "http://whatever.com/file.exe",
                "http://whatever2.com/file.exe",
            };
            var magnetLink = new MagnetLink(infoHash, name, announces, webSeeds);
            var uri        = magnetLink.ToV1String();

            Assert.IsFalse(uri.Contains(announces[0]), "The uri should be Uri encoded");
            Assert.IsFalse(uri.Contains(webSeeds[0]), "The uri should be Uri encoded");
            Assert.IsFalse(uri.Contains(name), "The name should be Uri encoded");

            magnetLink = MagnetLink.Parse(uri);
            Assert.AreEqual(infoHash, magnetLink.InfoHash, "#1");
            Assert.AreEqual(name, magnetLink.Name, "#2");
            CollectionAssert.AreEquivalent(announces, magnetLink.AnnounceUrls, "#3");
            CollectionAssert.AreEquivalent(webSeeds, magnetLink.Webseeds, "#4");
        }
Пример #2
0
        public void NameTest()
        {
            MagnetLink other = MagnetLink.Parse($"magnet:?dn=foo&xt=urn:btih:{Create ().ToHex ()}");

            Assert.IsNotNull(other.Name, "#1");
            Assert.AreEqual("foo", other.Name, "#2");
        }
Пример #3
0
        public void ParseMagnetLink()
        {
            InfoHash   hash   = Create();
            string     magnet = string.Format("magnet:?xt=urn:btih:{0}", hash.ToHex());
            MagnetLink other  = MagnetLink.Parse(magnet);

            Assert.AreEqual(hash, other.InfoHash, "#1");
        }
Пример #4
0
        public void ParseMagnetLink()
        {
            InfoHash   hash   = Create();
            string     magnet = $"magnet:?xt=urn:btih:{hash.ToHex ()}";
            MagnetLink other  = MagnetLink.Parse(magnet);

            Assert.AreEqual(hash, other.InfoHashes.V1, "#1");
        }
Пример #5
0
        public void TrackersTest()
        {
            MagnetLink other = MagnetLink.Parse($"magnet:?tr=http://example.com/announce&tr.2=http://example.com/announce2&xt=urn:btih:{Create ().ToHex ()}");

            Assert.IsNotNull(other.AnnounceUrls, "#1");
            Assert.IsTrue(other.AnnounceUrls.Contains("http://example.com/announce"), "#2");
            Assert.IsTrue(other.AnnounceUrls.Contains("http://example.com/announce2"), "#3");
        }
Пример #6
0
        public void ExactLength()
        {
            var link = MagnetLink.Parse("magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xl=12345");

            Assert.AreEqual(12345, link.Size, "#1");

            link = MagnetLink.Parse("magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C");
            Assert.IsNull(link.Size, "#2");
        }
Пример #7
0
 public void InvalidMagnetLink3()
 {
     Assert.Throws <FormatException> (() => {
         InfoHash hash    = Create();
         string magnet    = string.Format("magnet:?xt=urn:btih:", hash.ToHex());
         MagnetLink other = MagnetLink.Parse(magnet);
         Assert.AreEqual(hash, other.InfoHash, "#1");
     });
 }
Пример #8
0
 public void InvalidMagnetLink()
 {
     Assert.Throws <UriFormatException> (() => {
         InfoHash hash    = Create();
         string magnet    = $"magnet?xt=urn:btih:{hash.ToHex ()}";
         MagnetLink other = MagnetLink.Parse(magnet);
         Assert.AreEqual(hash, other.InfoHash, "#1");
     });
 }
Пример #9
0
 public void InvalidMagnetLink4()
 {
     Assert.Throws <FormatException> (() => {
         InfoHash hash    = Create();
         string magnet    = string.Format("magnet:?xt=urn:btih:23526246235623564234365879634581726345981", hash.ToHex());
         MagnetLink other = MagnetLink.Parse(magnet);
         Assert.AreEqual(hash, other.InfoHash, "#1");
     });
 }
Пример #10
0
        public void ValidMagnetLink_DoubleEquals_InTr()
        {
            var rawUrl = "magnet:?xt=urn:btih:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&dn=B%201.0%20C%2060.torrent&tr=https://www.a.org/announce&trhttp://b.com:80/announce&tr=http%3A%2F%2Fwww.c.org/announce";
            var magnet = MagnetLink.Parse(rawUrl);

            Assert.AreEqual("B 1.0 C 60.torrent", magnet.Name);
            CollectionAssert.Contains(magnet.AnnounceUrls, "https://www.a.org/announce");
            CollectionAssert.DoesNotContain(magnet.AnnounceUrls, "http://b.com:80/announce");
            CollectionAssert.Contains(magnet.AnnounceUrls, "http://www.c.org/announce");
        }
Пример #11
0
        public void TrackersUrlEncodedTest()
        {
            var other = MagnetLink.Parse("magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1" +
                                         "&xl=10826029&dn=mediawiki-1.15.1.tar.gz" +
                                         "&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY" +
                                         "&xt=urn:btih:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C" +
                                         "&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26" +
                                         "&tr=udp%3A%2F%2Fexample.org%3A28191" +
                                         "&tr=tcp%3A%2F%2F%5B2001%3Adb8%3A85a3%3A8d3%3A1319%3A8a2e%3A370%3A7348%5D");

            Assert.IsNotNull(other.AnnounceUrls, "#1");
            Assert.IsTrue(other.AnnounceUrls.Contains("http://tracker.example.org/announce.php?uk=1111111111&"), "#2");
            Assert.IsTrue(other.AnnounceUrls.Contains("udp://example.org:28191"), "#3");
            Assert.IsTrue(other.AnnounceUrls.Contains("tcp://[2001:db8:85a3:8d3:1319:8a2e:370:7348]"), "#4");
        }
Пример #12
0
        public void InfoHashTest()
        {
            MagnetLink link = MagnetLink.Parse("magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C");

            Assert.AreEqual(InfoHash.FromBase32("YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C"), link.InfoHash, "#1");

            //base32
            InfoHash initial = new InfoHash(System.Text.Encoding.ASCII.GetBytes("foobafoobafoobafooba"));

            link = MagnetLink.Parse("magnet:?xt=urn:sha1:MZXW6YTBMZXW6YTBMZXW6YTBMZXW6YTB");
            Assert.AreEqual(initial, link.InfoHash, "#2");

            //base40 = hex
            InfoHash hash = Create();
            string   hex  = hash.ToHex();

            link = MagnetLink.Parse("magnet:?xt=urn:btih:" + hex);
            Assert.AreEqual(hash, link.InfoHash, "#3");
        }
Пример #13
0
        public void ValidMagnetLink_UnknownParameters()
        {
            var rawUrl = "magnet:?xt=urn:btih:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&hello&invalid=parameter";

            Assert.DoesNotThrow(() => MagnetLink.Parse(rawUrl));
        }