Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        public void Query_IntCtor_SetsIdProperty()
        {
            var id    = FakeData.Id();
            var query = new EmailAddressBy(id);

            query.Id.ShouldEqual(id);
            query.Value.ShouldBeNull();
            query.Claim.ShouldBeNull();
        }
Ejemplo n.º 9
0
        public void Query_StringCtor_SetsValueProperty()
        {
            var value = FakeData.Email();
            var query = new EmailAddressBy(value);

            query.Id.ShouldBeNull();
            query.Value.ShouldEqual(value);
            query.Claim.ShouldBeNull();
        }
Ejemplo n.º 10
0
        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();
        }
Ejemplo n.º 11
0
        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();
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
        }