public async Task send_data_request_should_succeed_for_valid_deposit() { var depositId = Keccak.Zero; var deposit = GetDepositDetails(DepositConfirmationTimestamp, DepositExpiryTime); _depositProvider.GetAsync(depositId).Returns(deposit); _wallet.IsUnlocked(deposit.Consumer).Returns(true); var provider = Substitute.For <INdmPeer>(); _providerService.GetPeer(deposit.DataAsset.Provider.Address).Returns(provider); var sessions = new List <ConsumerSession> { GetConsumerSession() }; var dataRequest = new DataRequest(Keccak.OfAnEmptyString, 1, 1, 1, Array.Empty <byte>(), Address.Zero, Address.Zero, null); var sessionsPagedResult = PagedResult <ConsumerSession> .Create(sessions, 1, 1, 1, 1); _sessionRepository.BrowseAsync(Arg.Any <GetConsumerSessions>()).Returns(sessionsPagedResult); _dataRequestFactory.Create(deposit.Deposit, deposit.DataAsset.Id, deposit.DataAsset.Provider.Address, deposit.Consumer, deposit.Pepper).Returns(dataRequest); var consumedUnits = (uint)sessions.Sum(s => s.ConsumedUnits); provider.SendDataRequestAsync(dataRequest, consumedUnits).Returns(DataRequestResult.DepositVerified); var result = await _dataRequestService.SendAsync(depositId); result.Should().Be(DataRequestResult.DepositVerified); await _depositProvider.Received(1).GetAsync(depositId); _wallet.Received(1).IsUnlocked(deposit.Consumer); await _kycVerifier.DidNotReceive().IsVerifiedAsync(deposit.DataAsset.Id, deposit.Consumer); _providerService.Received(1).GetPeer(deposit.DataAsset.Provider.Address); await _sessionRepository.Received(1).BrowseAsync(Arg.Any <GetConsumerSessions>()); _dataRequestFactory.Received(1).Create(deposit.Deposit, deposit.DataAsset.Id, deposit.DataAsset.Provider.Address, deposit.Consumer, deposit.Pepper); await provider.Received(1).SendDataRequestAsync(dataRequest, consumedUnits); await _consumerNotifier.Received(1).SendDataRequestResultAsync(depositId, result); }
private DataRequest CreateDataRequest(DepositDetails deposit) => _dataRequestFactory.Create(deposit.Deposit, deposit.DataAsset.Id, deposit.DataAsset.Provider.Address, deposit.Consumer, deposit.Pepper);