Browse Source

Tests fixed

pull/152/head
Sebastian Stehle 8 years ago
parent
commit
38586e4b1a
  1. 19
      src/Squidex.Domain.Apps.Core.Model/Apps/Json/AppClientsConverter.cs
  2. 19
      src/Squidex.Domain.Apps.Core.Model/Apps/Json/AppContributorsConverter.cs
  3. 19
      src/Squidex.Domain.Apps.Core.Model/Apps/Json/LanguagesConfigConverter.cs
  4. 5
      src/Squidex.Domain.Apps.Core.Model/Apps/LanguagesConfig.cs
  5. 15
      src/Squidex.Domain.Apps.Core.Model/Schemas/Json/SchemaConverter.cs
  6. 62
      src/Squidex.Infrastructure/Json/ClaimsPrincipalConverter.cs
  7. 46
      src/Squidex.Infrastructure/Json/JsonClassConverter.cs
  8. 17
      src/Squidex.Infrastructure/Json/LanguageConverter.cs
  9. 21
      src/Squidex.Infrastructure/Json/NamedGuidIdConverter.cs
  10. 21
      src/Squidex.Infrastructure/Json/NamedLongIdConverter.cs
  11. 21
      src/Squidex.Infrastructure/Json/NamedStringIdConverter.cs
  12. 51
      src/Squidex.Infrastructure/Json/PropertiesBagConverter.cs
  13. 15
      src/Squidex.Infrastructure/Json/RefTokenConverter.cs
  14. 1
      src/Squidex/Config/Domain/Serializers.cs
  15. 8
      tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/LanguagesConfigTests.cs
  16. 54
      tests/Squidex.Infrastructure.Tests/Json/ClaimsPrincipalConverterTests.cs
  17. 16
      tests/Squidex.Infrastructure.Tests/Json/InstantConverterTests.cs
  18. 28
      tests/Squidex.Infrastructure.Tests/LanguageTests.cs
  19. 24
      tests/Squidex.Infrastructure.Tests/NamedIdTests.cs
  20. 8
      tests/Squidex.Infrastructure.Tests/RefTokenTests.cs
  21. 9
      tests/Squidex.Infrastructure.Tests/TestHelpers/JsonHelper.cs

19
src/Squidex.Domain.Apps.Core.Model/Apps/Json/AppClientsConverter.cs

@ -6,21 +6,19 @@
// All rights reserved.
// ==========================================================================
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Squidex.Infrastructure.Json;
namespace Squidex.Domain.Apps.Core.Apps.Json
{
public sealed class AppClientsConverter : JsonConverter
public sealed class AppClientsConverter : JsonClassConverter<AppClients>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, AppClients value, JsonSerializer serializer)
{
var clients = (AppClients)value;
var json = new Dictionary<string, JsonAppClient>(value.Count);
var json = new Dictionary<string, JsonAppClient>(clients.Count);
foreach (var client in clients)
foreach (var client in value)
{
json.Add(client.Key, new JsonAppClient(client.Value));
}
@ -28,7 +26,7 @@ namespace Squidex.Domain.Apps.Core.Apps.Json
serializer.Serialize(writer, json);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override AppClients ReadValue(JsonReader reader, JsonSerializer serializer)
{
var json = serializer.Deserialize<Dictionary<string, JsonAppClient>>(reader);
@ -41,10 +39,5 @@ namespace Squidex.Domain.Apps.Core.Apps.Json
return clients;
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(AppClients);
}
}
}

19
src/Squidex.Domain.Apps.Core.Model/Apps/Json/AppContributorsConverter.cs

