github.com/anacrolix/torrent@v1.61.0/metainfo/magnet-v2_test.go (about)

     1  package metainfo
     2  
     3  import (
     4  	"testing"
     5  
     6  	qt "github.com/go-quicktest/qt"
     7  )
     8  
     9  func TestParseMagnetV2(t *testing.T) {
    10  
    11  	const v2Only = "magnet:?xt=urn:btmh:1220caf1e1c30e81cb361b9ee167c4aa64228a7fa4fa9f6105232b28ad099f3a302e&dn=bittorrent-v2-test"
    12  
    13  	m2, err := ParseMagnetV2Uri(v2Only)
    14  	qt.Assert(t, qt.IsNil(err))
    15  	qt.Check(t, qt.IsFalse(m2.InfoHash.Ok))
    16  	qt.Check(t, qt.IsTrue(m2.V2InfoHash.Ok))
    17  	qt.Check(t, qt.Equals(m2.V2InfoHash.Value.HexString(), "caf1e1c30e81cb361b9ee167c4aa64228a7fa4fa9f6105232b28ad099f3a302e"))
    18  	qt.Check(t, qt.HasLen(m2.Params, 0))
    19  
    20  	_, err = ParseMagnetUri(v2Only)
    21  	qt.Check(t, qt.IsNotNil(err))
    22  
    23  	const hybrid = "magnet:?xt=urn:btih:631a31dd0a46257d5078c0dee4e66e26f73e42ac&xt=urn:btmh:1220d8dd32ac93357c368556af3ac1d95c9d76bd0dff6fa9833ecdac3d53134efabb&dn=bittorrent-v1-v2-hybrid-test"
    24  
    25  	m2, err = ParseMagnetV2Uri(hybrid)
    26  	qt.Assert(t, qt.IsNil(err))
    27  	qt.Check(t, qt.IsTrue(m2.InfoHash.Ok))
    28  	qt.Check(t, qt.Equals(m2.InfoHash.Value.HexString(), "631a31dd0a46257d5078c0dee4e66e26f73e42ac"))
    29  	qt.Check(t, qt.IsTrue(m2.V2InfoHash.Ok))
    30  	qt.Check(t, qt.Equals(m2.V2InfoHash.Value.HexString(), "d8dd32ac93357c368556af3ac1d95c9d76bd0dff6fa9833ecdac3d53134efabb"))
    31  	qt.Check(t, qt.HasLen(m2.Params, 0))
    32  
    33  	m, err := ParseMagnetUri(hybrid)
    34  	qt.Assert(t, qt.IsNil(err))
    35  	qt.Check(t, qt.Equals(m.InfoHash.HexString(), "631a31dd0a46257d5078c0dee4e66e26f73e42ac"))
    36  	qt.Check(t, qt.HasLen(m.Params["xt"], 1))
    37  }