public void Handler_ReturnsNonNullEmailAddress_WhenFound_ByClaim_AndIsVerified_IsEqual( bool?isQueryVerified, bool isEntityVerified) { var emailAddressValue = FakeData.Email(); var claim = new Claim(ClaimTypes.Email, emailAddressValue); var emailAddress = new EmailAddress { Value = emailAddressValue, IsVerified = isEntityVerified, }; var data = new[] { emailAddress }.AsQueryable(); var query = new EmailAddressBy(claim) { IsVerified = isQueryVerified, }; var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldNotBeNull(); result.ShouldEqual(data.Single()); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
public async Task <EmailAddress> Handle(EmailAddressBy query) { var queryable = _entities.Query <EmailAddress>() .EagerLoad(query.EagerLoad); Task <EmailAddress> entityTask; if (query.Id.HasValue) { entityTask = queryable.ByIdAsync(query.Id.Value); } else if (query.Claim != null && query.Claim.Type == ClaimTypes.Email) { entityTask = queryable.ByValueAsync(query.Claim.Value); } else { entityTask = queryable.ByValueAsync(query.Value); } EmailAddress entity = await entityTask.ConfigureAwait(false); if (entity != null && query.IsVerified.HasValue && query.IsVerified.Value != entity.IsVerified) { entity = null; } return(entity); }
public void Handler_ReturnsNonNullEmailAddress_WhenFound_ById_AndIsVerifiedMatches( bool?queryIsVerified, bool entityIsVerified) { var emailAddressId = FakeData.Id(); var emailAddress = new ProxiedEmailAddress(emailAddressId) { IsVerified = entityIsVerified, }; var data = new[] { emailAddress }.AsQueryable(); var query = new EmailAddressBy(emailAddressId) { IsVerified = queryIsVerified, }; var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldNotBeNull(); result.ShouldEqual(data.Single()); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
public void Handler_ReturnsNullEmailAddress_WhenFound_ByClaim_ButIsVerifiedDoesNotMatch(bool isVerified) { var emailAddressValue = string.Format("{0}@domain.tld", Guid.NewGuid()); var claim = new Claim(ClaimTypes.Email, emailAddressValue); var emailAddress = new EmailAddress { Value = emailAddressValue, IsVerified = !isVerified, }; var data = new[] { emailAddress }.AsQueryable(); var query = new EmailAddressBy(claim) { IsVerified = isVerified, }; var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
public void Handler_ReturnsNullEmailAddress_WhenFound_ByValue_ButIsVerifiedDoesNotMatch(bool isVerified) { var emailAddressValue = FakeData.Email(); var emailAddress = new EmailAddress { Value = emailAddressValue, IsVerified = !isVerified, }; var data = new[] { emailAddress }.AsQueryable(); var query = new EmailAddressBy(emailAddressValue) { IsVerified = isVerified, }; var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
public void Handler_ReturnsNonNullEmailAddress_WhenFound_ByValue_AndIsVerifiedMatches( bool?isQueryVerified, bool isEntityVerified) { var emailAddressValue = string.Format("{0}@domain.tld", Guid.NewGuid()); var emailAddress = new EmailAddress { Value = emailAddressValue, IsVerified = isEntityVerified, }; var data = new[] { emailAddress }.AsQueryable(); var query = new EmailAddressBy(emailAddressValue) { IsVerified = isQueryVerified, }; var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldNotBeNull(); result.ShouldEqual(data.Single()); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
public void Query_ClaimCtor_SetsClaimProperty() { var claim = new Claim("claim type", "claim value"); var query = new EmailAddressBy(claim); query.Id.ShouldBeNull(); query.Value.ShouldBeNull(); query.Claim.ShouldEqual(claim); }
public void Query_IntCtor_SetsIdProperty() { var id = FakeData.Id(); var query = new EmailAddressBy(id); query.Id.ShouldEqual(id); query.Value.ShouldBeNull(); query.Claim.ShouldBeNull(); }
public void Query_StringCtor_SetsValueProperty() { var value = FakeData.Email(); var query = new EmailAddressBy(value); query.Id.ShouldBeNull(); query.Value.ShouldEqual(value); query.Claim.ShouldBeNull(); }
public void Query_IntCtor_SetsIdProperty() { var id = new Random().Next(int.MinValue, int.MaxValue); var query = new EmailAddressBy(id); query.Id.ShouldEqual(id); query.Value.ShouldBeNull(); query.Claim.ShouldBeNull(); }
public void Query_StringCtor_SetsValueProperty() { var value = string.Format("{0}@domain.tld", Guid.NewGuid()); var query = new EmailAddressBy(value); query.Id.ShouldBeNull(); query.Value.ShouldEqual(value); query.Claim.ShouldBeNull(); }
public void Handler_ReturnsNullEmailAddress_WhenNotFound_ById() { var emailAddressId = FakeData.Id(); var data = new[] { new ProxiedEmailAddress(FakeData.Id(canNotBe: emailAddressId)) }.AsQueryable(); var query = new EmailAddressBy(emailAddressId); var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
public void Handler_ReturnsNullEmailAddress_WhenNotFound_ByValue() { var emailAddressValue = string.Format("{0}@domain.tld", Guid.NewGuid()); var emailAddress = new EmailAddress { Value = string.Format("{0}@domain.tld", Guid.NewGuid()) }; var data = new[] { emailAddress }.AsQueryable(); var query = new EmailAddressBy(emailAddressValue); var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
public void Handler_ReturnsNullEmailAddress_WhenNotFound_ByClaim() { var emailAddressValue = FakeData.Email(); var claim = new Claim(ClaimTypes.Email, emailAddressValue); var emailAddress = new EmailAddress { Value = FakeData.Email() }; var data = new[] { emailAddress }.AsQueryable(); var query = new EmailAddressBy(claim); var dbSet = new Mock <DbSet <EmailAddress> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <EmailAddress>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <EmailAddress>()).Returns(entitySet); var handler = new HandleEmailAddressByQuery(entities.Object); EmailAddress result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <EmailAddress>(), Times.Once); }
protected override bool IsValid(PropertyValidatorContext context) { var email = (string)context.PropertyValue; if (!string.IsNullOrWhiteSpace(email)) { var query = new EmailAddressBy(email) { IsVerified = true, EagerLoad = new Expression <Func <EmailAddress, object> >[] { x => x.User, }, }; var emailByValue = _queries.Execute(query).Result; if (emailByValue != null && emailByValue.User != null) { return(true); } } context.MessageFormatter.AppendArgument("PropertyName", context.PropertyDescription.ToLower()); return(false); }