@ -6,21 +6,19 @@
// All rights reserved.
// ==========================================================================
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Squidex.Infrastructure.Json;
namespace Squidex.Domain.Apps.Core.Apps.Json
{
public sealed class AppContributorsConverter : JsonConverter
public sealed class AppContributorsConverter : JsonClassConverter<AppContributors>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, AppContributors value, JsonSerializer serializer)
{
var contributors = (AppContributors)value;
var json = new Dictionary<string, AppContributorPermission>(value.Count);
var json = new Dictionary<string, AppContributorPermission>(contributors.Count);
foreach (var contributor in contributors)
foreach (var contributor in value)
{
json.Add(contributor.Key, contributor.Value);
}
@ -28,7 +26,7 @@ namespace Squidex.Domain.Apps.Core.Apps.Json
serializer.Serialize(writer, json);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override AppContributors ReadValue(JsonReader reader, JsonSerializer serializer)
{
var json = serializer.Deserialize<Dictionary<string, AppContributorPermission>>(reader);
@ -41,10 +39,5 @@ namespace Squidex.Domain.Apps.Core.Apps.Json
return contributors;
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(AppContributors);
}
}
}

19
src/Squidex.Domain.Apps.Core.Model/Apps/Json/LanguagesConfigConverter.cs

@ -6,21 +6,19 @@
// All rights reserved.
// ==========================================================================
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Squidex.Infrastructure.Json;
namespace Squidex.Domain.Apps.Core.Apps.Json
{
public sealed class LanguagesConfigConverter : JsonConverter
public sealed class LanguagesConfigConverter : JsonClassConverter<LanguagesConfig>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, LanguagesConfig value, JsonSerializer serializer)
{
var languagesConfig = (LanguagesConfig)value;
var json = new Dictionary<string, JsonLanguageConfig>(value.Count);
var json = new Dictionary<string, JsonLanguageConfig>(languagesConfig.Count);
foreach (var config in languagesConfig.Configs)
foreach (LanguageConfig config in value)
{
json.Add(config.Language, new JsonLanguageConfig(config));
}
@ -28,7 +26,7 @@ namespace Squidex.Domain.Apps.Core.Apps.Json
serializer.Serialize(writer, json);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override LanguagesConfig ReadValue(JsonReader reader, JsonSerializer serializer)
{
var json = serializer.Deserialize<Dictionary<string, JsonLanguageConfig>>(reader);
@ -43,10 +41,5 @@ namespace Squidex.Domain.Apps.Core.Apps.Json
return LanguagesConfig.Build(languagesConfig);
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(LanguagesConfig);
}
}
}

5
src/Squidex.Domain.Apps.Core.Model/Apps/LanguagesConfig.cs

@ -41,11 +41,6 @@ namespace Squidex.Domain.Apps.Core.Apps
return state.Languages.Values.GetEnumerator();
}
public IEnumerable<LanguageConfig> Configs
{
get { return state.Languages.Values; }
}
public int Count
{
get { return state.Languages.Count; }

15
src/Squidex.Domain.Apps.Core.Model/Schemas/Json/SchemaConverter.cs

@ -6,13 +6,13 @@
// All rights reserved.
// ==========================================================================
using System;
using Newtonsoft.Json;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Json;
namespace Squidex.Domain.Apps.Core.Schemas.Json
{
public sealed class SchemaConverter : JsonConverter
public sealed class SchemaConverter : JsonClassConverter<Schema>
{
private readonly FieldRegistry fieldRegistry;
@ -23,19 +23,14 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json
this.fieldRegistry = fieldRegistry;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, Schema value, JsonSerializer serializer)
{
serializer.Serialize(writer, new JsonSchemaModel((Schema)value));
serializer.Serialize(writer, new JsonSchemaModel(value));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override Schema ReadValue(JsonReader reader, JsonSerializer serializer)
{
return serializer.Deserialize<JsonSchemaModel>(reader).ToSchema(fieldRegistry);
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Schema);
}
}
}

62
src/Squidex.Infrastructure/Json/ClaimsPrincipalConverter.cs

