public void UserInfo_ToLowerCase_Sha256() { var fingerprint = FingerprintBuilder <User> .Create(SHA256.Create().ComputeHash) .For(p => p.Firstname, true, true) .For(p => p.Lastname, true, true) .Build(); var user = new User { Firstname = "John", Lastname = "Doe" }; const string expectedHash = "d53e54efc3c01db03d6494f95880d53349951a3af3fd6b1fd9459605ad3baeb7"; var hash = fingerprint(user).ToLowerHexString(); Assert.Equal(expectedHash, hash); user.Firstname = user.Firstname.ToLowerInvariant(); user.Lastname = user.Lastname.ToLowerInvariant(); var hash1 = fingerprint(user).ToLowerHexString(); Assert.Equal(expectedHash, hash1); }
public void Fingerprints_are_equal_irrespective_of_property_order() { var calculateFingerprint1 = FingerprintBuilder .For <Person>() .Add(x => x.Name) .Add(x => x.Age) .Build(SHA256.ComputeHash); var calculateFingerprint2 = FingerprintBuilder .For <Person>() .Add(x => x.Age) .Add(x => x.Name) .Build(SHA256.ComputeHash); var fingerprint1 = calculateFingerprint1(new Person { Name = "John", Age = 40 }); var fingerprint2 = calculateFingerprint2(new Person { Name = "John", Age = 40 }); Assert.True(StructuralComparisons.StructuralEqualityComparer.Equals(fingerprint1, fingerprint2)); }
public void UserInfo_ToLowerCase_Sha1() { var fingerprint = FingerprintBuilder <User> .Create(SHA1.Create().ComputeHash) .For(p => p.Firstname, true, true) .For(p => p.Lastname, true, true) .Build(); var user = new User { Firstname = "John", Lastname = "Doe" }; const string expectedHash = "b40d1e3afbe61730fa1daae2a539ad730ea09b0a"; var hash = fingerprint(user).ToLowerHexString(); Assert.Equal(expectedHash, hash); user.Firstname = user.Firstname.ToLowerInvariant(); user.Lastname = user.Lastname.ToLowerInvariant(); var hash1 = fingerprint(user).ToLowerHexString(); Assert.Equal(expectedHash, hash1); }
public User() { _fingerprintBuilder = FingerprintBuilder <User> .Create(SHA512.Create().ComputeHash) .For(x => x.Id) .For(x => x.Firstname) .For(x => x.Lastname) .Build(); }
public void Setup() { _user = new User { FirstName = "John", LastName = "Doe" }; _sha512 = FingerprintBuilder <User> .Create(SHA512.Create().ComputeHash) .For(p => p.FirstName) .For(p => p.LastName) .Build(); }
public async Task FullSimulation() { // Prepare some test data var range_20550101_20550102 = new Range <DateTime>(min: (2055, 1, 1).ToDate().AtNoon(), max: (2055, 1, 2).ToDate().AtNoon()); var range_20550102_20550103 = new Range <DateTime>(min: (2055, 1, 2).ToDate().AtNoon(), max: (2055, 1, 3).ToDate().AtNoon()); var range_20550104_20550105 = new Range <DateTime>(min: (2055, 1, 4).ToDate().AtNoon(), max: (2055, 1, 5).ToDate().AtNoon()); var _fingerprint = FingerprintBuilder <TestQueue1Item> .Create(SHA256.ComputeSHA256) .For(x => x.Name, x => x.Trim().ToUpper()) .Build(); var batch2 = new[] { new TestQueue1Item { Name = "Foo" }, new TestQueue1Item { Name = "Bar" } }.Select(x => new NewMessage { Body = x.Serialize(), Fingerprint = _fingerprint(x) }); #region Test1: Enqueue 2 + Peek 1 + Dequeue 1 + Enqueue 2 // Enqueue the complete batch await _messages.EnqueueAsync(QueueNames.TestQueue1, range_20550101_20550102, batch2, TimeSpan.Zero); Assert.AreEqual(1, await _messages.GetTimeRangeCountAsync(QueueNames.TestQueue1)); Assert.AreEqual(2, await _messages.GetPendingMessageCountAsync(QueueNames.TestQueue1)); var peekTestQueue1 = await _messages.PeekAsync(QueueNames.TestQueue1, 1); Assert.AreEqual(1, peekTestQueue1.Count); var item = peekTestQueue1.Single().Body.Deserialize <TestQueue1Item>(); Assert.AreEqual("Foo", item.Name); await _messages.DequeueAsync(QueueNames.TestQueue1, new[] { peekTestQueue1.Single().Id }); // Enqueue again to make sure it's not repeated await _messages.EnqueueAsync(QueueNames.TestQueue1, range_20550101_20550102, batch2, TimeSpan.Zero); Assert.AreEqual(2, await _messages.GetTimeRangeCountAsync(QueueNames.TestQueue1)); Assert.AreEqual(1, await _messages.GetPendingMessageCountAsync(QueueNames.TestQueue1)); #endregion }
public void Fingerprints_are_not_equal_for_objects_with_different_values() { var calculateFingerprint = FingerprintBuilder .For <Person>() .Add(x => x.Name) .Add(x => x.Age) .Build(SHA256.ComputeHash); var fingerprint1 = calculateFingerprint(new Person { Name = "John", Age = 40 }); var fingerprint2 = calculateFingerprint(new Person { Name = "Johnny", Age = 41 }); Assert.False(StructuralComparisons.StructuralEqualityComparer.Equals(fingerprint1, fingerprint2)); }
public void Fingerprints_are_equal_for_objects_with_similar_values() { var calculateFingerprint = FingerprintBuilder .For <Person>() .Add(x => x.Name, StringOptions.IgnoreCase | StringOptions.IgnoreWhitespace) .Add(x => x.Age) .Build(SHA256.ComputeHash); var fingerprint1 = calculateFingerprint(new Person { Name = "John", Age = 40 }); var fingerprint2 = calculateFingerprint(new Person { Name = " JOHN ", Age = 40 }); Assert.True(StructuralComparisons.StructuralEqualityComparer.Equals(fingerprint1, fingerprint2)); }
public void UserInfo_Sha1_Null() { var fingerprint = FingerprintBuilder <User> .Create(SHA1.Create().ComputeHash) .For(p => p.Firstname) .For(p => p.Lastname) .Build(); var user = new User { Firstname = "John", Lastname = null }; var hash = fingerprint(user).ToLowerHexString(); Assert.Equal("5ab5aeba11346413348fb7c9361058e016ecf3ca", hash); }
public void UserInfo_Sha1() { var fingerprint = FingerprintBuilder <User> .Create(SHA1.Create().ComputeHash) .For(p => p.Firstname) .For(p => p.Lastname) .Build(); var user = new User { Firstname = "John", Lastname = "Doe" }; var hash = fingerprint(user).ToLowerHexString(); Assert.Equal("a4aca7cce7e349205f08a25a38267ffcf05c60ed", hash); }
public void UserInfo_EmailsString_Sha1() { var fingerprint = FingerprintBuilder <ExtendedUser> .Create(SHA1.Create().ComputeHash) .For(p => p.Firstname) .For(p => p.Lastname) .For(p => p.Emails, emails => string.Join("|", emails)) .Build(); var user = new ExtendedUser { Firstname = "John", Lastname = "Doe", Emails = new[] { "*****@*****.**", "*****@*****.**" } }; var hash = fingerprint(user).ToLowerHexString(); Assert.Equal("472ea61f0548a37904f0c95afa526e87061d8e49", hash); }
public void UserInfo_Sha1() { var fingerprint = FingerprintBuilder <ExtendedUser> .Create(SHA1.Create().ComputeHash) .For(p => p.Firstname) .For(p => p.Lastname) .For(p => p.Emails) .Build(); var user = new ExtendedUser { Firstname = "John", Lastname = "Doe", Emails = new[] { "*****@*****.**", "*****@*****.**" } }; var hash = fingerprint(user).ToLowerHexString(); Assert.Equal("46197041b3a64b3c71f3d1813a0b7a478a3a7a92", hash); }
public void UserInfo_Sha256() { var fingerprint = FingerprintBuilder <User> .Create(SHA256.Create().ComputeHash) .For(p => p.Firstname) .For(p => p.Lastname) .Build(); var user = new User { Firstname = "John", Lastname = "Doe" }; var hashLower = fingerprint(user).ToLowerHexString(); var hashUpper = fingerprint(user).ToUpperHexString(); Assert.Equal("00b93d68198f13544cf71b96b7dcfc29a33014d20c0878cc434617482b65d2d2", hashLower); Assert.Equal("00b93d68198f13544cf71b96b7dcfc29a33014d20c0878cc434617482b65d2d2".ToUpperInvariant(), hashUpper); }
public void UserInfo_Sha512() { var fingerprint = FingerprintBuilder <User> .Create(SHA512.Create().ComputeHash) .For(p => p.Firstname) .For(p => p.Lastname) .Build(); var user = new User { Firstname = "John", Lastname = "Doe" }; var hashLower = fingerprint(user).ToLowerHexString(); var hashUpper = fingerprint(user).ToUpperHexString(); Assert.Equal("bc09471d63bdb0604a30cb0de118ec2b48153a1b7fe813fcad0974c44094b0a480bc3d158b52a6842756994c437afb7742d973371be440a46c2b5cfeb5d7dcd6", hashLower); Assert.Equal("bc09471d63bdb0604a30cb0de118ec2b48153a1b7fe813fcad0974c44094b0a480bc3d158b52a6842756994c437afb7742d973371be440a46c2b5cfeb5d7dcd6".ToUpperInvariant(), hashUpper); }
public void Ignores_null_values() { var calculateFingerprint = FingerprintBuilder .For <Person>() .Add(x => x.Name) .Add(x => x.Age) .Build(SHA256.ComputeHash); var fingerprint1 = calculateFingerprint(new Person { Name = null, Age = 40 }); var fingerprint2 = calculateFingerprint(new Person { Name = null, Age = 40 }); var fingerprint3 = calculateFingerprint(new Person { Name = "John", Age = 40 }); Assert.True(StructuralComparisons.StructuralEqualityComparer.Equals(fingerprint1, fingerprint2)); Assert.False(StructuralComparisons.StructuralEqualityComparer.Equals(fingerprint1, fingerprint3)); }
public void Throws_when_builder_does_not_have_any_value_selectors() { Assert.ThrowsAny <DynamicException>(() => FingerprintBuilder.For <Person>().Build(SHA256.ComputeHash)); }