public async Task AddPeers_Dht_Private() { // You can't manually add peers to private torrents var editor = new TorrentEditor(rig.TorrentDict) { CanEditSecureMetadata = true, Private = true }; var manager = await rig.Engine.AddAsync(editor.ToTorrent(), "path", new TorrentSettings()); var dht = (ManualDhtEngine)rig.Engine.DhtEngine; var tcs = new TaskCompletionSource <DhtPeersAdded> (); manager.PeersFound += (o, e) => { if (e is DhtPeersAdded args) { tcs.TrySetResult(args); } }; dht.RaisePeersFound(manager.InfoHash, new[] { rig.CreatePeer(false).Peer }); var result = await tcs.Task.WithTimeout(TimeSpan.FromSeconds(5)); Assert.AreEqual(0, result.NewPeers, "#2"); Assert.AreEqual(0, result.ExistingPeers, "#3"); Assert.AreEqual(0, manager.Peers.AvailablePeers.Count, "#4"); }
public async Task AddPeers_LocalPeerDiscovery_Private() { // You can't manually add peers to private torrents var editor = new TorrentEditor(rig.TorrentDict) { CanEditSecureMetadata = true, Private = true }; var manager = new TorrentManager(editor.ToTorrent(), "path", new TorrentSettings()); await rig.Engine.Register(manager); var localPeer = new ManualLocalPeerListener(); await rig.Engine.RegisterLocalPeerDiscoveryAsync(localPeer); var tcs = new TaskCompletionSource <LocalPeersAdded> (); manager.PeersFound += (o, e) => { if (e is LocalPeersAdded args) { tcs.TrySetResult(args); } }; localPeer.RaisePeerFound(manager.InfoHash, rig.CreatePeer(false).Uri); var result = await tcs.Task.WithTimeout(TimeSpan.FromSeconds(5)); Assert.AreEqual(0, result.NewPeers, "#2"); Assert.AreEqual(0, result.ExistingPeers, "#3"); Assert.AreEqual(0, manager.Peers.AvailablePeers.Count, "#4"); }
internal static TorrentManager CreatePrivate() { var dict = CreateTorrent(16 * 1024 * 8, new[] { new TorrentFile("File", 16 * 1024 * 8) }, null); var editor = new TorrentEditor(dict) { CanEditSecureMetadata = true, Private = true, }; return(new TorrentManager(editor.ToTorrent(), "", new TorrentSettings())); }
internal static Torrent CreatePrivate() { var dict = CreateTorrent(16 * 1024 * 8, TorrentFile.Create(16 * 1024 * 8, ("File", 16 * 1024 * 8)), null); var editor = new TorrentEditor(dict) { CanEditSecureMetadata = true, Private = true, }; return(editor.ToTorrent()); }
public async Task ContainingDirectory_PathBusting() { // You can't manually add peers to private torrents using var rig = TestRig.CreateMultiFile(new TestWriter()); await rig.Engine.RemoveAsync(rig.Engine.Torrents[0]); var editor = new TorrentEditor(rig.TorrentDict); editor.CanEditSecureMetadata = true; editor.Name = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}test{Path.GetInvalidPathChars ()[0]}"; Assert.ThrowsAsync <ArgumentException> (() => rig.Engine.AddAsync(editor.ToTorrent(), "path", new TorrentSettings())); }
public async Task ContainingDirectory_InvalidCharacters() { // You can't manually add peers to private torrents using var rig = TestRig.CreateMultiFile(new TestWriter()); await rig.Engine.RemoveAsync(rig.Engine.Torrents[0]); var editor = new TorrentEditor(rig.TorrentDict); editor.CanEditSecureMetadata = true; editor.Name = $"{Path.GetInvalidPathChars()[0]}test{Path.GetInvalidPathChars ()[0]}"; var manager = await rig.Engine.AddAsync(editor.ToTorrent(), "path", new TorrentSettings()); Assert.IsFalse(manager.ContainingDirectory.Contains(manager.Torrent.Name)); Assert.IsTrue(manager.ContainingDirectory.StartsWith(manager.SavePath)); Assert.AreEqual(Path.GetFullPath(manager.ContainingDirectory), manager.ContainingDirectory); Assert.AreEqual(Path.GetFullPath(manager.SavePath), manager.SavePath); }