public async Task Can_Process_GetNeighbourRequest_Correctly()
        {
            // mock a random set of peers
            var randomPeers = new List <Peer>
            {
                new Peer {
                    PeerId = PeerIdHelper.GetPeerId("peer1"), LastSeen = DateTime.Now
                },
                new Peer {
                    PeerId = PeerIdHelper.GetPeerId("peer2"), LastSeen = DateTime.Now
                },
                new Peer {
                    PeerId = PeerIdHelper.GetPeerId("peer3"), LastSeen = DateTime.Now
                },
                new Peer {
                    PeerId = PeerIdHelper.GetPeerId("peer4"), LastSeen = DateTime.Now
                },
                new Peer {
                    PeerId = PeerIdHelper.GetPeerId("peer5"), LastSeen = DateTime.Now
                },
                new Peer {
                    PeerId = PeerIdHelper.GetPeerId("peer6")
                }
            };

            // add them to the mocked repository, and set return expectation
            AddMockPeerToDbAndSetReturnExpectation(randomPeers, _subbedPeerRepository);

            var peerSettings            = _peerId.ToSubstitutedPeerSettings();
            var neighbourRequestHandler = new GetNeighbourRequestObserver(peerSettings,
                                                                          _subbedPeerRepository,
                                                                          _subbedLogger
                                                                          );

            var peerNeighbourRequestMessage = new PeerNeighborsRequest();

            var fakeContext  = Substitute.For <IChannelHandlerContext>();
            var channeledAny = new ObserverDto(fakeContext,
                                               peerNeighbourRequestMessage.ToProtocolMessage(PeerIdHelper.GetPeerId(),
                                                                                             CorrelationId.GenerateCorrelationId()));
            var observableStream = new[] { channeledAny }.ToObservable(_testScheduler);

            neighbourRequestHandler.StartObserving(observableStream);

            var peerNeighborsResponseMessage = new PeerNeighborsResponse();

            for (var i = 0; i < 5; i++)
            {
                peerNeighborsResponseMessage.Peers.Add(PeerIdHelper.GetPeerId());
            }

            _testScheduler.Start();

            await fakeContext.Channel.ReceivedWithAnyArgs(1)
            .WriteAndFlushAsync(
                peerNeighborsResponseMessage.ToProtocolMessage(_peerId, CorrelationId.GenerateCorrelationId()));
        }
        public async Task Can_receive_PeerNeighborsRequest()
        {
            var pingRequestHandler = new TestMessageObserver <PeerNeighborsRequest>(_logger);
            var request            = new PeerNeighborsRequest().ToProtocolMessage(_pid, _guid);

            await InitialisePeerServiceAndSendMessage(pingRequestHandler, request).ConfigureAwait(false);

            pingRequestHandler.SubstituteObserver.Received().OnNext(Arg.Any <PeerNeighborsRequest>());
        }
Example #3
0
        private ProtocolMessage GetSignedMessage()
        {
            var protocolMessage = new PeerNeighborsRequest()
                                  .ToProtocolMessage(_senderId, CorrelationId.GenerateCorrelationId());

            var signedMessage = protocolMessage.Sign();

            return(signedMessage);
        }