From 30bb675d50f771658df2b3ee7301069ca635e88d Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sun, 22 Dec 2024 00:51:57 -0500 Subject: [PATCH] Implemented converter tests. (#72) --- .../Converters/ApiKeyIdConverterTests.cs | 38 +++++++++++++++++ .../CustomIdentifierConverterTests.cs | 38 +++++++++++++++++ .../Converters/DescriptionConverterTests.cs | 38 +++++++++++++++++ .../Converters/DisplayNameConverterTests.cs | 38 +++++++++++++++++ .../Converters/EntityIdConverterTests.cs | 37 ++++++++++++++++ .../Converters/GenderConverterTests.cs | 38 +++++++++++++++++ .../Converters/IdentifierConverterTests.cs | 38 +++++++++++++++++ .../Converters/LocaleConverterTests.cs | 38 +++++++++++++++++ .../OneTimePasswordIdConverterTests.cs | 38 +++++++++++++++++ .../Converters/PasswordConverterTests.cs | 42 +++++++++++++++++++ .../Converters/PersonNameConverterTests.cs | 40 ++++++++++++++++++ .../Converters/RoleIdConverterTests.cs | 38 +++++++++++++++++ .../Converters/SessionIdConverterTests.cs | 38 +++++++++++++++++ .../Converters/TODO.md | 3 -- .../Converters/TenantIdConverterTests.cs | 37 ++++++++++++++++ .../Converters/TimeZoneConverterTests.cs | 38 +++++++++++++++++ .../Converters/UniqueNameConverterTests.cs | 42 +++++++++++++++++++ .../Converters/UrlConverterTests.cs | 40 ++++++++++++++++++ .../Converters/UserIdConverterTests.cs | 38 +++++++++++++++++ ...r.Identity.Infrastructure.UnitTests.csproj | 1 + 20 files changed, 695 insertions(+), 3 deletions(-) create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/ApiKeyIdConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/CustomIdentifierConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DescriptionConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DisplayNameConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/EntityIdConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/GenderConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/IdentifierConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/LocaleConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/OneTimePasswordIdConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PasswordConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PersonNameConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/RoleIdConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/SessionIdConverterTests.cs delete mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TODO.md create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TenantIdConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TimeZoneConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UniqueNameConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UrlConverterTests.cs create mode 100644 tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UserIdConverterTests.cs diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/ApiKeyIdConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/ApiKeyIdConverterTests.cs new file mode 100644 index 0000000..66cd866 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/ApiKeyIdConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; +using Logitar.Identity.Core.ApiKeys; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class ApiKeyIdConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public ApiKeyIdConverterTests() + { + _serializerOptions.Converters.Add(new ApiKeyIdConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + ApiKeyId apiKeyId = ApiKeyId.NewId(TenantId.NewId()); + ApiKeyId deserialized = JsonSerializer.Deserialize(string.Concat('"', apiKeyId, '"'), _serializerOptions); + Assert.Equal(apiKeyId, deserialized); + } + + [Fact(DisplayName = "It should deserialize the default value from a null value.")] + public void Given_NullValue_When_Deserialize_Then_DefaultValue() + { + ApiKeyId apiKeyId = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Equal(default, apiKeyId); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + ApiKeyId apiKeyId = ApiKeyId.NewId(TenantId.NewId()); + string json = JsonSerializer.Serialize(apiKeyId, _serializerOptions); + Assert.Equal(string.Concat('"', apiKeyId, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/CustomIdentifierConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/CustomIdentifierConverterTests.cs new file mode 100644 index 0000000..0952dbb --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/CustomIdentifierConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class CustomIdentifierConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public CustomIdentifierConverterTests() + { + _serializerOptions.Converters.Add(new CustomIdentifierConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + CustomIdentifier customIdentifier = new("1234567890"); + CustomIdentifier? deserialized = JsonSerializer.Deserialize(string.Concat('"', customIdentifier, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(customIdentifier, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + CustomIdentifier? customIdentifier = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(customIdentifier); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + CustomIdentifier customIdentifier = new("1234567890"); + string json = JsonSerializer.Serialize(customIdentifier, _serializerOptions); + Assert.Equal(string.Concat('"', customIdentifier, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DescriptionConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DescriptionConverterTests.cs new file mode 100644 index 0000000..7d03bce --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DescriptionConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class DescriptionConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public DescriptionConverterTests() + { + _serializerOptions.Converters.Add(new DescriptionConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + Description description = new("Hello World!"); + Description? deserialized = JsonSerializer.Deserialize(string.Concat('"', description, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(description, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + Description? description = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(description); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + Description description = new("Hello World!"); + string json = JsonSerializer.Serialize(description, _serializerOptions); + Assert.Equal(string.Concat('"', description, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DisplayNameConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DisplayNameConverterTests.cs new file mode 100644 index 0000000..e4eca78 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/DisplayNameConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class DisplayNameConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public DisplayNameConverterTests() + { + _serializerOptions.Converters.Add(new DisplayNameConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + DisplayName displayName = new("Administrator"); + DisplayName? deserialized = JsonSerializer.Deserialize(string.Concat('"', displayName, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(displayName, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + DisplayName? displayName = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(displayName); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + DisplayName displayName = new("Administrator"); + string json = JsonSerializer.Serialize(displayName, _serializerOptions); + Assert.Equal(string.Concat('"', displayName, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/EntityIdConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/EntityIdConverterTests.cs new file mode 100644 index 0000000..5c4b257 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/EntityIdConverterTests.cs @@ -0,0 +1,37 @@ +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class EntityIdConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public EntityIdConverterTests() + { + _serializerOptions.Converters.Add(new EntityIdConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + EntityId entityId = EntityId.NewId(); + EntityId deserialized = JsonSerializer.Deserialize(string.Concat('"', entityId, '"'), _serializerOptions); + Assert.Equal(entityId, deserialized); + } + + [Fact(DisplayName = "It should deserialize the default value from a null value.")] + public void Given_NullValue_When_Deserialize_Then_DefaultValue() + { + EntityId entityId = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Equal(default, entityId); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + EntityId entityId = EntityId.NewId(); + string json = JsonSerializer.Serialize(entityId, _serializerOptions); + Assert.Equal(string.Concat('"', entityId, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/GenderConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/GenderConverterTests.cs new file mode 100644 index 0000000..6bb6603 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/GenderConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core.Users; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class GenderConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public GenderConverterTests() + { + _serializerOptions.Converters.Add(new GenderConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + Gender gender = new("male"); + Gender? deserialized = JsonSerializer.Deserialize(string.Concat('"', gender, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(gender, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + Gender? gender = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(gender); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + Gender gender = new("female"); + string json = JsonSerializer.Serialize(gender, _serializerOptions); + Assert.Equal(string.Concat('"', gender, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/IdentifierConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/IdentifierConverterTests.cs new file mode 100644 index 0000000..605b00f --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/IdentifierConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class IdentifierConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public IdentifierConverterTests() + { + _serializerOptions.Converters.Add(new IdentifierConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + Identifier identifier = new("HealthInsuranceNumber"); + Identifier? deserialized = JsonSerializer.Deserialize(string.Concat('"', identifier, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(identifier, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + Identifier? identifier = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(identifier); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + Identifier identifier = new("HealthInsuranceNumber"); + string json = JsonSerializer.Serialize(identifier, _serializerOptions); + Assert.Equal(string.Concat('"', identifier, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/LocaleConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/LocaleConverterTests.cs new file mode 100644 index 0000000..c7f4fe8 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/LocaleConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class LocaleConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public LocaleConverterTests() + { + _serializerOptions.Converters.Add(new LocaleConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + Locale locale = new("en-US"); + Locale? deserialized = JsonSerializer.Deserialize(string.Concat('"', locale.Code, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(locale, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + Locale? locale = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(locale); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + Locale locale = new("fr-CA"); + string json = JsonSerializer.Serialize(locale, _serializerOptions); + Assert.Equal(string.Concat('"', locale.Code, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/OneTimePasswordIdConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/OneTimePasswordIdConverterTests.cs new file mode 100644 index 0000000..558d337 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/OneTimePasswordIdConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; +using Logitar.Identity.Core.Passwords; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class OneTimePasswordIdConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public OneTimePasswordIdConverterTests() + { + _serializerOptions.Converters.Add(new OneTimePasswordIdConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + OneTimePasswordId oneTimePasswordId = OneTimePasswordId.NewId(TenantId.NewId()); + OneTimePasswordId deserialized = JsonSerializer.Deserialize(string.Concat('"', oneTimePasswordId, '"'), _serializerOptions); + Assert.Equal(oneTimePasswordId, deserialized); + } + + [Fact(DisplayName = "It should deserialize the default value from a null value.")] + public void Given_NullValue_When_Deserialize_Then_DefaultValue() + { + OneTimePasswordId oneTimePasswordId = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Equal(default, oneTimePasswordId); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + OneTimePasswordId oneTimePasswordId = OneTimePasswordId.NewId(TenantId.NewId()); + string json = JsonSerializer.Serialize(oneTimePasswordId, _serializerOptions); + Assert.Equal(string.Concat('"', oneTimePasswordId, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PasswordConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PasswordConverterTests.cs new file mode 100644 index 0000000..116a66d --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PasswordConverterTests.cs @@ -0,0 +1,42 @@ +using Logitar.Identity.Core.Passwords; +using Moq; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class PasswordConverterTests +{ + private readonly Mock _passwordManager = new(); + private readonly JsonSerializerOptions _serializerOptions = new(); + + public PasswordConverterTests() + { + _serializerOptions.Converters.Add(new PasswordConverter(_passwordManager.Object)); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + Base64Password password = new("P@s$W0rD"); + _passwordManager.Setup(x => x.Decode(password.Encode())).Returns(password); + + Password? deserialized = JsonSerializer.Deserialize(string.Concat('"', password.Encode(), '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Same(password, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + Password? password = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(password); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + Base64Password password = new("P@s$W0rD"); + string json = JsonSerializer.Serialize(password, _serializerOptions); + Assert.Equal(string.Concat('"', password.Encode(), '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PersonNameConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PersonNameConverterTests.cs new file mode 100644 index 0000000..b6065bb --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/PersonNameConverterTests.cs @@ -0,0 +1,40 @@ +using Bogus; +using Logitar.Identity.Core.Users; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class PersonNameConverterTests +{ + private readonly Faker _faker = new(); + private readonly JsonSerializerOptions _serializerOptions = new(); + + public PersonNameConverterTests() + { + _serializerOptions.Converters.Add(new PersonNameConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + PersonName personName = new(_faker.Person.FirstName); + PersonName? deserialized = JsonSerializer.Deserialize(string.Concat('"', personName, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(personName, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + PersonName? personName = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(personName); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + PersonName personName = new(_faker.Person.LastName); + string json = JsonSerializer.Serialize(personName, _serializerOptions); + Assert.Equal(string.Concat('"', personName, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/RoleIdConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/RoleIdConverterTests.cs new file mode 100644 index 0000000..a6f1c11 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/RoleIdConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; +using Logitar.Identity.Core.Roles; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class RoleIdConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public RoleIdConverterTests() + { + _serializerOptions.Converters.Add(new RoleIdConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + RoleId roleId = RoleId.NewId(TenantId.NewId()); + RoleId deserialized = JsonSerializer.Deserialize(string.Concat('"', roleId, '"'), _serializerOptions); + Assert.Equal(roleId, deserialized); + } + + [Fact(DisplayName = "It should deserialize the default value from a null value.")] + public void Given_NullValue_When_Deserialize_Then_DefaultValue() + { + RoleId roleId = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Equal(default, roleId); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + RoleId roleId = RoleId.NewId(TenantId.NewId()); + string json = JsonSerializer.Serialize(roleId, _serializerOptions); + Assert.Equal(string.Concat('"', roleId, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/SessionIdConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/SessionIdConverterTests.cs new file mode 100644 index 0000000..1660214 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/SessionIdConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; +using Logitar.Identity.Core.Sessions; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class SessionIdConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public SessionIdConverterTests() + { + _serializerOptions.Converters.Add(new SessionIdConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + SessionId sessionId = SessionId.NewId(TenantId.NewId()); + SessionId deserialized = JsonSerializer.Deserialize(string.Concat('"', sessionId, '"'), _serializerOptions); + Assert.Equal(sessionId, deserialized); + } + + [Fact(DisplayName = "It should deserialize the default value from a null value.")] + public void Given_NullValue_When_Deserialize_Then_DefaultValue() + { + SessionId sessionId = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Equal(default, sessionId); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + SessionId sessionId = SessionId.NewId(TenantId.NewId()); + string json = JsonSerializer.Serialize(sessionId, _serializerOptions); + Assert.Equal(string.Concat('"', sessionId, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TODO.md b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TODO.md deleted file mode 100644 index 8927a33..0000000 --- a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TODO.md +++ /dev/null @@ -1,3 +0,0 @@ -# TODO - -All converter tests. diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TenantIdConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TenantIdConverterTests.cs new file mode 100644 index 0000000..76b4878 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TenantIdConverterTests.cs @@ -0,0 +1,37 @@ +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class TenantIdConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public TenantIdConverterTests() + { + _serializerOptions.Converters.Add(new TenantIdConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + TenantId tenantId = TenantId.NewId(); + TenantId deserialized = JsonSerializer.Deserialize(string.Concat('"', tenantId, '"'), _serializerOptions); + Assert.Equal(tenantId, deserialized); + } + + [Fact(DisplayName = "It should deserialize the default value from a null value.")] + public void Given_NullValue_When_Deserialize_Then_DefaultValue() + { + TenantId tenantId = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Equal(default, tenantId); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + TenantId tenantId = TenantId.NewId(); + string json = JsonSerializer.Serialize(tenantId, _serializerOptions); + Assert.Equal(string.Concat('"', tenantId, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TimeZoneConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TimeZoneConverterTests.cs new file mode 100644 index 0000000..f418c33 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/TimeZoneConverterTests.cs @@ -0,0 +1,38 @@ +using TimeZone = Logitar.Identity.Core.TimeZone; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class TimeZoneConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public TimeZoneConverterTests() + { + _serializerOptions.Converters.Add(new TimeZoneConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + TimeZone timezone = new("America/Toronto"); + TimeZone? deserialized = JsonSerializer.Deserialize(string.Concat('"', timezone, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(timezone, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + TimeZone? timezone = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(timezone); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + TimeZone timezone = new("Asia/Singapore"); + string json = JsonSerializer.Serialize(timezone, _serializerOptions); + Assert.Equal(string.Concat('"', timezone, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UniqueNameConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UniqueNameConverterTests.cs new file mode 100644 index 0000000..f40b9a6 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UniqueNameConverterTests.cs @@ -0,0 +1,42 @@ +using Bogus; +using Logitar.Identity.Core; +using Logitar.Identity.Core.Settings; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class UniqueNameConverterTests +{ + private readonly Faker _faker = new(); + private readonly JsonSerializerOptions _serializerOptions = new(); + private readonly UniqueNameSettings _uniqueNameSettings = new(); + + public UniqueNameConverterTests() + { + _serializerOptions.Converters.Add(new UniqueNameConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + UniqueName uniqueName = new(_uniqueNameSettings, _faker.Person.UserName); + UniqueName? deserialized = JsonSerializer.Deserialize(string.Concat('"', uniqueName, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(uniqueName, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + UniqueName? uniqueName = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(uniqueName); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + UniqueName uniqueName = new(_uniqueNameSettings, _faker.Person.UserName); + string json = JsonSerializer.Serialize(uniqueName, _serializerOptions); + Assert.Equal(string.Concat('"', uniqueName, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UrlConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UrlConverterTests.cs new file mode 100644 index 0000000..cf2c761 --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UrlConverterTests.cs @@ -0,0 +1,40 @@ +using Bogus; +using Logitar.Identity.Core; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class UrlConverterTests +{ + private readonly Faker _faker = new(); + private readonly JsonSerializerOptions _serializerOptions = new(); + + public UrlConverterTests() + { + _serializerOptions.Converters.Add(new UrlConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + Url url = new($"https://www.{_faker.Person.Website}"); + Url? deserialized = JsonSerializer.Deserialize(string.Concat('"', url, '"'), _serializerOptions); + Assert.NotNull(deserialized); + Assert.Equal(url, deserialized); + } + + [Fact(DisplayName = "It should deserialize null from a null value.")] + public void Given_NullValue_When_Deserialize_Then_NullValue() + { + Url? url = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Null(url); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + Url url = new($"https://www.{_faker.Person.Website}"); + string json = JsonSerializer.Serialize(url, _serializerOptions); + Assert.Equal(string.Concat('"', url, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UserIdConverterTests.cs b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UserIdConverterTests.cs new file mode 100644 index 0000000..9b1ae9a --- /dev/null +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Converters/UserIdConverterTests.cs @@ -0,0 +1,38 @@ +using Logitar.Identity.Core; +using Logitar.Identity.Core.Users; + +namespace Logitar.Identity.Infrastructure.Converters; + +[Trait(Traits.Category, Categories.Unit)] +public class UserIdConverterTests +{ + private readonly JsonSerializerOptions _serializerOptions = new(); + + public UserIdConverterTests() + { + _serializerOptions.Converters.Add(new UserIdConverter()); + } + + [Fact(DisplayName = "It should deserialize the correct value from a non-null value.")] + public void Given_Value_When_Deserialize_Then_CorrectValue() + { + UserId userId = UserId.NewId(TenantId.NewId()); + UserId deserialized = JsonSerializer.Deserialize(string.Concat('"', userId, '"'), _serializerOptions); + Assert.Equal(userId, deserialized); + } + + [Fact(DisplayName = "It should deserialize the default value from a null value.")] + public void Given_NullValue_When_Deserialize_Then_DefaultValue() + { + UserId userId = JsonSerializer.Deserialize("null", _serializerOptions); + Assert.Equal(default, userId); + } + + [Fact(DisplayName = "It should serialize correctly the value.")] + public void Given_Value_When_Serialize_Then_SerializedCorrectly() + { + UserId userId = UserId.NewId(TenantId.NewId()); + string json = JsonSerializer.Serialize(userId, _serializerOptions); + Assert.Equal(string.Concat('"', userId, '"'), json); + } +} diff --git a/tests/Logitar.Identity.Infrastructure.UnitTests/Logitar.Identity.Infrastructure.UnitTests.csproj b/tests/Logitar.Identity.Infrastructure.UnitTests/Logitar.Identity.Infrastructure.UnitTests.csproj index 57ee060..eaf05c2 100644 --- a/tests/Logitar.Identity.Infrastructure.UnitTests/Logitar.Identity.Infrastructure.UnitTests.csproj +++ b/tests/Logitar.Identity.Infrastructure.UnitTests/Logitar.Identity.Infrastructure.UnitTests.csproj @@ -35,6 +35,7 @@ +