From 396b05de43524f60793f2afa76832920b17c647e Mon Sep 17 00:00:00 2001 From: Lucas Zimerman Fraulob Date: Tue, 31 Aug 2021 10:18:44 -0300 Subject: [PATCH 1/5] Avoid adding tags with keys from DefaultSentryScopeStateProcessor. --- .../DefaultSentryScopeStateProcessor.cs | 7 ++-- .../DefaultSentryScopeStateProcessorTests.cs | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs diff --git a/src/Sentry/DefaultSentryScopeStateProcessor.cs b/src/Sentry/DefaultSentryScopeStateProcessor.cs index fc182c6a06..692c981c0a 100644 --- a/src/Sentry/DefaultSentryScopeStateProcessor.cs +++ b/src/Sentry/DefaultSentryScopeStateProcessor.cs @@ -11,6 +11,9 @@ namespace Sentry /// public class DefaultSentryScopeStateProcessor : ISentryScopeStateProcessor { + + private char[] _trimFilter = new char[] { '{', '}' }; + /// /// Applies state onto a scope. /// @@ -31,11 +34,9 @@ public void Apply(Scope scope, object state) scope.SetTags(keyValStringObject .Where(kv => !string.IsNullOrEmpty(kv.Value as string)) .Select(k => new KeyValuePair( - k.Key, + k.Key.Trim(_trimFilter), // TODO: Candidate for serialization instead. Likely Contexts is a better fit. k.Value.ToString()!))); - - break; } #if !NET461 diff --git a/test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs b/test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs new file mode 100644 index 0000000000..15cc71b4ea --- /dev/null +++ b/test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.Linq; +using Xunit; + +namespace Sentry.Tests +{ + public class DefaultSentryScopeStateProcessorTests + { + [Theory] + [InlineData("a", "a")] + [InlineData("{}", "")] + [InlineData("{OriginalFormat}", "OriginalFormat")] + [InlineData("OriginalFormat", "OriginalFormat")] + public void Apply_KeyValuePairObjectWithBrackets_TagAddedWithoutBacket(string key, string expectedKey) + { + // Arrange + var expectedValue = "some string"; + var list = new List> + { + new(key, expectedValue) + }; + var scopeStateProcessor = new DefaultSentryScopeStateProcessor(); + var scope = new Scope(); + + // Act + scopeStateProcessor.Apply(scope, list); + + // Assert + Assert.Equal(expectedKey, scope.Tags.First().Key); + Assert.Equal(expectedValue, scope.Tags.First().Value); + } + } +} From 4c20f9c920aa0f978d9ca3b9d11854025d674527 Mon Sep 17 00:00:00 2001 From: Lucas Zimerman Fraulob Date: Thu, 2 Sep 2021 14:04:20 -0300 Subject: [PATCH 2/5] small refactor. --- src/Sentry/DefaultSentryScopeStateProcessor.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Sentry/DefaultSentryScopeStateProcessor.cs b/src/Sentry/DefaultSentryScopeStateProcessor.cs index 692c981c0a..d05321f7be 100644 --- a/src/Sentry/DefaultSentryScopeStateProcessor.cs +++ b/src/Sentry/DefaultSentryScopeStateProcessor.cs @@ -11,7 +11,6 @@ namespace Sentry /// public class DefaultSentryScopeStateProcessor : ISentryScopeStateProcessor { - private char[] _trimFilter = new char[] { '{', '}' }; /// From 603e05a8d3aea3bb15771bf0b567e234beedf723 Mon Sep 17 00:00:00 2001 From: Lucas Zimerman Fraulob Date: Thu, 2 Sep 2021 14:12:56 -0300 Subject: [PATCH 3/5] naming fix. --- CHANGELOG.md | 1 + test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82b986cae4..fe5d5c7af2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixes +- Removed braces from tag keys on DefaultSentryScopeStateProcessor ([#1183](https://github.com/getsentry/sentry-dotnet/pull/1183)) - Add fallback to Scope Stack from AspNet ([#1180](https://github.com/getsentry/sentry-dotnet/pull/1180)) ## 3.9.0 diff --git a/test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs b/test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs index 15cc71b4ea..ba86f83967 100644 --- a/test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs +++ b/test/Sentry.Tests/DefaultSentryScopeStateProcessorTests.cs @@ -11,7 +11,7 @@ public class DefaultSentryScopeStateProcessorTests [InlineData("{}", "")] [InlineData("{OriginalFormat}", "OriginalFormat")] [InlineData("OriginalFormat", "OriginalFormat")] - public void Apply_KeyValuePairObjectWithBrackets_TagAddedWithoutBacket(string key, string expectedKey) + public void Apply_KeyValuePairObjectWithBraces_TagAddedWithoutBraces(string key, string expectedKey) { // Arrange var expectedValue = "some string"; From 623623bdcfd19702344c267f86e925a96f7654c5 Mon Sep 17 00:00:00 2001 From: Lucas Zimerman Fraulob Date: Thu, 2 Sep 2021 14:14:21 -0300 Subject: [PATCH 4/5] new style constructor. --- src/Sentry/DefaultSentryScopeStateProcessor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sentry/DefaultSentryScopeStateProcessor.cs b/src/Sentry/DefaultSentryScopeStateProcessor.cs index d05321f7be..f66f9c9ee8 100644 --- a/src/Sentry/DefaultSentryScopeStateProcessor.cs +++ b/src/Sentry/DefaultSentryScopeStateProcessor.cs @@ -11,7 +11,7 @@ namespace Sentry /// public class DefaultSentryScopeStateProcessor : ISentryScopeStateProcessor { - private char[] _trimFilter = new char[] { '{', '}' }; + private char[] _trimFilter = new[] { '{', '}' }; /// /// Applies state onto a scope. From 46b4f580869b925dfe6a077169993c26cbbf21fd Mon Sep 17 00:00:00 2001 From: Lucas Zimerman Fraulob Date: Wed, 8 Sep 2021 20:59:06 -0300 Subject: [PATCH 5/5] make _trimFilter static. --- src/Sentry/DefaultSentryScopeStateProcessor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Sentry/DefaultSentryScopeStateProcessor.cs b/src/Sentry/DefaultSentryScopeStateProcessor.cs index f66f9c9ee8..bc0842e3f4 100644 --- a/src/Sentry/DefaultSentryScopeStateProcessor.cs +++ b/src/Sentry/DefaultSentryScopeStateProcessor.cs @@ -11,7 +11,7 @@ namespace Sentry /// public class DefaultSentryScopeStateProcessor : ISentryScopeStateProcessor { - private char[] _trimFilter = new[] { '{', '}' }; + private static readonly char[] TrimFilter = { '{', '}' }; /// /// Applies state onto a scope. @@ -33,7 +33,7 @@ public void Apply(Scope scope, object state) scope.SetTags(keyValStringObject .Where(kv => !string.IsNullOrEmpty(kv.Value as string)) .Select(k => new KeyValuePair( - k.Key.Trim(_trimFilter), + k.Key.Trim(TrimFilter), // TODO: Candidate for serialization instead. Likely Contexts is a better fit. k.Value.ToString()!))); break;