예제 #1
0
        public void ExceptionToError()
        {
            var fulcrumException = new FulcrumAssertionFailedException(Guid.NewGuid().ToString())
            {
                TechnicalMessage             = Guid.NewGuid().ToString(),
                FriendlyMessage              = Guid.NewGuid().ToString(),
                CorrelationId                = Guid.NewGuid().ToString(),
                Code                         = Guid.NewGuid().ToString(),
                ErrorLocation                = Guid.NewGuid().ToString(),
                MoreInfoUrl                  = Guid.NewGuid().ToString(),
                RecommendedWaitTimeInSeconds = 100.0,
                ServerTechnicalName          = Guid.NewGuid().ToString()
            };
            var fulcrumError = new FulcrumError();

            fulcrumError.CopyFrom(fulcrumException);

            // Equal
            UT.Assert.AreEqual(fulcrumError.Code, fulcrumException.Code);
            UT.Assert.AreEqual(fulcrumError.RecommendedWaitTimeInSeconds, fulcrumException.RecommendedWaitTimeInSeconds);
            UT.Assert.AreEqual(fulcrumError.ServerTechnicalName, fulcrumException.ServerTechnicalName);
            UT.Assert.AreEqual(fulcrumError.FriendlyMessage, fulcrumException.FriendlyMessage);
            UT.Assert.AreEqual(fulcrumError.Type, fulcrumException.Type);
            UT.Assert.AreEqual(fulcrumError.MoreInfoUrl, fulcrumException.MoreInfoUrl);
            UT.Assert.AreEqual(fulcrumError.ServerTechnicalName, fulcrumException.ServerTechnicalName);
            UT.Assert.AreEqual(fulcrumError.CorrelationId, fulcrumException.CorrelationId);
            UT.Assert.AreEqual(fulcrumError.InstanceId, fulcrumException.InstanceId);
            UT.Assert.AreEqual(fulcrumError.IsRetryMeaningful, fulcrumException.IsRetryMeaningful);
            UT.Assert.AreEqual(fulcrumError.ErrorLocation, fulcrumException.ErrorLocation);
            UT.Assert.AreEqual(fulcrumError.InstanceId, fulcrumException.InstanceId);
            UT.Assert.AreEqual(fulcrumError.InnerInstanceId, fulcrumException.InnerInstanceId);

            // Other tests
            UT.Assert.IsNull(fulcrumException.InnerException);
        }
        /// <summary>
        /// Convert an exception (<paramref name="exception"/>) into a <see cref="FulcrumError"/>.
        /// </summary>
        public static FulcrumError ToFulcrumError(Exception exception, bool topLevelMustBeFulcrumException)
        {
            if (exception == null)
            {
                return(null);
            }
            var fulcrumError = new FulcrumError();

            if ((exception is FulcrumException fulcrumException))
            {
                fulcrumError.CopyFrom(fulcrumException);
            }
        /// <summary>
        /// Convert an exception (<paramref name="e"/>) into a <see cref="FulcrumError"/>.
        /// </summary>
        public static FulcrumError ToFulcrumError(Exception e)
        {
            var fulcrumException = e as FulcrumException;

            if (fulcrumException == null)
            {
                return(null);
            }
            var error = new FulcrumError();

            error.CopyFrom(fulcrumException);
            error.InnerError = ToFulcrumError(fulcrumException.InnerException);
            return(error);
        }
예제 #4
0
        public async Task ConvertNormal()
        {
            var fulcrumException = new FulcrumServiceContractException("Test message");
            var fulcrumError     = new FulcrumError();

            fulcrumError.CopyFrom(fulcrumException);
            Assert.IsNotNull(fulcrumError);
            var json            = JObject.FromObject(fulcrumError);
            var content         = json.ToString(Formatting.Indented);
            var responseMessage = new HttpResponseMessage(HttpStatusCode.BadRequest)
            {
                Content = new StringContent(content, Encoding.UTF8)
            };
            var result = await ExceptionConverter.ToFulcrumExceptionAsync(responseMessage);

            Assert.AreEqual(fulcrumException.TechnicalMessage, result.TechnicalMessage);
        }