Пример #1
0
        public void ThrowsForNoExceptionOrMessage()
        {
            var builder = new SentryEventBuilder();

            Assert.Throws <InvalidOperationException>(()
                                                      => builder.Build());
        }
Пример #2
0
        public void SetMessage(string message)
        {
            var builder = new SentryEventBuilder()
                          .SetMessage(message);

            Assert.Equal(message, builder.Build().Message);
        }
Пример #3
0
        public void SetErrorLevel(ErrorLevel level)
        {
            var builder = new SentryEventBuilder()
                          .SetException(new Exception())
                          .SetErrorLevel(level);

            Assert.Equal(level, builder.Build().Level);
        }
Пример #4
0
        public void SetTransaction(string transaction)
        {
            var builder = new SentryEventBuilder()
                          .SetException(new Exception())
                          .SetTransaction(transaction);

            Assert.Equal(transaction, builder.Build().Culprit);
        }
Пример #5
0
        public void AddFingerprintData(params string[] data)
        {
            var builder = new SentryEventBuilder()
                          .SetException(new Exception())
                          .AddFingerprintData(data);

            Assert.Equal(data, builder.Build().Fingerprint);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        public void SetException()
        {
            var exception = new Exception();

            var builder = new SentryEventBuilder()
                          .SetException(exception);

            Assert.Equal(
                exception.GetType().FullName,
                builder.Build().Exception.Type);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #12
0
 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();
     }
 }
Пример #13
0
        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"]);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }