Пример #1
0
        public async Task Can_activate_peer_on_verack_receiving()
        {
            // Arrange
            var blockchain = new NullBlockchain();

            AutoMockContainer.Register <IBlockchain>(blockchain);

            var verAckMessage = new VerAckMessage();
            var version       = new VersionPayload();
            var peerMock      = AutoMockContainer.GetMock <IPeer>();

            peerMock.SetupProperty(x => x.IsReady, false);
            peerMock.SetupProperty(x => x.Version, version);

            blockchain.LastBlockHeader.Index = 1;
            version.CurrentBlockIndex        = 1;

            var messageHandler = AutoMockContainer.Get <VerAckMessageHandler>();

            // Act
            await messageHandler.Handle(verAckMessage, peerMock.Object);

            // Assert
            peerMock.Object.IsReady.Should().BeTrue();
        }
Пример #2
0
        public async Task Can_send_get_block_headers_message_if_peer_block_header_height_is_different()
        {
            // Arrange
            var blockchain = new NullBlockchain();

            AutoMockContainer.Register <IBlockchain>(blockchain);

            var verAckMessage = new VerAckMessage();
            var version       = new VersionPayload();
            var peerMock      = AutoMockContainer.GetMock <IPeer>();

            peerMock.SetupProperty(x => x.Version, version);

            blockchain.LastBlockHeader.Index = 1;
            version.CurrentBlockIndex        = 2;

            var messageHandler = AutoMockContainer.Get <VerAckMessageHandler>();

            // Act
            await messageHandler.Handle(verAckMessage, peerMock.Object);

            // Assert
            peerMock.Verify(x => x.Send(It.IsAny <GetBlockHeadersMessage>()), Times.Once);
        }