@ -0,0 +1,62 @@
// ==========================================================================
// ClaimsPrincipalConverter.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System.Linq;
using System.Security.Claims;
using Newtonsoft.Json;
namespace Squidex.Infrastructure.Json
{
public sealed class ClaimsPrincipalConverter : JsonClassConverter<ClaimsPrincipal>
{
private sealed class JsonIdentity
{
[JsonProperty]
public string AuthenticationType { get; set; }
[JsonProperty]
public JsonClaim[] Claims { get; set; }
}
private sealed class JsonClaim
{
[JsonProperty]
public string Type { get; set; }
[JsonProperty]
public string Value { get; set; }
}
protected override void WriteValue(JsonWriter writer, ClaimsPrincipal value, JsonSerializer serializer)
{
var jsonIdentities =
value.Identities.Select(identity =>
new JsonIdentity
{
Claims = identity.Claims.Select(c =>
{
return new JsonClaim { Type = c.Type, Value = c.Value };
}).ToArray(),
AuthenticationType = identity.AuthenticationType
}).ToArray();
serializer.Serialize(writer, jsonIdentities);
}
protected override ClaimsPrincipal ReadValue(JsonReader reader, JsonSerializer serializer)
{
var jsonIdentities = serializer.Deserialize<JsonIdentity[]>(reader);
return new ClaimsPrincipal(
jsonIdentities.Select(identity =>
new ClaimsIdentity(
identity.Claims.Select(c => new Claim(c.Type, c.Value)),
identity.AuthenticationType)));
}
}
}

46
src/Squidex.Infrastructure/Json/JsonClassConverter.cs

@ -0,0 +1,46 @@
// ==========================================================================
// JsonClassConverter.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System;
using Newtonsoft.Json;
namespace Squidex.Infrastructure.Json
{
public abstract class JsonClassConverter<T> : JsonConverter where T : class
{
public sealed override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return null;
}
return ReadValue(reader, serializer);
}
public sealed override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value == null)
{
writer.WriteNull();
return;
}
WriteValue(writer, (T)value, serializer);
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(T);
}
protected abstract void WriteValue(JsonWriter writer, T value, JsonSerializer serializer);
protected abstract T ReadValue(JsonReader reader, JsonSerializer serializer);
}
}

17
src/Squidex.Infrastructure/Json/LanguageConverter.cs

@ -6,26 +6,25 @@
// All rights reserved.
// ==========================================================================
using System;
using Newtonsoft.Json;
namespace Squidex.Infrastructure.Json
{
public sealed class LanguageConverter : JsonConverter
public sealed class LanguageConverter : JsonClassConverter<Language>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, Language value, JsonSerializer serializer)
{
writer.WriteValue(((Language)value).Iso2Code);
writer.WriteValue(value.Iso2Code);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override Language ReadValue(JsonReader reader, JsonSerializer serializer)
{
return reader.TokenType == JsonToken.Null ? null : Language.GetLanguage((string)reader.Value);
if (reader.TokenType != JsonToken.String)
{
throw new JsonException($"Expected String, but got {reader.TokenType}.");
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Language);
return Language.GetLanguage(reader.Value.ToString());
}
}
}

21
src/Squidex.Infrastructure/Json/NamedGuidIdConverter.cs

@ -12,23 +12,21 @@ using Newtonsoft.Json;
namespace Squidex.Infrastructure.Json
{
public sealed class NamedGuidIdConverter : JsonConverter
public sealed class NamedGuidIdConverter : JsonClassConverter<NamedId<Guid>>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, NamedId<Guid> value, JsonSerializer serializer)
{
var namedId = (NamedId<Guid>)value;
writer.WriteValue($"{namedId.Id},{namedId.Name}");
writer.WriteValue($"{value.Id},{value.Name}");
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override NamedId<Guid> ReadValue(JsonReader reader, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
if (reader.TokenType != JsonToken.String)
{
return null;
throw new JsonException($"Expected String, but got {reader.TokenType}.");
}
var parts = ((string)reader.Value).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
var parts = reader.Value.ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length < 2)
{
@ -42,10 +40,5 @@ namespace Squidex.Infrastructure.Json
return new NamedId<Guid>(id, string.Join(",", parts.Skip(1)));
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(NamedId<Guid>);
}
}
}

21
src/Squidex.Infrastructure/Json/NamedLongIdConverter.cs

