public void Private_field_is_encrypted_and_decrypted() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(ApplicationName); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var myDoubles = new Dictionary <string, double> { { "first", 1.1 }, { "second", 2.2 }, { "third", 3.3 }, }; var instance = new FooDictionaryPrivate(myDoubles); var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); json.ShouldNotBe(JsonConvert.SerializeObject(instance)); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <FooDictionaryPrivate>(reader); decrypted.GetMyDoubles().ShouldBe(myDoubles); }
public void Private_field_is_encrypted_and_decrypted() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(ApplicationName); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var myULong = (ulong)75; var instance = new FooULongPrivate(myULong); var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); json.ShouldNotBe(JsonConvert.SerializeObject(instance)); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <FooULongPrivate>(reader); decrypted.GetMyULong().ShouldBe(myULong); }
public void HashSet_with_nested_object() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(nameof(NestedObjectTests)); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var instance = new HashSetParent(); var guid = Guid.NewGuid(); instance.AddId(new ConcreteComplexId(guid)); var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <HashSetParent>(reader); var id = decrypted.GetIds().First(); id.Id.ShouldBe(guid); }
public void Public_property_is_encrypted_and_decrypted() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(ApplicationName); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var myInt = 75; var instance = new FooIntPublic { MyInt = myInt }; var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); json.ShouldNotBe(JsonConvert.SerializeObject(instance)); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <FooIntPublic>(reader); decrypted.MyInt.ShouldBe(myInt); }
public void Internal_properties_are_encrypted_and_decrypted() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(ApplicationName); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var instance = new FooBoolInternalProperty { MyBool = true }; var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); json.ShouldNotBe("{\"MyBool\":true}"); json.ShouldContain("MyBool"); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <FooBoolInternalProperty>(reader); decrypted.MyBool.ShouldBeTrue(); }
public void Public_properties_not_decorated_with_EncryptAttribute_should_not_be_encrypted() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(ApplicationName); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var instance = new FooBoolNoEncrypt { MyBool = true }; var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); json.ShouldBe("{\"MyBool\":true}"); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <FooBoolNoEncrypt>(reader); decrypted.MyBool.ShouldBeTrue(); }
public void Private_fields_are_encrypted_and_decrypted() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(ApplicationName); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var myBytes = new byte[] { 5, 6, 7 }; var instance = new FooByteArrayPrivate(myBytes); var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); json.ShouldNotBe("{\"MyByte\":[5,6,7]}"); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <FooByteArrayPrivate>(reader); decrypted.GetMyBytes().ShouldBe(myBytes); }
public void Public_properties_are_encrypted_and_decrypted() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(ApplicationName); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var instance = new FooBytePublic { MyByte = 5 }; var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); json.ShouldNotBe("{\"MyByte\":5}"); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <FooBytePublic>(reader); decrypted.MyByte.ShouldBe((byte)5); }
public void Single_level_nested_objects() { var dataProtectionProvider = Helpers.GetTestDataProtectionProvider(nameof(NestedObjectTests)); var contractResolver = new EncryptedContractResolver(dataProtectionProvider); var serializer = new JsonSerializer() { ContractResolver = contractResolver }; var instance = new Parent { EncryptedString = "this should be encrypted", FullChild = new FullChild { MyInt = 37, MyString = "full child string" }, PartialChild = new PartialChild { MyInt = 38, MyString = "partial child string" } }; var builder = new StringBuilder(); using (var textWriter = new StringWriter(builder)) serializer.Serialize(textWriter, instance); var json = builder.ToString(); var jObject = JObject.Parse(json); // make sure the string was encrypted jObject.Value <string>(nameof(Parent.EncryptedString)).ShouldNotBe(instance.EncryptedString); // This should throw because we shouldn't be able to convert the FullChild since its // 'MyInt' is an encrypted string Should.Throw <Exception>(() => jObject.GetValue(nameof(FullChild)).ToObject <FullChild>()); // This should NOT throw because the entire FullChild is an encrypted string jObject.Value <string>(nameof(FullChild)); // This should be the same since we aren't encrypting the 'MyInt' of PartialChild var partialInt = jObject.Property(nameof(PartialChild)).Values().Cast <JProperty>().First(v => v.Name == nameof(PartialChild.MyInt)); partialInt.ToObject <int>().ShouldBe(instance.PartialChild.MyInt); // This should not be the same since we ARE encrypting the 'MyString' of PartialChild var partialString = jObject.Property(nameof(PartialChild)).Values().Cast <JProperty>().First(v => v.Name == nameof(PartialChild.MyString)); partialString.ToObject <string>().ShouldNotBe(instance.PartialChild.MyString); using var textReader = new StringReader(json); using var reader = new JsonTextReader(textReader); var decrypted = serializer.Deserialize <Parent>(reader); decrypted.EncryptedString.ShouldBe(instance.EncryptedString); decrypted.FullChild.MyInt.ShouldBe(instance.FullChild.MyInt); decrypted.FullChild.MyString.ShouldBe(instance.FullChild.MyString); }