Exemplo n.º 1
0
        public void CallServer_And_Receive_Call_Result_ViaRpcServer()
        {
            MockListener <JToken> mockListener = new MockListener <JToken>();

            var wampRpcServiceHost = new WampRpcMetadataCatalog();

            wampRpcServiceHost.Register(new MethodInfoWampRpcMetadata(new AddCalculator()));

            WampRpcServer <JToken> rpcServer =
                new WampRpcServer <JToken>(mFormatter,
                                           wampRpcServiceHost);

            WampListener <JToken> listener = GetListener(mockListener, rpcServer);

            MockConnection <JToken> connection = new MockConnection <JToken>(mFormatter);

            WampRpcClientFactory <JToken> factory =
                new WampRpcClientFactory <JToken>(new WampRpcSerializer(new WampDelegateProcUriMapper(x => "http://www.yogev.com/pr/" + x.Name)),
                                                  new WampRpcClientHandlerBuilder <JToken>(mFormatter,
                                                                                           new WampServerProxyFactory <JToken>(new WampServerProxyBuilder <JToken, IWampRpcClient <JToken>, IWampServer>(new WampOutgoingRequestSerializer <JToken>(mFormatter),
                                                                                                                                                                                                         new WampServerProxyOutgoingMessageHandlerBuilder <JToken, IWampRpcClient <JToken> >(new WampServerProxyIncomingMessageHandlerBuilder <JToken, IWampRpcClient <JToken> >(mFormatter))))));

            listener.Start();

            IAddCalculator calculator = factory.GetClient <IAddCalculator>(connection.SideAToSideB);

            mockListener.OnNext(connection.SideBToSideA);

            int sixteen = calculator.Add(10, 6);

            Assert.That(sixteen, Is.EqualTo(16));
        }
Exemplo n.º 2
0
 public void Dispose()
 {
     if (mListener != null)
     {
         mListener.Stop();
         mListener = null;
     }
 }