@ -12,23 +12,21 @@ using Newtonsoft.Json;
namespace Squidex.Infrastructure.Json
{
public sealed class NamedLongIdConverter : JsonConverter
public sealed class NamedLongIdConverter : JsonClassConverter<NamedId<long>>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, NamedId<long> value, JsonSerializer serializer)
{
var namedId = (NamedId<long>)value;
writer.WriteValue($"{namedId.Id},{namedId.Name}");
writer.WriteValue($"{value.Id},{value.Name}");
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override NamedId<long> ReadValue(JsonReader reader, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
if (reader.TokenType != JsonToken.String)
{
return null;
throw new JsonException($"Expected String, but got {reader.TokenType}.");
}
var parts = ((string)reader.Value).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
var parts = reader.Value.ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length < 2)
{
@ -42,10 +40,5 @@ namespace Squidex.Infrastructure.Json
return new NamedId<long>(id, string.Join(",", parts.Skip(1)));
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(NamedId<long>);
}
}
}

21
src/Squidex.Infrastructure/Json/NamedStringIdConverter.cs

@ -12,23 +12,21 @@ using Newtonsoft.Json;
namespace Squidex.Infrastructure.Json
{
public sealed class NamedStringIdConverter : JsonConverter
public sealed class NamedStringIdConverter : JsonClassConverter<NamedId<string>>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, NamedId<string> value, JsonSerializer serializer)
{
var namedId = (NamedId<string>)value;
writer.WriteValue($"{namedId.Id},{namedId.Name}");
writer.WriteValue($"{value.Id},{value.Name}");
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override NamedId<string> ReadValue(JsonReader reader, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
if (reader.TokenType != JsonToken.String)
{
return null;
throw new JsonException($"Expected String, but got {reader.TokenType}.");
}
var parts = ((string)reader.Value).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
var parts = reader.Value.ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length < 2)
{
@ -37,10 +35,5 @@ namespace Squidex.Infrastructure.Json
return new NamedId<string>(parts[0], string.Join(",", parts.Skip(1)));
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(NamedId<string>);
}
}
}

51
src/Squidex.Infrastructure/Json/PropertiesBagConverter.cs

