UrlDecodeQueryFeatureTests.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Jellyfin.Server.Middleware;
  4. using Microsoft.AspNetCore.Http;
  5. using Microsoft.AspNetCore.Http.Features;
  6. using Microsoft.Extensions.Primitives;
  7. using Xunit;
  8. namespace Jellyfin.Server.Tests
  9. {
  10. public static class UrlDecodeQueryFeatureTests
  11. {
  12. public static TheoryData<string, string> EmptyValueTest_TestData()
  13. {
  14. var data = new TheoryData<string, string>();
  15. data.Add("e0a72cb2a2c7", "e0a72cb2a2c7"); // isn't encoded
  16. data.Add("random+test", "random test"); // encoded
  17. data.Add("random%20test", "random test"); // encoded
  18. data.Add("++", " "); // encoded
  19. return data;
  20. }
  21. [Theory]
  22. [MemberData(nameof(EmptyValueTest_TestData))]
  23. public static void EmptyValueTest(string query, string key)
  24. {
  25. var dict = new Dictionary<string, StringValues>
  26. {
  27. { query, StringValues.Empty }
  28. };
  29. var test = new UrlDecodeQueryFeature(new QueryFeature(new QueryCollection(dict)));
  30. Assert.Single(test.Query);
  31. var (k, v) = test.Query.First();
  32. Assert.Equal(key, k);
  33. Assert.Empty(v);
  34. }
  35. }
  36. }