public void Does_Not_Complete_TransferRequest_Wait_On_Upload_Request_If_No_Downloads_Are_Tracked(string username, IPEndPoint endpoint, int token, string filename)
        {
            var(handler, mocks) = GetFixture(username, endpoint);

            var request = new TransferRequest(TransferDirection.Upload, token, filename);
            var message = request.ToByteArray();

            handler.HandleMessageRead(mocks.PeerConnection.Object, message);

            mocks.Waiter.Verify(m => m.Complete(new WaitKey(MessageCode.Peer.TransferRequest, username, filename), It.Is <TransferRequest>(t => t.Direction == request.Direction && t.Token == request.Token && t.Filename == request.Filename)), Times.Never);
        }
        public void Completes_TransferRequest_Wait_On_Upload_Request(string username, IPAddress ip, int port, int token, string filename)
        {
            var(handler, mocks) = GetFixture(username, ip, port);

            var request = new TransferRequest(TransferDirection.Upload, token, filename);
            var message = request.ToByteArray();

            handler.HandleMessage(mocks.PeerConnection.Object, message);

            mocks.Waiter.Verify(m => m.Complete(new WaitKey(MessageCode.Peer.TransferRequest, username, filename), It.Is <TransferRequest>(t => t.Direction == request.Direction && t.Token == request.Token && t.Filename == request.Filename)), Times.Once);
        }
        public void Rejects_TransferRequest_Upload_Request_If_Transfer_Is_Not_Tracked(string username, IPEndPoint endpoint, int token, string filename)
        {
            var(handler, mocks) = GetFixture(username, endpoint);

            var request = new TransferRequest(TransferDirection.Upload, token, filename);
            var message = request.ToByteArray();

            handler.HandleMessageRead(mocks.PeerConnection.Object, message);

            var expected = new TransferResponse(token, string.Empty).ToByteArray();

            mocks.PeerConnection.Verify(m => m.WriteAsync(It.Is <byte[]>(b => b.Matches(expected)), It.IsAny <CancellationToken?>()), Times.Once);
        }
Esempio n. 4
0
        public void ToByteArray_Constructs_The_Correct_Message(TransferDirection dir, int token, string file, long size)
        {
            var a   = new TransferRequest(dir, token, file, size);
            var msg = a.ToByteArray();

            var reader = new MessageReader <MessageCode.Peer>(msg);
            var code   = reader.ReadCode();

            Assert.Equal(MessageCode.Peer.TransferRequest, code);

            // length + code + direction + token + file length + filename + size
            Assert.Equal(4 + 4 + 4 + 4 + 4 + file.Length + 8, msg.Length);
            Assert.Equal(0, reader.ReadInteger()); // direction
            Assert.Equal(token, reader.ReadInteger());
            Assert.Equal(file, reader.ReadString());
            Assert.Equal(size, reader.ReadLong());
        }
        public void Does_Not_Complete_TransferRequest_Wait_On_Upload_Request_If_Transfer_Is_Not_Tracked(string username, IPEndPoint endpoint, int token, string filename)
        {
            var(handler, mocks) = GetFixture(username, endpoint);

            var downloads = new ConcurrentDictionary <int, TransferInternal>();

            downloads.TryAdd(1, new TransferInternal(TransferDirection.Download, "not-username", filename, token));

            mocks.Client.Setup(m => m.Downloads)
            .Returns(downloads);

            var request = new TransferRequest(TransferDirection.Upload, token, filename);
            var message = request.ToByteArray();

            handler.HandleMessageRead(mocks.PeerConnection.Object, message);

            mocks.Waiter.Verify(m => m.Complete(new WaitKey(MessageCode.Peer.TransferRequest, username, filename), It.Is <TransferRequest>(t => t.Direction == request.Direction && t.Token == request.Token && t.Filename == request.Filename)), Times.Never);
        }