@ -1,24 +1,25 @@
using NUnit.Framework ;
using FluentAssertions ;
using NzbDrone.Common.Instrumentation.Sentry ;
using System ;
using NLog ;
using NzbDrone.Test.Common ;
using System.Globalization ;
using System.Linq ;
using FluentAssertions ;
using NLog ;
using NUnit.Framework ;
using NzbDrone.Common.Instrumentation.Sentry ;
using NzbDrone.Test.Common ;
namespace NzbDrone.Common.Test.InstrumentationTests
{
[TestFixture]
public class SentryTargetFixture : TestBase
{
private SentryTarget S ubject;
private SentryTarget _s ubject;
private static LogLevel [ ] AllLevels = LogLevel . AllLevels . ToArray ( ) ;
private static LogLevel [ ] SentryLevels = LogLevel . AllLevels . Where ( x = > x > = LogLevel . Error ) . ToArray ( ) ;
private static LogLevel [ ] OtherLevels = AllLevels . Except ( SentryLevels ) . ToArray ( ) ;
private static Exception [ ] FilteredExceptions = new Exception [ ] {
private static Exception [ ] FilteredExceptions = new Exception [ ]
{
new UnauthorizedAccessException ( ) ,
new TinyIoC . TinyIoCResolutionException ( typeof ( string ) )
} ;
@ -26,7 +27,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
[SetUp]
public void Setup ( )
{
S ubject = new SentryTarget ( "https://aaaaaaaaaaaaaaaaaaaaaaaaaa@sentry.io/111111" ) ;
_s ubject = new SentryTarget ( "https://aaaaaaaaaaaaaaaaaaaaaaaaaa@sentry.io/111111" ) ;
}
private LogEventInfo GivenLogEvent ( LogLevel level , Exception ex , string message )
@ -34,44 +35,50 @@ namespace NzbDrone.Common.Test.InstrumentationTests
return LogEventInfo . Create ( level , "SentryTest" , ex , CultureInfo . InvariantCulture , message ) ;
}
[Test, TestCaseSource("AllLevels")]
[Test]
[TestCaseSource("AllLevels")]
public void log_without_error_is_not_sentry_event ( LogLevel level )
{
S ubject. IsSentryMessage ( GivenLogEvent ( level , null , "test" ) ) . Should ( ) . BeFalse ( ) ;
_s ubject. IsSentryMessage ( GivenLogEvent ( level , null , "test" ) ) . Should ( ) . BeFalse ( ) ;
}
[Test, TestCaseSource("SentryLevels")]
[Test]
[TestCaseSource("SentryLevels")]
public void error_or_worse_with_exception_is_sentry_event ( LogLevel level )
{
S ubject. IsSentryMessage ( GivenLogEvent ( level , new Exception ( ) , "test" ) ) . Should ( ) . BeTrue ( ) ;
_s ubject. IsSentryMessage ( GivenLogEvent ( level , new Exception ( ) , "test" ) ) . Should ( ) . BeTrue ( ) ;
}
[Test, TestCaseSource("OtherLevels")]
[Test]
[TestCaseSource("OtherLevels")]
public void less_than_error_with_exception_is_not_sentry_event ( LogLevel level )
{
S ubject. IsSentryMessage ( GivenLogEvent ( level , new Exception ( ) , "test" ) ) . Should ( ) . BeFalse ( ) ;
_s ubject. IsSentryMessage ( GivenLogEvent ( level , new Exception ( ) , "test" ) ) . Should ( ) . BeFalse ( ) ;
}
[Test, TestCaseSource("FilteredExceptions")]
[Test]
[TestCaseSource("FilteredExceptions")]
public void should_filter_event_for_filtered_exception_types ( Exception ex )
{
var log = GivenLogEvent ( LogLevel . Error , ex , "test" ) ;
S ubject. IsSentryMessage ( log ) . Should ( ) . BeFalse ( ) ;
_s ubject. IsSentryMessage ( log ) . Should ( ) . BeFalse ( ) ;
}
[Test, TestCaseSource("FilteredExceptions")]
[Test]
[TestCaseSource("FilteredExceptions")]
public void should_not_filter_event_for_filtered_exception_types_if_filtering_disabled ( Exception ex )
{
S ubject. FilterEvents = false ;
_s ubject. FilterEvents = false ;
var log = GivenLogEvent ( LogLevel . Error , ex , "test" ) ;
S ubject. IsSentryMessage ( log ) . Should ( ) . BeTrue ( ) ;
_s ubject. IsSentryMessage ( log ) . Should ( ) . BeTrue ( ) ;
}
[Test, TestCaseSource(typeof(SentryTarget), "FilteredExceptionMessages")]
[Test]
[TestCaseSource(typeof(SentryTarget), "FilteredExceptionMessages")]
public void should_filter_event_for_filtered_exception_messages ( string message )
{
var log = GivenLogEvent ( LogLevel . Error , new Exception ( "aaaaaaa" + message + "bbbbbbb" ) , "test" ) ;
S ubject. IsSentryMessage ( log ) . Should ( ) . BeFalse ( ) ;
_s ubject. IsSentryMessage ( log ) . Should ( ) . BeFalse ( ) ;
}
[TestCase("A message that isn't filtered")]
@ -79,7 +86,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
public void should_not_filter_event_for_exception_messages_that_are_not_filtered ( string message )
{
var log = GivenLogEvent ( LogLevel . Error , new Exception ( message ) , "test" ) ;
S ubject. IsSentryMessage ( log ) . Should ( ) . BeTrue ( ) ;
_s ubject. IsSentryMessage ( log ) . Should ( ) . BeTrue ( ) ;
}
}
}
}