aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Common/Json/Converters/JsonGuidConverter.cs6
-rw-r--r--MediaBrowser.Common/Plugins/LocalPlugin.cs10
-rw-r--r--tests/Jellyfin.Common.Tests/Json/JsonGuidConverterTests.cs42
3 files changed, 44 insertions, 14 deletions
diff --git a/MediaBrowser.Common/Json/Converters/JsonGuidConverter.cs b/MediaBrowser.Common/Json/Converters/JsonGuidConverter.cs
index 54325a02b..52e08d071 100644
--- a/MediaBrowser.Common/Json/Converters/JsonGuidConverter.cs
+++ b/MediaBrowser.Common/Json/Converters/JsonGuidConverter.cs
@@ -11,7 +11,11 @@ namespace MediaBrowser.Common.Json.Converters
{
/// <inheritdoc />
public override Guid Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
- => new Guid(reader.GetString());
+ {
+ var guidStr = reader.GetString();
+
+ return guidStr == null ? Guid.Empty : new Guid(guidStr);
+ }
/// <inheritdoc />
public override void Write(Utf8JsonWriter writer, Guid value, JsonSerializerOptions options)
diff --git a/MediaBrowser.Common/Plugins/LocalPlugin.cs b/MediaBrowser.Common/Plugins/LocalPlugin.cs
index 7927c663d..c97e75a3b 100644
--- a/MediaBrowser.Common/Plugins/LocalPlugin.cs
+++ b/MediaBrowser.Common/Plugins/LocalPlugin.cs
@@ -1,11 +1,11 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
namespace MediaBrowser.Common.Plugins
{
/// <summary>
- /// Local plugin struct.
+ /// Local plugin class.
/// </summary>
public class LocalPlugin : IEquatable<LocalPlugin>
{
@@ -106,6 +106,12 @@ namespace MediaBrowser.Common.Plugins
/// <inheritdoc />
public bool Equals(LocalPlugin other)
{
+ // Do not use == or != for comparison as this class overrides the operators.
+ if (object.ReferenceEquals(other, null))
+ {
+ return false;
+ }
+
return Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)
&& Id.Equals(other.Id);
}
diff --git a/tests/Jellyfin.Common.Tests/Json/JsonGuidConverterTests.cs b/tests/Jellyfin.Common.Tests/Json/JsonGuidConverterTests.cs
index d9e66d677..3c94db491 100644
--- a/tests/Jellyfin.Common.Tests/Json/JsonGuidConverterTests.cs
+++ b/tests/Jellyfin.Common.Tests/Json/JsonGuidConverterTests.cs
@@ -5,28 +5,48 @@ using Xunit;
namespace Jellyfin.Common.Tests.Extensions
{
- public static class JsonGuidConverterTests
+ public class JsonGuidConverterTests
{
+ private readonly JsonSerializerOptions _options;
+
+ public JsonGuidConverterTests()
+ {
+ _options = new JsonSerializerOptions();
+ _options.Converters.Add(new JsonGuidConverter());
+ }
+
[Fact]
- public static void Deserialize_Valid_Success()
+ public void Deserialize_Valid_Success()
{
- var options = new JsonSerializerOptions();
- options.Converters.Add(new JsonGuidConverter());
- Guid value = JsonSerializer.Deserialize<Guid>(@"""a852a27afe324084ae66db579ee3ee18""", options);
+ Guid value = JsonSerializer.Deserialize<Guid>(@"""a852a27afe324084ae66db579ee3ee18""", _options);
Assert.Equal(new Guid("a852a27afe324084ae66db579ee3ee18"), value);
+ }
- value = JsonSerializer.Deserialize<Guid>(@"""e9b2dcaa-529c-426e-9433-5e9981f27f2e""", options);
+ [Fact]
+ public void Deserialize_ValidDashed_Success()
+ {
+ Guid value = JsonSerializer.Deserialize<Guid>(@"""e9b2dcaa-529c-426e-9433-5e9981f27f2e""", _options);
Assert.Equal(new Guid("e9b2dcaa-529c-426e-9433-5e9981f27f2e"), value);
}
[Fact]
- public static void Roundtrip_Valid_Success()
+ public void Roundtrip_Valid_Success()
{
- var options = new JsonSerializerOptions();
- options.Converters.Add(new JsonGuidConverter());
Guid guid = new Guid("a852a27afe324084ae66db579ee3ee18");
- string value = JsonSerializer.Serialize(guid, options);
- Assert.Equal(guid, JsonSerializer.Deserialize<Guid>(value, options));
+ string value = JsonSerializer.Serialize(guid, _options);
+ Assert.Equal(guid, JsonSerializer.Deserialize<Guid>(value, _options));
+ }
+
+ [Fact]
+ public void Deserialize_Null_EmptyGuid()
+ {
+ Assert.Equal(Guid.Empty, JsonSerializer.Deserialize<Guid>("null", _options));
+ }
+
+ [Fact]
+ public void Serialize_EmptyGuid_Null()
+ {
+ Assert.Equal("null", JsonSerializer.Serialize(Guid.Empty, _options));
}
}
}