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 }