public int Serialize(ref byte[] bytes, int offset, UserClaimsAdded <TKey> value, IFormatterResolver formatterResolver) { var keyFormatter = formatterResolver.GetFormatter <TKey>(); var claimFormatter = formatterResolver.GetFormatter <Claim>(); var startOffset = offset; offset += keyFormatter.Serialize(ref bytes, offset, value.UserId, formatterResolver); offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Claims.Length); for (int i = 0; i < value.Claims.Length; i++) { var claim = value.Claims[i]; offset += claimFormatter.Serialize(ref bytes, offset, claim, formatterResolver); } return(offset - startOffset); }
private void HandleEvent(UserClaimsAdded <TKey> evt) { var(normalizedEmail, normalizedUser, logins, claims) = reverseLookup[evt.UserId]; foreach (var claim in evt.Claims) { claims.Add(claim); if (!usersByClaims.TryGetValue(claim.Type, out Dictionary <string, HashSet <TKey> > byType)) { usersByClaims[claim.Type] = byType = new Dictionary <string, HashSet <TKey> >(); } if (!byType.TryGetValue(claim.Value, out HashSet <TKey> hs)) { byType[claim.Value] = hs = new HashSet <TKey>(); } hs.Add(evt.UserId); } }
public void TestSerializationOfUsersClaimsAdded() { var userId = Guid.NewGuid(); var evt = new UserClaimsAdded <Guid>(userId, new[] { new Claim("type1", "value1"), new Claim("type2", "value2") }); var bytes = LZ4MessagePackSerializer.Serialize <IEvent>(evt, AspnetIdentityResolver.Instance); var eventChk = LZ4MessagePackSerializer.Deserialize <IEvent>(bytes, AspnetIdentityResolver.Instance) as UserClaimsAdded <Guid>; Assert.NotNull(eventChk); Assert.Equal(evt.UserId, eventChk.UserId); var evtClaims = evt.Claims.ToArray(); var eventChkClaims = eventChk.Claims.ToArray(); Assert.Equal(evtClaims.Length, eventChkClaims.Length); for (int i = 0; i < evtClaims.Length; i++) { Assert.Equal(evtClaims[i].Type, eventChkClaims[i].Type); Assert.Equal(evtClaims[i].Value, eventChkClaims[i].Value); } }