Exemplo n.º 3
0
        public WampHost(IWampServerBuilder <TMessage> serverBuilder, IWampConnectionListener <TMessage> connectionListener, IWampFormatter <TMessage> formatter)
        {
            mFormatter = formatter;

            mMetadataCatalog = new WampRpcMetadataCatalog();

            mTopicContainer = new WampTopicContainer <TMessage>();

            mServer = serverBuilder.Build(formatter, mMetadataCatalog, mTopicContainer);

            mListener = GetWampListener(connectionListener, formatter, mServer);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates a new instance of <see cref="WampBindingHost{TMessage}"/>
        /// </summary>
        /// <param name="realmContainer">The <see cref="IWampRealmContainer"/> this binding host
        /// is associated with.</param>
        /// <param name="connectionListener">The <see cref="IWampConnectionListener{TMessage}"/> this
        /// binding host listens to.</param>
        /// <param name="binding">The <see cref="IWampBinding{TMessage}"/> associated with this binding host.</param>
        public WampBindingHost(IWampHostedRealmContainer realmContainer, IWampRouterBuilder builder, IWampConnectionListener <TMessage> connectionListener, IWampBinding <TMessage> binding)
        {
            IWampOutgoingRequestSerializer outgoingRequestSerializer =
                new WampOutgoingRequestSerializer <TMessage>(binding.Formatter);

            IWampEventSerializer eventSerializer = GetEventSerializer(outgoingRequestSerializer);

            IWampSessionServer <TMessage> session =
                builder.CreateSessionHandler(realmContainer, binding, eventSerializer);

            mSession = session;

            mListener = GetWampListener(connectionListener, binding, outgoingRequestSerializer);
        }
Exemplo n.º 5
0
        public void CallServer_And_Receive_Call_Result()
        {
            MockListener <JToken> mockListener = new MockListener <JToken>();

            Mock <IWampServer <JToken> > serverMock = new Mock <IWampServer <JToken> >();

            serverMock.Setup(x => x.Call(It.IsAny <IWampClient>(),
                                         It.IsAny <string>(),
                                         It.IsAny <string>(),
                                         It.IsAny <JToken[]>()))
            .Callback((IWampClient clientParameter, string callId, string procUrl, JToken[] arguments) =>
            {
                clientParameter.CallResult(callId, new { stuff = "cool" });
            });

            WampListener <JToken> listener = GetListener(mockListener, serverMock.Object);

            Mock <IWampClient <JToken> > clientMock = new Mock <IWampClient <JToken> >();

            MockConnection <JToken> connection = new MockConnection <JToken>(mFormatter);

            IWampServer client = GetClient(connection.SideAToSideB, clientMock.Object);

            listener.Start();
            mockListener.OnNext(connection.SideBToSideA);

            clientMock.Verify(x => x.Welcome(It.IsAny <string>(),
                                             It.IsAny <int>(),
                                             It.IsAny <string>()));

            Mock <IWampClient> userClientMock = new Mock <IWampClient>();

            client.Call(userClientMock.Object, "a123123", "Test",
                        new
            {
                name = "Jack"
            });

            serverMock.Verify(x => x.Call(It.IsAny <IWampClient>(),
                                          "a123123",
                                          "Test",
                                          It.IsAny <JToken[]>()));

            clientMock.Verify(x => x.CallResult("a123123",
                                                It.Is((JToken result) => result.Value <string>("stuff") == "cool")));
        }
Exemplo n.º 6
0
        public void Welcome_OnClient_Connect()
        {
            var    clientMock = new Mock <IWampClient>();
            string sessionId  = "dfgewj324908";

            clientMock.SetupGet(x => x.SessionId).Returns(sessionId);
            MockListener <JToken> mockListener = new MockListener <JToken>();
            WampListener <JToken> listener     = GetListener(mockListener, clientMock.Object);

            listener.Start();
            Mock <IWampConnection <JToken> > connectionMock = new Mock <IWampConnection <JToken> >();

            mockListener.OnNext(connectionMock.Object);

            connectionMock.Raise(x => x.ConnectionOpen += (sender, args) => {},
                                 EventArgs.Empty);

            clientMock.Verify(x => x.Welcome(sessionId, 1, "WampSharp"));
        }
Exemplo n.º 7
0
        public void CallServer_And_Receive_Call_Result_ViaRpcClient()
        {
            MockListener <JToken> mockListener = new MockListener <JToken>();

            Mock <IWampServer <JToken> > serverMock = new Mock <IWampServer <JToken> >();

            serverMock.Setup(x => x.Call(It.IsAny <IWampClient>(),
                                         It.IsAny <string>(),
                                         It.IsAny <string>(),
                                         It.IsAny <JToken[]>()))
            .Callback((IWampClient clientParameter, string callId, string procUrl, JToken[] arguments) =>
            {
                clientParameter.CallResult(callId, 12);
            });

            WampListener <JToken> listener = GetListener(mockListener, serverMock.Object);

            MockConnection <JToken> connection = new MockConnection <JToken>(mFormatter);

            WampRpcClientFactory <JToken> factory =
                new WampRpcClientFactory <JToken>(new WampRpcSerializer(new WampDelegateProcUriMapper(x => x.Name)),
                                                  new WampRpcClientHandlerBuilder <JToken>(mFormatter,
                                                                                           new WampServerProxyFactory <JToken>(new WampServerProxyBuilder <JToken, IWampRpcClient <JToken>, IWampServer>(new WampOutgoingRequestSerializer <JToken>(mFormatter),
                                                                                                                                                                                                         new WampServerProxyOutgoingMessageHandlerBuilder <JToken, IWampRpcClient <JToken> >(new WampServerProxyIncomingMessageHandlerBuilder <JToken, IWampRpcClient <JToken> >(mFormatter))))));

            listener.Start();

            ICalculator calculator = factory.GetClient <ICalculator>(connection.SideAToSideB);

            mockListener.OnNext(connection.SideBToSideA);

            int four = 4;

            int sixteen = calculator.Square(four);

            Assert.That(sixteen, Is.EqualTo(12));

            serverMock.Verify(x => x.Call(It.IsAny <IWampClient>(),
                                          It.IsAny <string>(),
                                          "Square",
                                          It.Is((JToken[] parameters) => parameters[0].Value <int>() == four)));
        }