public void ThrowsForNoExceptionOrMessage() { var builder = new SentryEventBuilder(); Assert.Throws <InvalidOperationException>(() => builder.Build()); }
public void SetMessage(string message) { var builder = new SentryEventBuilder() .SetMessage(message); Assert.Equal(message, builder.Build().Message); }
public void SetErrorLevel(ErrorLevel level) { var builder = new SentryEventBuilder() .SetException(new Exception()) .SetErrorLevel(level); Assert.Equal(level, builder.Build().Level); }
public void SetTransaction(string transaction) { var builder = new SentryEventBuilder() .SetException(new Exception()) .SetTransaction(transaction); Assert.Equal(transaction, builder.Build().Culprit); }
public void AddFingerprintData(params string[] data) { var builder = new SentryEventBuilder() .SetException(new Exception()) .AddFingerprintData(data); Assert.Equal(data, builder.Build().Fingerprint); }
public void AddExtraData(string name, object value) { var builder = new SentryEventBuilder() .SetException(new Exception()) .AddExtraData(name, value); var extraData = builder.Build().Extra; Assert.Equal(name, extraData.First().Key); Assert.Equal(value, extraData.First().Value); }
public void AddTag(string name, string value) { var builder = new SentryEventBuilder() .SetException(new Exception()) .AddTag(name, value); var kvp = builder.Build().Tags.First(); Assert.Equal(name, kvp.Key); Assert.Equal(value, kvp.Value); }
public void SetException() { var exception = new Exception(); var builder = new SentryEventBuilder() .SetException(exception); Assert.Equal( exception.GetType().FullName, builder.Build().Exception.Type); }
public void SetUserData() { var expectedData = new UserData(); var builder = new SentryEventBuilder() .SetException(new Exception()) .SetUserData(expectedData); var userData = builder.Build().User; Assert.Same(expectedData, userData); }
public void SetRequestData() { var expectedData = new RequestData(); var builder = new SentryEventBuilder() .SetException(new Exception()) .SetRequestData(expectedData); var requestData = builder.Build().Request; Assert.Same(expectedData, requestData); }
public static SentryEventBuilder AddUserInformation(this SentryEventBuilder builder, HttpContext context) { if (context.User != null) { builder.User = new UserSentryContext { Id = context.User.FindFirst(ClaimTypes.NameIdentifier)?.Value, Username = context.User.FindFirst(ClaimTypes.Name)?.Value, Email = context.User.FindFirst(ClaimTypes.Email)?.Value, IpAddress = context.Connection.RemoteIpAddress.ToString() }; } return(builder); }
private static async Task SendToSentryAsync(SentryEventBuilder builder, Exception e) { try { await builder.CaptureAsync(); } catch (SentryClientException sentryClientException) { Console.Error.WriteLine("Exception during communication with Sentry:"); Console.Error.WriteLine(sentryClientException.ToString()); Console.Error.WriteLine("The following exception was thus NOT reported to Sentry:"); Console.Error.WriteLine(e.ToString()); Console.Error.WriteLine(); } }
public void SetContexts() { var contexts = new ContextsData { OperatingSystem = new OperatingSystemData(), Device = new DeviceData(), Runtime = new RuntimeData() }; var builder = new SentryEventBuilder() .SetException(new Exception()) .SetContexts(contexts); Assert.Equal(contexts, builder.Build().Contexts); Assert.Equal(contexts.OperatingSystem, contexts["os"]); Assert.Equal(contexts.Device, contexts["device"]); Assert.Equal(contexts.Runtime, contexts["runtime"]); }
public static async Task <bool> BeforeSendAsync( SentryEventBuilder builder, HttpContext http) { var data = builder.Build(); if (data.Exception.Message == "You shall not pass!") { builder.SetErrorLevel(ErrorLevel.Debug); // Send event return(true); } await Task.Delay(100); // Reject event return(false); }
public void AddEnumerableExtraData(params object[] data) { var builder = new SentryEventBuilder() .SetException(new Exception()) .AddExtraData(ToNamedPairs <object>(data)); var extraData = builder.Build().Extra; var idx = 0; for (var c = 1; idx < extraData.Count; c += 2) { var pair = extraData.ElementAt(idx); Assert.Equal(data[c - 1], pair.Key); Assert.Equal(data[c], pair.Value); idx++; } }
public static SentryEventBuilder AddRequestInformation( this SentryEventBuilder builder, HttpContext context, SentryDotNetOptions options) { var request = context.Request; builder.Request = new HttpSentryContext { Url = $"{request.Scheme}://{request.Host}{request.Path}", Method = request.Method.ToUpper(CultureInfo.InvariantCulture), QueryString = request.QueryString.ToString(), Headers = request.Headers.ToDictionary(h => h.Key, h => h.Value.ToString()), Env = new Dictionary <string, string> { { "REMOTE_ADDR", context.Connection.RemoteIpAddress.ToString() } }, Data = options.CaptureRequestBody ? ReadBody(request, options) : null }; return(builder); }