Exemple #1
0
        private void Roundtrip <TException>()
            where TException : JsonServicesException
        {
            // source exception
            var src = Activator.CreateInstance(typeof(TException), nonPublic: true) as TException;

            src.Details   = Guid.NewGuid().ToString();
            src.MessageId = Guid.NewGuid().ToString();

            // Exception -> JSON-RPC Error
            var error = new Error
            {
                Code    = src.Code,
                Message = src.Message,
                Data    = src.Details,
            };

            // JSON-RPC Error -> Exception
            var nex = JsonServicesException.Create(error, src.MessageId);

            Assert.AreSame(src.GetType(), nex.GetType());
            Assert.AreEqual(src.Code, nex.Code);
            Assert.AreEqual(src.Message, nex.Message);
            Assert.AreEqual(src.MessageId, nex.MessageId);
            Assert.AreEqual(src.Details, nex.Details);
        }
        private void HandleResponseMessage(ResponseMessage responseMessage, string debugData)
        {
            if (!PendingMessages.TryRemove(responseMessage.Id, out var pm))
            {
                // got the unknown answer message
                // cannot throw here because we're on the worker thread
                var ex    = new InternalErrorException($"Got a response for the unknown message #{responseMessage.Id}: {debugData}");
                var eargs = new ThreadExceptionEventArgs(ex);
                UnhandledException?.Invoke(this, eargs);
                return;
            }

            var tcs = pm.CompletionSource;

            // signal the remote exception
            if (responseMessage.Error != null)
            {
                var exception = JsonServicesException.Create(responseMessage.Error);
                tcs.TrySetException(exception);
                return;
            }

            // signal the result
            tcs.TrySetResult(responseMessage.Result);
        }
Exemple #3
0
        public void GetExceptionTypesReturnsAllExceptionTypes()
        {
            var types = JsonServicesException.GetExceptionTypes();

            Assert.AreEqual(typeof(AuthFailedException), types[AuthFailedException.ErrorCode]);
            Assert.AreEqual(typeof(AuthRequiredException), types[AuthRequiredException.ErrorCode]);
            Assert.AreEqual(typeof(ClientDisconnectedException), types[ClientDisconnectedException.ErrorCode]);
            Assert.AreEqual(typeof(InternalErrorException), types[InternalErrorException.ErrorCode]);
            Assert.AreEqual(typeof(InvalidRequestException), types[InvalidRequestException.ErrorCode]);
            Assert.AreEqual(typeof(MethodNotFoundException), types[MethodNotFoundException.ErrorCode]);
            Assert.AreEqual(typeof(ParseErrorException), types[ParseErrorException.ErrorCode]);
        }
Exemple #4
0
        public void JsonServicesExceptionHasCodeMessageAndMessageId()
        {
            var ex = new JsonServicesException(123, "Hello")
            {
                MessageId = "MsgId",
                Details   = "Divide by zero or whatever",
            };

            Assert.AreEqual(123, ex.Code);
            Assert.AreEqual("Hello", ex.Message);
            Assert.AreEqual("MsgId", ex.MessageId);
            Assert.AreEqual("Divide by zero or whatever", ex.Details);
        }