Exemple #1
0
        private bool ConnectToPeer(PeerAddressManager peerAddressManager, Mock <INetworkPeerFactory> networkPeerFactoryExisting, ConnectionManagerSettings connectionManagerSettingsExisting, PeerConnectorConnectNode peerConnector, IPEndPoint endpointNode, Mock <IConnectionManager> mockConnectionManager)
        {
            peerAddressManager.AddPeer(endpointNode, IPAddress.Loopback);
            var networkPeer = new Mock <INetworkPeer>();

            networkPeer.SetupGet(np => np.PeerEndPoint).Returns(new IPEndPoint(endpointNode.Address, endpointNode.Port));
            networkPeer.SetupGet(np => np.RemoteSocketAddress).Returns(endpointNode.Address);
            networkPeer.SetupGet(np => np.RemoteSocketPort).Returns(endpointNode.Port);
            networkPeer.SetupGet(np => np.State).Returns(NetworkPeerState.HandShaked);
            networkPeerFactoryExisting.Setup(npf =>
                                             npf.CreateConnectedNetworkPeerAsync(It.Is <IPEndPoint>(x => Equals(x, endpointNode)),
                                                                                 It.IsAny <NetworkPeerConnectionParameters>(), It.IsAny <NetworkPeerDisposer>())).Returns(Task.FromResult(networkPeer.Object));
            connectionManagerSettingsExisting.AddNode.Add(endpointNode);
            connectionManagerSettingsExisting.Connect.Add(endpointNode);

            NetworkPeerCollection connectedPeers = (NetworkPeerCollection)mockConnectionManager.Object.ConnectedPeers;

            foreach (INetworkPeer peer in peerConnector.ConnectorPeers)
            {
                if (!connectedPeers.Contains(peer))
                {
                    connectedPeers.Add(peer);
                }
            }

            mockConnectionManager.SetupGet(np => np.ConnectedPeers).Returns(connectedPeers);
            peerConnector.Initialize(mockConnectionManager.Object);

            peerConnector.OnConnectAsync().GetAwaiter().GetResult();
            return(peerConnector.ConnectorPeers.Select(p => p.PeerEndPoint).Contains(endpointNode));
        }