From aa0f719b76408c15ccc08e3e81a17294c3f5a189 Mon Sep 17 00:00:00 2001 From: Dominick Baier Date: Mon, 14 Feb 2022 09:53:51 +0100 Subject: [PATCH 1/2] first cut --- .../Extensions/StringsExtensions.cs | 9 +-------- src/IdentityServer/Extensions/StringsExtensions.cs | 10 +--------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/EntityFramework.Storage/Extensions/StringsExtensions.cs b/src/EntityFramework.Storage/Extensions/StringsExtensions.cs index 1f466258c..2704e6446 100644 --- a/src/EntityFramework.Storage/Extensions/StringsExtensions.cs +++ b/src/EntityFramework.Storage/Extensions/StringsExtensions.cs @@ -22,14 +22,7 @@ public static string ToSpaceSeparatedString(this IEnumerable list) return string.Empty; } - var sb = new StringBuilder(100); - - foreach (var element in list) - { - sb.Append(element + " "); - } - - return sb.ToString().Trim(); + return String.Join(' ', list); } [DebuggerStepThrough] diff --git a/src/IdentityServer/Extensions/StringsExtensions.cs b/src/IdentityServer/Extensions/StringsExtensions.cs index d3b3afad6..34a5ea138 100644 --- a/src/IdentityServer/Extensions/StringsExtensions.cs +++ b/src/IdentityServer/Extensions/StringsExtensions.cs @@ -15,7 +15,6 @@ namespace Duende.IdentityServer.Extensions; internal static class StringExtensions { - // todo: use string.Join instead! [DebuggerStepThrough] public static string ToSpaceSeparatedString(this IEnumerable list) { @@ -24,14 +23,7 @@ public static string ToSpaceSeparatedString(this IEnumerable list) return string.Empty; } - var sb = new StringBuilder(100); - - foreach (var element in list) - { - sb.Append(element + " "); - } - - return sb.ToString().Trim(); + return String.Join(' ', list); } [DebuggerStepThrough] From f1fdfaccaa93ff5b0ec9abfc6001b6a15864684d Mon Sep 17 00:00:00 2001 From: Brock Allen Date: Tue, 15 Feb 2022 10:43:18 -0500 Subject: [PATCH 2/2] added some tests --- .../Extensions/StringExtensionsTests.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/test/IdentityServer.UnitTests/Extensions/StringExtensionsTests.cs b/test/IdentityServer.UnitTests/Extensions/StringExtensionsTests.cs index 8817c43cd..a8297885c 100644 --- a/test/IdentityServer.UnitTests/Extensions/StringExtensionsTests.cs +++ b/test/IdentityServer.UnitTests/Extensions/StringExtensionsTests.cs @@ -5,6 +5,7 @@ using Xunit; using Duende.IdentityServer.Extensions; using FluentAssertions; +using System.Linq; namespace UnitTests.Extensions; @@ -76,6 +77,40 @@ public void TestGetOrigin() CheckOrigin("test://localhost:8080/test/resource", "test://localhost:8080"); } + [Fact] + [Trait("Category", Category)] + public void ToSpaceSeparatedString_should_return_correct_value() + { + var value = new[] { "foo", "bar", "baz", "baz", "foo", "bar" }.ToSpaceSeparatedString(); + value.Should().Be("foo bar baz baz foo bar"); + } + + [Fact] + [Trait("Category", Category)] + public void FromSpaceSeparatedString_should_return_correct_values() + { + var values = "foo bar baz baz foo bar".FromSpaceSeparatedString().ToArray(); + values.Length.Should().Be(6); + values[0].Should().Be("foo"); + values[1].Should().Be("bar"); + values[2].Should().Be("baz"); + values[3].Should().Be("baz"); + values[4].Should().Be("foo"); + values[5].Should().Be("bar"); + } + + [Fact] + [Trait("Category", Category)] + public void FromSpaceSeparatedString_should_only_process_spaces() + { + var values = "foo bar\tbaz baz\rfoo bar\r\nbar".FromSpaceSeparatedString().ToArray(); + values.Length.Should().Be(4); + values[0].Should().Be("foo"); + values[1].Should().Be("bar\tbaz"); + values[2].Should().Be("baz\rfoo"); + values[3].Should().Be("bar\r\nbar"); + } + // scope parsing