瀏覽代碼

Merge pull request #6163 from Bond-009/tests3

Fix index out of range and add reg tests
Claus Vium 4 年之前
父節點
當前提交
b986cb57b7

+ 2 - 2
Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs

@@ -55,7 +55,7 @@ namespace Jellyfin.Server.Middleware
                 // Unencode and re-parse querystring.
                 var unencodedKey = HttpUtility.UrlDecode(key);
 
-                if (string.Equals(unencodedKey, key, System.StringComparison.Ordinal))
+                if (string.Equals(unencodedKey, key, StringComparison.Ordinal))
                 {
                     // Don't do anything if it's not encoded.
                     _store = value;
@@ -72,7 +72,7 @@ namespace Jellyfin.Server.Middleware
                     if (i == -1)
                     {
                         // encoded is an equals.
-                        pairs.Add(pair[..i].ToString(), StringValues.Empty);
+                        pairs.Add(pair.ToString(), StringValues.Empty);
                         continue;
                     }
 

+ 30 - 0
tests/Jellyfin.Server.Tests/UrlDecodeQueryFeatureTests.cs

@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using System.Linq;
+using Jellyfin.Server.Middleware;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http.Features;
+using Microsoft.Extensions.Primitives;
+using Xunit;
+
+namespace Jellyfin.Server.Tests
+{
+    public static class UrlDecodeQueryFeatureTests
+    {
+        [Theory]
+        [InlineData("e0a72cb2a2c7", "e0a72cb2a2c7")] // isn't encoded
+        [InlineData("random+test", "random test")] // encoded
+        [InlineData("random%20test", "random test")] // encoded
+        public static void EmptyValueTest(string query, string key)
+        {
+            var dict = new Dictionary<string, StringValues>
+            {
+                { query, StringValues.Empty }
+            };
+            var test = new UrlDecodeQueryFeature(new QueryFeature(new QueryCollection(dict)));
+            Assert.Single(test.Query);
+            var (k, v) = test.Query.First();
+            Assert.Equal(k, key);
+            Assert.Empty(v);
+        }
+    }
+}