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)); } }
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)); }
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)); } }
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)); }
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)); }
protected virtual IWampRpcServer <TMessage> BuildRpcServer(IWampFormatter <TMessage> formatter, IWampRpcMetadataCatalog rpcMetadataCatalog) { WampRpcServer <TMessage> rpcServer = new WampRpcServer <TMessage>(formatter, rpcMetadataCatalog); return(rpcServer); }
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)); } }
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 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)); }