From a8a0167ee84af12fe7e3b3941bea71fa851006b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=9Fra=C5=9F=20Erg=C3=BCn?= <96827714+ugras-ergun-sonarsource@users.noreply.github.com> Date: Thu, 15 Feb 2024 14:38:13 +0100 Subject: [PATCH 1/4] implemented --- .../Common/Helpers/ConnectionIdHelperTests.cs | 20 ++++++++++++++++- .../Common/Helpers/ConnectionIdHelper.cs | 22 +++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs b/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs index 9898e2c1b..e6168e2b6 100644 --- a/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs +++ b/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs @@ -38,7 +38,7 @@ public class ConnectionIdHelperTests [DataRow("sc|", null)] [DataRow("sc|myorganization", "https://sonarcloud.io")] [DataRow("sc|https://someuri.abcdef/123", "https://sonarcloud.io")] // should not happen, but we ignore any value after "sc|" - public void ReturnsAsExpected(string connectionId, string expectedUri) + public void GetUriFromConnectionId_ReturnsAsExpected(string connectionId, string expectedUri) { var uri = new ConnectionIdHelper().GetUriFromConnectionId(connectionId); @@ -46,4 +46,22 @@ public void ReturnsAsExpected(string connectionId, string expectedUri) stringUri.Should().BeEquivalentTo(expectedUri); } + + [TestMethod] + [DataRow(null, null, null)] + [DataRow("", "something", null)] + [DataRow("not a uri", "something", null)] + [DataRow("http://someuri.com", null, "sq|http://someuri.com")] + [DataRow("http://someuri.com", "something", "sq|http://someuri.com")] + [DataRow("https://sonarcloud.io", "something", "sc|something")] + [DataRow("https://sonarcloud.io", "", null)] + [DataRow("https://sonarcloud.io", null, null)] + public void GetConnectionIdFromUri_PassUri_ReturnsAsExpected(string uriString, string organisation, string expectedConnectionId) + { + var testSubject = new ConnectionIdHelper(); + + var actualConnectionId = testSubject.GetConnectionIdFromUri(uriString, organisation); + + actualConnectionId.Should().Be(expectedConnectionId); + } } diff --git a/src/SLCore/Common/Helpers/ConnectionIdHelper.cs b/src/SLCore/Common/Helpers/ConnectionIdHelper.cs index b27c9540d..6dbe5d375 100644 --- a/src/SLCore/Common/Helpers/ConnectionIdHelper.cs +++ b/src/SLCore/Common/Helpers/ConnectionIdHelper.cs @@ -25,6 +25,8 @@ namespace SonarLint.VisualStudio.SLCore.Common.Helpers internal interface IConnectionIdHelper { Uri GetUriFromConnectionId(string connectionId); + + string GetConnectionIdFromUri(string uriString, string organisation); } internal class ConnectionIdHelper : IConnectionIdHelper @@ -33,6 +35,22 @@ internal class ConnectionIdHelper : IConnectionIdHelper private const string SonarQubePrefix = "sq|"; private static readonly Uri SonarCloudUri = new Uri("https://sonarcloud.io"); + public string GetConnectionIdFromUri(string uriString, string organisation) + { + if (!string.IsNullOrWhiteSpace(uriString) && Uri.TryCreate(uriString, UriKind.Absolute, out var uri)) + { + if (uri == SonarCloudUri) + { + if (!string.IsNullOrWhiteSpace(organisation)) { return SonarCloudPrefix + organisation; } + } + else + { + return SonarQubePrefix + uriString; + } + } + return null; + } + public Uri GetUriFromConnectionId(string connectionId) { if (connectionId == null) @@ -43,8 +61,8 @@ public Uri GetUriFromConnectionId(string connectionId) if (connectionId.StartsWith(SonarCloudPrefix)) { var uriString = connectionId.Substring(SonarCloudPrefix.Length); - - return !string.IsNullOrWhiteSpace(uriString) ? SonarCloudUri : null; + + return !string.IsNullOrWhiteSpace(uriString) ? SonarCloudUri : null; } if (connectionId.StartsWith(SonarQubePrefix)) From b00ab0ab4a7a1ed8f5b5c098c2dafd19beaaaf56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=9Fra=C5=9F=20Erg=C3=BCn?= <96827714+ugras-ergun-sonarsource@users.noreply.github.com> Date: Fri, 16 Feb 2024 09:08:08 +0100 Subject: [PATCH 2/4] pr feedback --- .../Common/Helpers/ConnectionIdHelperTests.cs | 22 ++++++++++++++----- .../Common/Helpers/ConnectionIdHelper.cs | 8 +++---- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs b/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs index e6168e2b6..a99b7fc73 100644 --- a/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs +++ b/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs @@ -18,6 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +using System; using SonarLint.VisualStudio.SLCore.Common.Helpers; namespace SonarLint.VisualStudio.SLCore.UnitTests.Common.Helpers; @@ -48,20 +49,29 @@ public void GetUriFromConnectionId_ReturnsAsExpected(string connectionId, string } [TestMethod] - [DataRow(null, null, null)] - [DataRow("", "something", null)] - [DataRow("not a uri", "something", null)] - [DataRow("http://someuri.com", null, "sq|http://someuri.com")] - [DataRow("http://someuri.com", "something", "sq|http://someuri.com")] + [DataRow("http://someuri.com", null, "sq|http://someuri.com/")] + [DataRow("http://someuri.com", "something", "sq|http://someuri.com/")] [DataRow("https://sonarcloud.io", "something", "sc|something")] [DataRow("https://sonarcloud.io", "", null)] [DataRow("https://sonarcloud.io", null, null)] public void GetConnectionIdFromUri_PassUri_ReturnsAsExpected(string uriString, string organisation, string expectedConnectionId) { + var uri = new Uri(uriString); + var testSubject = new ConnectionIdHelper(); - var actualConnectionId = testSubject.GetConnectionIdFromUri(uriString, organisation); + var actualConnectionId = testSubject.GetConnectionIdFromUri(uri, organisation); actualConnectionId.Should().Be(expectedConnectionId); } + + [TestMethod] + public void GetConnectionIdFromUri_UriIsNull_ReturnsNull() + { + var testSubject = new ConnectionIdHelper(); + + var actualConnectionId = testSubject.GetConnectionIdFromUri(null, "something"); + + actualConnectionId.Should().BeNull(); + } } diff --git a/src/SLCore/Common/Helpers/ConnectionIdHelper.cs b/src/SLCore/Common/Helpers/ConnectionIdHelper.cs index 6dbe5d375..a8891bfd1 100644 --- a/src/SLCore/Common/Helpers/ConnectionIdHelper.cs +++ b/src/SLCore/Common/Helpers/ConnectionIdHelper.cs @@ -26,7 +26,7 @@ internal interface IConnectionIdHelper { Uri GetUriFromConnectionId(string connectionId); - string GetConnectionIdFromUri(string uriString, string organisation); + string GetConnectionIdFromUri(Uri uri, string organisation); } internal class ConnectionIdHelper : IConnectionIdHelper @@ -35,9 +35,9 @@ internal class ConnectionIdHelper : IConnectionIdHelper private const string SonarQubePrefix = "sq|"; private static readonly Uri SonarCloudUri = new Uri("https://sonarcloud.io"); - public string GetConnectionIdFromUri(string uriString, string organisation) + public string GetConnectionIdFromUri(Uri uri, string organisation) { - if (!string.IsNullOrWhiteSpace(uriString) && Uri.TryCreate(uriString, UriKind.Absolute, out var uri)) + if (uri is not null) { if (uri == SonarCloudUri) { @@ -45,7 +45,7 @@ public string GetConnectionIdFromUri(string uriString, string organisation) } else { - return SonarQubePrefix + uriString; + return SonarQubePrefix + uri.ToString(); } } return null; From 529cbebabd2c624542be8a8691bd6e0749c5f1d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=9Fra=C5=9F=20Erg=C3=BCn?= <96827714+ugras-ergun-sonarsource@users.noreply.github.com> Date: Fri, 16 Feb 2024 11:28:23 +0100 Subject: [PATCH 3/4] improved tests --- .../Common/Helpers/ConnectionIdHelperTests.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs b/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs index a99b7fc73..e88ccff83 100644 --- a/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs +++ b/src/SLCore.UnitTests/Common/Helpers/ConnectionIdHelperTests.cs @@ -74,4 +74,30 @@ public void GetConnectionIdFromUri_UriIsNull_ReturnsNull() actualConnectionId.Should().BeNull(); } + + [TestMethod] + [DataRow("http://someuri.com")] + [DataRow("https://sonarcloud.io")] + public void MethodsBackToBack_ShouldCreateSameUri(string uriString) + { + var uri = new Uri(uriString); + + var testSubject = new ConnectionIdHelper(); + + var resultUri = testSubject.GetUriFromConnectionId(testSubject.GetConnectionIdFromUri(uri, "something")); + + resultUri.Should().Be(uri); + } + + [TestMethod] + [DataRow("sq|http://someuri.com/")] + [DataRow("sc|something")] + public void MethodsBackToBack_ShouldCreateSameConnectionId(string connectionId) + { + var testSubject = new ConnectionIdHelper(); + + var resultConnectionId = testSubject.GetConnectionIdFromUri(testSubject.GetUriFromConnectionId(connectionId), "something"); + + resultConnectionId.Should().Be(connectionId); + } } From ab109620d9fe7df4dfdfc4065abe8dea0999456e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=9Fra=C5=9F=20Erg=C3=BCn?= <96827714+ugras-ergun-sonarsource@users.noreply.github.com> Date: Fri, 16 Feb 2024 13:19:03 +0100 Subject: [PATCH 4/4] changed nesting to increase readbility --- .../Common/Helpers/ConnectionIdHelper.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/SLCore/Common/Helpers/ConnectionIdHelper.cs b/src/SLCore/Common/Helpers/ConnectionIdHelper.cs index a8891bfd1..3168acaa6 100644 --- a/src/SLCore/Common/Helpers/ConnectionIdHelper.cs +++ b/src/SLCore/Common/Helpers/ConnectionIdHelper.cs @@ -37,17 +37,23 @@ internal class ConnectionIdHelper : IConnectionIdHelper public string GetConnectionIdFromUri(Uri uri, string organisation) { - if (uri is not null) + if (uri is null) { - if (uri == SonarCloudUri) - { - if (!string.IsNullOrWhiteSpace(organisation)) { return SonarCloudPrefix + organisation; } - } - else + return null; + } + + if (uri == SonarCloudUri) + { + if (!string.IsNullOrWhiteSpace(organisation)) { - return SonarQubePrefix + uri.ToString(); + return SonarCloudPrefix + organisation; } } + else + { + return SonarQubePrefix + uri.ToString(); + } + return null; }