Example #1
0
        public void RegisterCatalogErrorCallsCalleeError(Registration[] registrations)
        {
            Mock <IWampRpcOperationCatalog> catalog = new Mock <IWampRpcOperationCatalog>();

            string errorUri = "myerror";
            string argument = "any details";

            catalog.Setup(x => x.Register(It.IsAny <IWampRpcOperation>(),
                                          It.IsAny <RegisterOptions>()))
            .Throws(new WampException(errorUri, argument));

            Mock <IWampCallee> callee = new Mock <IWampCallee>();

            callee.As <IWampConnectionMonitor>();

            WampRpcServer <MockRaw> server =
                new WampRpcServer <MockRaw>
                    (catalog.Object,
                    new MockBinding(),
                    new LooseUriValidator());

            foreach (Registration registration in registrations)
            {
                server.Register(callee.Object, registration.RequestId, registration.Options, registration.Procedure);

                callee.Verify(x => x.Error
                                  ((int)WampMessageType.v2Register,
                                  registration.RequestId,
                                  It.IsAny <object>(),
                                  errorUri,
                                  It.Is((object[] array) => array.SequenceEqual(new[] { argument }))),
                              Times.Exactly(1));
            }
        }
Example #2
0
        public void SuccessfulTaskCallsCallResultWithResult(WampRpcCall call, object result)
        {
            MockRawFormatter formatter = new MockRawFormatter();

            MockRpcCatalog catalog = new MockRpcCatalog();

            call.CallId = Guid.NewGuid().ToString();

            MockRpcMethod mockMethod = GetMockMethod(call);

            mockMethod.Result = result;

            catalog.MapMethod(mockMethod);

            WampRpcServer <MockRaw> server =
                new WampRpcServer <MockRaw>(formatter, catalog);

            MockClient client = new MockClient();

            server.Call(client, call.CallId, call.ProcUri,
                        SerializeArguments(call, formatter));

            Assert.That(client.GetCallErrorByCallId(call.CallId),
                        Is.Null);

            Assert.That(client.GetResultByCallId(call.CallId),
                        Is.EqualTo(result));
        }
Example #3
0
        public void RegisterCallsCatalogRegister(Registration[] registrations)
        {
            Mock <IWampRpcOperationCatalog> catalog = new Mock <IWampRpcOperationCatalog>();

            Mock <IWampCallee> callee = new Mock <IWampCallee>();

            callee.As <IWampConnectionMonitor>();

            WampRpcServer <MockRaw> server =
                new WampRpcServer <MockRaw>
                    (catalog.Object,
                    new MockBinding(),
                    new LooseUriValidator());

            catalog.Setup(x => x.Register
                              (It.IsAny <IWampRpcOperation>(),
                              It.IsAny <RegisterOptions>()))
            .Returns(new RegistrationTokenMock());

            foreach (Registration registration in registrations)
            {
                server.Register(callee.Object, registration.RequestId, registration.Options, registration.Procedure);

                catalog.Verify(x => x.Register
                                   (It.Is <IWampRpcOperation>
                                       (operation => operation.Procedure == registration.Procedure),
                                   It.IsAny <RegisterOptions>()),
                               Times.Exactly(1));

                callee.Verify(x => x.Registered(registration.RequestId, It.IsAny <long>()),
                              Times.Exactly(1));
            }
        }
Example #4
0
        public void SuccessfulTaskCallsCallResultWithResult(WampRpcCall call, object result)
        {
            MockRawFormatter formatter = new MockRawFormatter();

            MockRpcCatalog catalog = new MockRpcCatalog();

            call.CallId = Guid.NewGuid().ToString();

            MockRpcMethod mockMethod = GetMockMethod(call);

            mockMethod.Result = result;

            catalog.MapMethod(mockMethod);

            WampRpcServer<MockRaw> server =
                new WampRpcServer<MockRaw>(formatter, catalog);

            MockClient client = new MockClient();

            server.Call(client, call.CallId, call.ProcUri,
                        SerializeArguments(call, formatter));

            Assert.That(client.GetCallErrorByCallId(call.CallId),
                        Is.Null);

            Assert.That(client.GetResultByCallId(call.CallId),
                        Is.EqualTo(result));
        }
Example #5
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));
        }
Example #6
0
        protected virtual IWampRpcServer <TMessage> BuildRpcServer(IWampFormatter <TMessage> formatter,
                                                                   IWampRpcMetadataCatalog rpcMetadataCatalog)
        {
            WampRpcServer <TMessage> rpcServer = new WampRpcServer <TMessage>(formatter, rpcMetadataCatalog);

            return(rpcServer);
        }
