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); }
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); }