public void HandleAsync_ClientCallError_SetsTasksException (WampRpcCall rpcCall, CallErrorDetails callErrorDetails) { MockWampRpcCallManager <MockRaw> callManager = new MockWampRpcCallManager <MockRaw>(); IWampRpcClientHandler handler = GetHandler(client => callManager.GetServer(client)); Task <object> task = handler.HandleAsync(rpcCall); MockWampRpcCallDetails <MockRaw> details = callManager.GetCallDetails(rpcCall.CallId); Assert.IsFalse(task.IsCompleted); object errorDetails = callErrorDetails.ErrorDetails; if (errorDetails == null) { details.Client.CallError(rpcCall.CallId, callErrorDetails.ErrorUri, callErrorDetails.ErrorDesc); } else { details.Client.CallError(rpcCall.CallId, callErrorDetails.ErrorUri, callErrorDetails.ErrorDesc, new MockRaw(errorDetails)); } AggregateException aggregatedException = task.Exception; Assert.IsNotNull(aggregatedException); Exception innerException = aggregatedException.InnerException; Assert.That(innerException, Is.TypeOf(typeof(WampRpcCallException))); WampRpcCallException casted = innerException as WampRpcCallException; Assert.That(casted.Message, Is.EqualTo(callErrorDetails.ErrorDesc)); Assert.That(casted.CallId, Is.EqualTo(rpcCall.CallId)); Assert.That(casted.ErrorUri, Is.EqualTo(callErrorDetails.ErrorUri)); Assert.That(casted.ErrorDetails, Is.EqualTo(errorDetails) .Using(StructuralComparisons.StructuralEqualityComparer)); }
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)); }