Example #7
0
        public void CallCallsCatalogInvoke(Call call)
        {
            Mock <IWampRpcOperationCatalog> catalog = new Mock <IWampRpcOperationCatalog>();

            Mock <IWampCaller> caller = new Mock <IWampCaller>();

            caller.As <IWampConnectionMonitor>();
            caller.As <IWampClientProxy>();
            caller.As <IWampClientProperties>()
            .Setup(x => x.WelcomeDetails)
            .Returns(new WelcomeDetails());

            WampRpcServer <MockRaw> server =
                new WampRpcServer <MockRaw>
                    (catalog.Object,
                    new MockBinding(),
                    new LooseUriValidator());

            if (call.Arguments == null)
            {
                server.Call(caller.Object, call.RequestId, call.Options, call.Procedure);

                catalog.Verify(x => x.Invoke(It.IsAny <IWampRawRpcOperationRouterCallback>(),
                                             It.IsAny <IWampFormatter <MockRaw> >(),
                                             It.IsAny <InvocationDetails>(),
                                             call.Procedure),
                               Times.Exactly(1));
            }
            else if (call.ArgumentsKeywords == null)
            {
                server.Call(caller.Object, call.RequestId, call.Options, call.Procedure, call.Arguments);

                catalog.Verify(x => x.Invoke(It.IsAny <IWampRawRpcOperationRouterCallback>(),
                                             It.IsAny <IWampFormatter <MockRaw> >(),
                                             It.IsAny <InvocationDetails>(),
                                             call.Procedure,
                                             call.Arguments),
                               Times.Exactly(1));
            }
            else
            {
                server.Call(caller.Object, call.RequestId, call.Options, call.Procedure, call.Arguments, call.ArgumentsKeywords);

                catalog.Verify(x => x.Invoke(It.IsAny <IWampRawRpcOperationRouterCallback>(),
                                             It.IsAny <IWampFormatter <MockRaw> >(),
                                             It.IsAny <InvocationDetails>(),
                                             call.Procedure,
                                             call.Arguments,
                                             call.ArgumentsKeywords),
                               Times.Exactly(1));
            }
        }
Example #8
0
        public void ErrorTaskCallsCallErrorWithError(WampRpcCall call, CallErrorDetails details)
        {
            MockRawFormatter formatter = new MockRawFormatter();

            MockRpcCatalog catalog = new MockRpcCatalog();

            call.CallId = Guid.NewGuid().ToString();

            MockRpcMethod mockMethod = GetMockMethod(call);

            mockMethod.Error =
                new WampRpcCallException(details.ErrorUri,
                                         details.ErrorDesc,
                                         details.ErrorDetails);

            catalog.MapMethod(mockMethod);

            WampRpcServer <MockRaw> server =
                new WampRpcServer <MockRaw>(formatter, catalog);

            MockClient client = new MockClient();

            server.Call(client, call.CallId, call.ProcUri,
                        SerializeArguments(call, formatter));

            Assert.That(client.GetResultByCallId(call.CallId),
                        Is.Null);

            CallErrorDetails error = client.GetCallErrorByCallId(call.CallId);

            Assert.That(error.ErrorDesc,
                        Is.EqualTo(details.ErrorDesc));

            Assert.That(error.ErrorDetails,
                        Is.EqualTo(details.ErrorDetails));

            Assert.That(error.ErrorUri,
                        Is.EqualTo(details.ErrorUri));
        }
Example #9
0
        public void ErrorTaskCallsCallErrorWithError(WampRpcCall call, CallErrorDetails details)
        {
            MockRawFormatter formatter = new MockRawFormatter();

            MockRpcCatalog catalog = new MockRpcCatalog();

            call.CallId = Guid.NewGuid().ToString();

            MockRpcMethod mockMethod = GetMockMethod(call);

            mockMethod.Error =
                new WampRpcCallException(details.ErrorUri,
                                         details.ErrorDesc,
                                         details.ErrorDetails);

            catalog.MapMethod(mockMethod);

            WampRpcServer<MockRaw> server =
                new WampRpcServer<MockRaw>(formatter, catalog);

            MockClient client = new MockClient();

            server.Call(client, call.CallId, call.ProcUri,
                        SerializeArguments(call, formatter));

            Assert.That(client.GetResultByCallId(call.CallId),
                        Is.Null);

            CallErrorDetails error = client.GetCallErrorByCallId(call.CallId);

            Assert.That(error.ErrorDesc,
                        Is.EqualTo(details.ErrorDesc));

            Assert.That(error.ErrorDetails,
                        Is.EqualTo(details.ErrorDetails));

            Assert.That(error.ErrorUri,
                        Is.EqualTo(details.ErrorUri));
        }
        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>();

            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));
        }