public void Dfs_Failure_Can_Respond_With_Failed_Code() { _nodeFileTransferFactory.RegisterTransfer(Arg.Any <IDownloadFileInformation>()) .Returns(FileTransferResponseCodeTypes.Successful); _fakeDfsService.UnixFsApi.AddAsync(Arg.Any <Stream>(), Arg.Any <string>()).Throws(new Exception()); var protocolMessage = GenerateProtocolMessage(); AddFileToDfsResponse addFileToDfsResponse = null; async void UseArgument(IDownloadFileInformation information) { information.RecipientChannel = Substitute.For <IChannel>(); information.UpdateChunkIndicator(0, true); information.Dispose(); await information.RecipientChannel.WriteAndFlushAsync(Arg.Do <MessageDto>(x => { addFileToDfsResponse = x.Content.FromProtocolMessage <AddFileToDfsResponse>(); _manualResetEvent.Set(); })); } _nodeFileTransferFactory.RegisterTransfer(Arg.Do <IDownloadFileInformation>(UseArgument)); protocolMessage.SendToHandler(_fakeContext, _addFileToDfsRequestObserver); _manualResetEvent.WaitOne(); addFileToDfsResponse.ResponseCode[0].Should().Be((byte)FileTransferResponseCodeTypes.Failed.Id); }
public void Successful_Add_File_Can_Respond_With_Finished_Code() { _nodeFileTransferFactory.RegisterTransfer(Arg.Any <IDownloadFileInformation>()) .Returns(FileTransferResponseCodeTypes.Successful); var expectedCid = _hashProvider.ComputeUtf8MultiHash("expectedHash").ToCid(); var fakeBlock = Substitute.For <IFileSystemNode>(); fakeBlock.Id.Returns(expectedCid); _fakeDfsService.UnixFsApi.AddAsync(Arg.Any <Stream>(), Arg.Any <string>(), Arg.Any <AddFileOptions>()).Returns(fakeBlock); var protocolMessage = GenerateProtocolMessage(); AddFileToDfsResponse addFileToDfsResponse = null; async void UseArgument(IDownloadFileInformation information) { information.RecipientChannel = Substitute.For <IChannel>(); information.UpdateChunkIndicator(0, true); information.Dispose(); await information.RecipientChannel.WriteAndFlushAsync(Arg.Do <MessageDto>(x => { addFileToDfsResponse = x.Content.FromProtocolMessage <AddFileToDfsResponse>(); _manualResetEvent.Set(); })); } _nodeFileTransferFactory.RegisterTransfer(Arg.Do <IDownloadFileInformation>(UseArgument)); protocolMessage.SendToHandler(_fakeContext, _addFileToDfsRequestObserver); _manualResetEvent.WaitOne(); addFileToDfsResponse.ResponseCode[0].Should().Be((byte)FileTransferResponseCodeTypes.Finished.Id); addFileToDfsResponse.DfsHash.Should().Be(expectedCid); }
public void AddFileToDfsResponse_No_Response_Codes() { //Arrange var addFileToDfsResponse = new AddFileToDfsResponse(); var commandContext = TestCommandHelpers.GenerateCliResponseCommandContext(_testScheduler); var addFileToDfsCommand = new AddFileCommand(null, commandContext, _logger); //Act TestCommandHelpers.GenerateResponse(commandContext, addFileToDfsResponse); _testScheduler.Start(); //Assert commandContext.UserOutput.Received(1).WriteLine(AddFileCommand.ErrorNoResponseCodes); }
public void HandlerRemovesFileTransferOnError() { var channelHandlerContext = Substitute.For <IChannelHandlerContext>(); var senderPeerIdentifier = PeerIdHelper.GetPeerId(); var correlationId = CorrelationId.GenerateCorrelationId(); var addFileResponse = new AddFileToDfsResponse { DfsHash = "Test", ResponseCode = ByteString.CopyFrom((byte)FileTransferResponseCodeTypes.Error) }; var addFileToDfsResponseObserver = new AddFileToDfsResponseObserver( Substitute.For <ILogger>(), _uploadFileTransferFactory ); addFileToDfsResponseObserver.HandleResponseObserver(addFileResponse, channelHandlerContext, senderPeerIdentifier, correlationId); _uploadFileTransferFactory.Received(1).Remove(Arg.Any <IUploadFileInformation>(), true); }
public void AddFileToDfsResponse_Finished_Can_Get_Output() { //Arrange var addFileToDfsResponse = new AddFileToDfsResponse { ResponseCode = ByteString.CopyFrom((byte)FileTransferResponseCodeTypes.Finished.Id) }; var commandContext = TestCommandHelpers.GenerateCliResponseCommandContext(_testScheduler); var addFileToDfsCommand = new AddFileCommand(null, commandContext, _logger); //Act TestCommandHelpers.GenerateResponse(commandContext, addFileToDfsResponse); _testScheduler.Start(); //Assert commandContext.UserOutput.Received(1).WriteLine("File transfer completed, Response: " + FileTransferResponseCodeTypes.Finished.Name + " Dfs Hash: " + addFileToDfsResponse.DfsHash); }
public void InitializesFileTransferOnSuccessResponse() { var channelHandlerContext = Substitute.For <IChannelHandlerContext>(); var senderPeerId = PeerIdHelper.GetPeerId(); var correlationId = CorrelationId.GenerateCorrelationId(); var addFileResponse = new AddFileToDfsResponse { DfsHash = "Test", ResponseCode = ByteString.CopyFrom((byte)FileTransferResponseCodeTypes.Successful) }; var addFileToDfsResponseObserver = new AddFileToDfsResponseObserver( Substitute.For <ILogger>(), _uploadFileTransferFactory ); addFileToDfsResponseObserver.HandleResponseObserver(addFileResponse, channelHandlerContext, senderPeerId, correlationId); _uploadFileTransferFactory.Received(1) .FileTransferAsync(Arg.Any <ICorrelationId>(), Arg.Any <CancellationToken>()); }