Skip to content

Commit 4b31275

Browse files
committed
Added failing test for serialization of nested exceptions.
1 parent b0e4355 commit 4b31275

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

Source/Tests/Exceptionless.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@
161161
<Project>{693F3CBF-5BC7-457D-9F31-BDD89C72677E}</Project>
162162
<Name>Exceptionless.Extras</Name>
163163
</ProjectReference>
164+
<ProjectReference Include="..\Platforms\Console\Exceptionless.csproj">
165+
<Project>{1e53d5cd-1719-4bfb-a9a8-7d46baca6402}</Project>
166+
<Name>Exceptionless</Name>
167+
</ProjectReference>
164168
<ProjectReference Include="..\Shared\Exceptionless.Portable.csproj">
165169
<Project>{14dfd206-b445-4d52-9c3c-8b2f69b22b91}</Project>
166170
<Name>Exceptionless.Portable</Name>

Source/Tests/Serializer/SerializerTests.cs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
using Exceptionless.Models;
77
using Exceptionless.Serializer;
88
using Xunit;
9+
using System.Reflection;
10+
using Exceptionless.Submission;
11+
using Moq;
12+
using System.Linq;
13+
using Exceptionless.Models.Data;
14+
using Exceptionless.Dependency;
915

1016
namespace Exceptionless.Tests.Serializer {
1117
public class SerializerTests {
@@ -98,6 +104,59 @@ public void WillDeserializeReferenceIds() {
98104
var ev = (Event)serializer.Deserialize(@"{""reference_id"": ""123"" }", typeof(Event));
99105
Assert.Equal("123", ev.ReferenceId);
100106
}
107+
108+
[Fact]
109+
public void WillSerializeDeepExceptionWithStackInformation()
110+
{
111+
try
112+
{
113+
try
114+
{
115+
try
116+
{
117+
throw new ArgumentException("This is the inner argument exception", "wrongArg");
118+
}
119+
catch (Exception e1)
120+
{
121+
throw new TargetInvocationException("Target invocation exception. Blah blah blah blah.", e1);
122+
}
123+
}
124+
catch (Exception e2)
125+
{
126+
throw new TargetInvocationException("Outer Exception. This is some text of the outer exception.", e2);
127+
}
128+
}
129+
catch (Exception exception)
130+
{
131+
Event e = null;
132+
IJsonSerializer serializer = null;
133+
134+
var submissionMock = new Mock<ISubmissionClient>();
135+
submissionMock.Setup(c => c.PostEvents(It.IsAny<IEnumerable<Event>>(), It.IsAny<ExceptionlessConfiguration>(), It.IsAny<IJsonSerializer>()))
136+
.Returns((IEnumerable<Event> a, ExceptionlessConfiguration b, IJsonSerializer c) => {
137+
e = a.Single();
138+
serializer = c;
139+
return new SubmissionResponse(200);
140+
});
141+
142+
ExceptionlessClient.Default.Configuration.Resolver.Register(submissionMock.Object);
143+
ExceptionlessClient.Default.Configuration.ApiKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
144+
ExceptionlessExtensions.Register(ExceptionlessClient.Default);
145+
exception.ToExceptionless().Submit();
146+
ExceptionlessClient.Default.ProcessQueue();
147+
148+
var innerLineNumber = e.Data.GetValue<Error>(Event.KnownDataKeys.Error)
149+
.Inner
150+
.Inner
151+
.StackTrace.Single()
152+
.LineNumber;
153+
154+
var serialized = serializer.Serialize(e);
155+
var expected = string.Format("\"line_number\":{0}", innerLineNumber);
156+
157+
Assert.Contains(expected, serialized);
158+
}
159+
}
101160
}
102161

103162
public class Blah {

0 commit comments

Comments
 (0)