From 82abb429e95d57b87e801e5e323b7812203c046c Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 17:23:47 +0000 Subject: [PATCH] Fix port number preservation in CSS import URI resolution - Add test to verify port numbers are preserved when resolving relative CSS imports - Remove Port = -1 assignment in GetBaseUri() method that was stripping port numbers - Fixes issue #431 where URIs with port numbers became inaccessible since version 2.7.0 Co-Authored-By: Martin --- .../ImportRuleCssSourceTests.cs | 18 ++++++++++++++++++ .../Sources/ImportRuleCssSource.cs | 1 - 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/PreMailer.Net/PreMailer.Net.Tests/ImportRuleCssSourceTests.cs b/PreMailer.Net/PreMailer.Net.Tests/ImportRuleCssSourceTests.cs index 0b9d185..a441b40 100644 --- a/PreMailer.Net/PreMailer.Net.Tests/ImportRuleCssSourceTests.cs +++ b/PreMailer.Net/PreMailer.Net.Tests/ImportRuleCssSourceTests.cs @@ -203,6 +203,24 @@ public void ItShould_HandleCircularImports_WithoutInfiniteLoop() _webDownloader.Verify(w => w.DownloadString(It.Is(u => u.ToString() == "https://a.com/circular2.css")), Times.Once); } + [Fact] + public void ItShould_PreservePortNumber_WhenResolvingRelativeImports() + { + var baseUri = new Uri("https://localhost:8080/styles/main.css"); + var css = "@import \"variables.css\";"; + var variablesCss = "body { color: red; }"; + + _webDownloader + .Setup(w => w.DownloadString(It.Is(u => u.ToString() == "https://localhost:8080/styles/variables.css"))) + .Returns(variablesCss); + + var sut = new ImportRuleCssSource(); + + var result = sut.GetCss(baseUri, css).ToList(); + + _webDownloader.Verify(w => w.DownloadString(It.Is(u => u.ToString() == "https://localhost:8080/styles/variables.css")), Times.Once); + } + private string CreateCss(IEnumerable imports) { var builder = new StringBuilder(); diff --git a/PreMailer.Net/PreMailer.Net/Sources/ImportRuleCssSource.cs b/PreMailer.Net/PreMailer.Net/Sources/ImportRuleCssSource.cs index 0217f61..3cd1ef0 100644 --- a/PreMailer.Net/PreMailer.Net/Sources/ImportRuleCssSource.cs +++ b/PreMailer.Net/PreMailer.Net/Sources/ImportRuleCssSource.cs @@ -83,7 +83,6 @@ private static Uri GetBaseUri(Uri downloadUri) { var baseUrl = new UriBuilder(downloadUri) { - Port = -1 /* Excludes the port number */, Query = string.Empty };