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");
        }
Beispiel #2
0
        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");
        }
Beispiel #3
0
        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()));
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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()));
        }
Beispiel #6
0
        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);
        }