@ -13,15 +13,36 @@ using NodaTime.Extensions;
namespace Squidex.Infrastructure.Json
{
public sealed class PropertiesBagConverter : JsonConverter
public sealed class PropertiesBagConverter : JsonClassConverter<PropertiesBag>
{
public override bool CanConvert(Type objectType)
protected override void WriteValue(JsonWriter writer, PropertiesBag value, JsonSerializer serializer)
{
return typeof(PropertiesBag).IsAssignableFrom(objectType);
writer.WriteStartObject();
foreach (var kvp in value.Properties)
{
writer.WritePropertyName(kvp.Key);
if (kvp.Value.RawValue is Instant)
{
writer.WriteValue(kvp.Value.ToString());
}
else
{
writer.WriteValue(kvp.Value.RawValue);
}
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
writer.WriteEndObject();
}
protected override PropertiesBag ReadValue(JsonReader reader, JsonSerializer serializer)
{
if (reader.TokenType != JsonToken.StartObject)
{
throw new JsonException($"Expected Object, but got {reader.TokenType}.");
}
var properties = new PropertiesBag();
while (reader.Read())
@ -50,27 +71,9 @@ namespace Squidex.Infrastructure.Json
return properties;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var properties = (PropertiesBag)value;
writer.WriteStartObject();
foreach (var kvp in properties.Properties)
{
writer.WritePropertyName(kvp.Key);
if (kvp.Value.RawValue is Instant)
{
writer.WriteValue(kvp.Value.ToString());
}
else
public override bool CanConvert(Type objectType)
{
writer.WriteValue(kvp.Value.RawValue);
}
}
writer.WriteEndObject();
return typeof(PropertiesBag).IsAssignableFrom(objectType);
}
}
}

15
src/Squidex.Infrastructure/Json/RefTokenConverter.cs

@ -6,26 +6,25 @@
// All rights reserved.
// ==========================================================================
using System;
using Newtonsoft.Json;
namespace Squidex.Infrastructure.Json
{
public sealed class RefTokenConverter : JsonConverter
public sealed class RefTokenConverter : JsonClassConverter<RefToken>
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
protected override void WriteValue(JsonWriter writer, RefToken value, JsonSerializer serializer)
{
writer.WriteValue(value.ToString());
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
protected override RefToken ReadValue(JsonReader reader, JsonSerializer serializer)
{
return reader.TokenType == JsonToken.Null ? null : RefToken.Parse((string)reader.Value);
if (reader.TokenType != JsonToken.String)
{
throw new JsonException($"Expected String, but got {reader.TokenType}.");
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(RefToken);
return RefToken.Parse(reader.Value.ToString());
}
}
}

1
src/Squidex/Config/Domain/Serializers.cs

@ -36,6 +36,7 @@ namespace Squidex.Config.Domain
settings.ContractResolver = new ConverterContractResolver(
new AppClientsConverter(),
new AppContributorsConverter(),
new ClaimsPrincipalConverter(),
new InstantConverter(),
new LanguageConverter(),
new LanguagesConfigConverter(),

8
tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/LanguagesConfigTests.cs

@ -172,14 +172,6 @@ namespace Squidex.Domain.Apps.Core.Model.Apps
config.Remove(Language.EN);
}
[Fact]
public void Should_throw_exception_if_language_to_remove_is_master_language()
{
var config = LanguagesConfig.Build(Language.DE);
Assert.Throws<InvalidOperationException>(() => config.Remove(Language.DE));
}
[Fact]
public void Should_update_language()
{

54
tests/Squidex.Infrastructure.Tests/Json/ClaimsPrincipalConverterTests.cs

@ -0,0 +1,54 @@
// ==========================================================================
// ClaimsPrincipalConverterTests.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System.Linq;
using System.Security.Claims;
using Squidex.Infrastructure.TestHelpers;
using Xunit;
namespace Squidex.Infrastructure.Json
{
public class ClaimsPrincipalConverterTests
{
[Fact]
public void Should_serialize_and_deserialize()
{
var value = new ClaimsPrincipal(
new[]
{
new ClaimsIdentity(
new[]
{
new Claim("email", "me@email.de"),
new Claim("username", "me@email.de"),
},
"Cookie"),
new ClaimsIdentity(
new[]
{
new Claim("user_id", "12345"),
new Claim("login", "me"),
},
"Google")
});
var result = value.SerializeAndDeserializeAndReturn(new ClaimsPrincipalConverter());
Assert.Equal(value.Identities.ElementAt(0).AuthenticationType, result.Identities.ElementAt(0).AuthenticationType);
Assert.Equal(value.Identities.ElementAt(1).AuthenticationType, result.Identities.ElementAt(1).AuthenticationType);
}
[Fact]
public void Should_serialize_and_deserialize_null_principal()
{
ClaimsPrincipal value = null;
value.SerializeAndDeserialize(new ClaimsPrincipalConverter());
}
}
}

16
tests/Squidex.Infrastructure.Tests/Json/InstantConverterTests.cs

@ -22,5 +22,21 @@ namespace Squidex.Infrastructure.Json
value.SerializeAndDeserialize(new InstantConverter());
}
[Fact]
public void Should_serialize_and_deserialize_nullable_with_value()
{
Instant? value = Instant.FromDateTimeUtc(DateTime.UtcNow.Date);
value.SerializeAndDeserialize(new InstantConverter());
}
[Fact]
public void Should_serialize_and_deserialize_nullable_with_null()
{
Instant? value = null;
value.SerializeAndDeserialize(new InstantConverter());
}
}
}

28
tests/Squidex.Infrastructure.Tests/LanguageTests.cs

@ -42,18 +42,6 @@ namespace Squidex.Infrastructure
Assert.True(Language.AllLanguages.Count() > 100);
}
[Fact]
public void Should_serialize_and_deserialize_null_language()
{
JsonHelper.SerializeAndDeserialize<Language>(null, new LanguageConverter());
}
[Fact]
public void Should_serialize_and_deserialize_valid_language()
{
Language.DE.SerializeAndDeserialize(new LanguageConverter());
}
[Fact]
public void Should_return_true_for_valid_language()
{
@ -120,5 +108,21 @@ namespace Squidex.Infrastructure
Assert.Null(language);
}
[Fact]
public void Should_serialize_and_deserialize_null_language()
{
Language value = null;
value.SerializeAndDeserialize(new LanguageConverter());
}
[Fact]
public void Should_serialize_and_deserialize_valid_language()
{
var value = Language.DE;
value.SerializeAndDeserialize(new LanguageConverter());
}
}
}

24
tests/Squidex.Infrastructure.Tests/NamedIdTests.cs

@ -90,37 +90,49 @@ namespace Squidex.Infrastructure
[Fact]
public void Should_serialize_and_deserialize_null_guid_token()
{
JsonHelper.SerializeAndDeserialize<NamedId<Guid>>(null, new NamedGuidIdConverter());
NamedId<Guid> value = null;
value.SerializeAndDeserialize(new NamedGuidIdConverter());
}
[Fact]
public void Should_serialize_and_deserialize_valid_guid_token()
{
new NamedId<Guid>(Guid.NewGuid(), "my-name").SerializeAndDeserialize(new NamedGuidIdConverter());
var value = new NamedId<Guid>(Guid.NewGuid(), "my-name");
value.SerializeAndDeserialize(new NamedGuidIdConverter());
}
[Fact]
public void Should_serialize_and_deserialize_null_long_token()
{
JsonHelper.SerializeAndDeserialize<NamedId<long>>(null, new NamedLongIdConverter());
NamedId<long> value = null;
value.SerializeAndDeserialize(new NamedLongIdConverter());
}
[Fact]
public void Should_serialize_and_deserialize_valid_long_token()
{
new NamedId<long>(123, "my-name").SerializeAndDeserialize(new NamedLongIdConverter());
var value = new NamedId<long>(123, "my-name");
value.SerializeAndDeserialize(new NamedLongIdConverter());
}
[Fact]
public void Should_serialize_and_deserialize_null_string_token()
{
JsonHelper.SerializeAndDeserialize<NamedId<string>>(null, new NamedStringIdConverter());
NamedId<string> value = null;
value.SerializeAndDeserialize(new NamedStringIdConverter());
}
[Fact]
public void Should_serialize_and_deserialize_valid_string_token()
{
new NamedId<string>(Guid.NewGuid().ToString(), "my-name").SerializeAndDeserialize(new NamedStringIdConverter());
var value = new NamedId<string>(Guid.NewGuid().ToString(), "my-name");
value.SerializeAndDeserialize(new NamedStringIdConverter());
}
[Fact]

8
tests/Squidex.Infrastructure.Tests/RefTokenTests.cs

@ -108,13 +108,17 @@ namespace Squidex.Infrastructure
[Fact]
public void Should_serialize_and_deserialize_null_token()
{
JsonHelper.SerializeAndDeserialize<RefToken>(null, new RefTokenConverter());
RefToken value = null;
value.SerializeAndDeserialize(new RefTokenConverter());
}
[Fact]
public void Should_serialize_and_deserialize_valid_token()
{
RefToken.Parse("client:client1").SerializeAndDeserialize(new RefTokenConverter());
var value = RefToken.Parse("client:client1");
value.SerializeAndDeserialize(new RefTokenConverter());
}
}
}

9
tests/Squidex.Infrastructure.Tests/TestHelpers/JsonHelper.cs

@ -30,6 +30,13 @@ namespace Squidex.Infrastructure.TestHelpers
}
public static void SerializeAndDeserialize<T>(this T value, JsonConverter converter)
{
var output = SerializeAndDeserializeAndReturn(value, converter);
Assert.Equal(value, output);
}
public static T SerializeAndDeserializeAndReturn<T>(this T value, JsonConverter converter)
{
var serializerSettings = new JsonSerializerSettings();
@ -39,7 +46,7 @@ namespace Squidex.Infrastructure.TestHelpers
var result = JsonConvert.SerializeObject(Tuple.Create(value), serializerSettings);
var output = JsonConvert.DeserializeObject<Tuple<T>>(result, serializerSettings);
Assert.Equal(value, output.Item1);
return output.Item1;
}
public static void DoesNotDeserialize<T>(string value, JsonConverter converter)

Loading…
Cancel
Save