public async Task Should_ReturnCreated_When_PassUniqueEmailAddressForUser(string emailAddresses, int mailingGroupId)
        {
            var emailAddressesList = emailAddresses.Split(";");

            var cancellationToken = new CancellationToken();

            var emailAddressValidator = Substitute.For <IEmailAddressValidatorUtility>();

            emailAddressValidator.ValidateMail("*****@*****.**").Returns(true);
            emailAddressValidator.ValidateMail("*****@*****.**").Returns(true);
            emailAddressValidator.ValidateMail("*****@*****.**").Returns(true);

            var databaseContext = Create.MockedDbContextFor <DatabaseContext>();

            databaseContext.Set <MailingGroup>().Add(new MailingGroup()
            {
                Id           = 1,
                Name         = "MailingGroupName1",
                SystemUserId = 1
            });
            databaseContext.Set <MailingGroup>().Add(new MailingGroup()
            {
                Id           = 2,
                Name         = "MailingGroupName2",
                SystemUserId = 2
            });
            databaseContext.Set <EmailAddress>().Add(new EmailAddress()
            {
                Id             = 1,
                Value          = "*****@*****.**",
                MailingGroupId = 2
            });
            databaseContext.Set <EmailAddress>().Add(new EmailAddress()
            {
                Id             = 2,
                Value          = "*****@*****.**",
                MailingGroupId = 2
            });
            databaseContext.Set <EmailAddress>().Add(new EmailAddress()
            {
                Id             = 3,
                Value          = "*****@*****.**",
                MailingGroupId = 2
            });

            databaseContext.SaveChanges();

            var request = new CreateEmailAddressRequest(mailingGroupId, emailAddressesList);

            var result = await new CreateEmailAddressHandler(databaseContext, emailAddressValidator).Handle(request, cancellationToken);

            Assert.Multiple(() =>
            {
                Assert.IsTrue(result.Success);
                Assert.AreEqual(result.StatusCode, HttpStatusCode.Created);
                Assert.AreEqual(databaseContext.EmailAddress.Where(x => emailAddressesList.Contains(x.Value) && x.MailingGroupId == mailingGroupId).Count(), emailAddressesList.Count());
            });
        }
        /// <summary>
        /// 在验证了发信域名之后,您需要一个发信地址来发送邮件。例如发信域名是mail.qcloud.com,那么发信地址可以为 [email protected]。如果您想要收件人在收件箱列表中显示您的别名,例如"腾讯云邮件通知"。那么发信地址为: 别名 空格 尖括号 邮箱地址。请注意中间需要有空格
        /// </summary>
        /// <param name="req"><see cref="CreateEmailAddressRequest"/></param>
        /// <returns><see cref="CreateEmailAddressResponse"/></returns>
        public CreateEmailAddressResponse CreateEmailAddressSync(CreateEmailAddressRequest req)
        {
            JsonResponseModel <CreateEmailAddressResponse> rsp = null;

            try
            {
                var strResp = this.InternalRequestSync(req, "CreateEmailAddress");
                rsp = JsonConvert.DeserializeObject <JsonResponseModel <CreateEmailAddressResponse> >(strResp);
            }
            catch (JsonSerializationException e)
            {
                throw new TencentCloudSDKException(e.Message);
            }
            return(rsp.Response);
        }
        public async Task Should_ReturnBadRequest_When_NotPassingRequiredParameters(string addresses, int mailingGroupId)
        {
            var addressesList = addresses.Split(";");

            var cancellationToken     = new CancellationToken();
            var emailAddressValidator = Substitute.For <IEmailAddressValidatorUtility>();
            var databaseContext       = Create.MockedDbContextFor <DatabaseContext>();

            var request = new CreateEmailAddressRequest(mailingGroupId, addressesList);
            var result  = await new CreateEmailAddressHandler(databaseContext, emailAddressValidator).Handle(request, cancellationToken);

            Assert.Multiple(() =>
            {
                Assert.IsFalse(result.Success);
                Assert.AreEqual(result.StatusCode, HttpStatusCode.BadRequest);
                Assert.AreEqual(result.Message, "Required Addresses and MailingGroupId.");
            });
        }
        public async Task Should_ReturnConflict_When_PassAlreadyAddedEmailAddress(string addresses, int mailingGroupId)
        {
            var addressesList = addresses.Split(";");

            var cancellationToken = new CancellationToken();

            var emailAddressValidator = Substitute.For <IEmailAddressValidatorUtility>();

            emailAddressValidator.ValidateMail("*****@*****.**").Returns(true);
            emailAddressValidator.ValidateMail("*****@*****.**").Returns(true);
            emailAddressValidator.ValidateMail("*****@*****.**").Returns(true);

            var databaseContext = Create.MockedDbContextFor <DatabaseContext>();

            databaseContext.Set <MailingGroup>().Add(new MailingGroup()
            {
                Id           = 1,
                Name         = "MailingGroupName1",
                SystemUserId = 1
            });
            databaseContext.Set <EmailAddress>().Add(new EmailAddress()
            {
                Id             = 1,
                Value          = "*****@*****.**",
                MailingGroupId = 1
            });
            databaseContext.SaveChanges();


            var request = new CreateEmailAddressRequest(mailingGroupId, addressesList);
            var result  = await new CreateEmailAddressHandler(databaseContext, emailAddressValidator).Handle(request, cancellationToken);

            Assert.Multiple(() =>
            {
                Assert.IsFalse(result.Success);
                Assert.AreEqual(result.StatusCode, HttpStatusCode.Conflict);
                Assert.IsTrue(result.Message.Contains("Addresses already added"));
            });
        }
Esempio n. 5
0
        public async Task <IActionResult> CreateEmailAddress([FromBody] CreateEmailAddressRequest request)
        {
            Logger.Trace($"Executing '{nameof(CreateEmailAddress)}'.");

            var userId = HttpContext.GetUserId();

            if (userId == null)
            {
                return(Unauthorized());
            }

            try
            {
                var result = await _mediator.Send(request);

                return(result.GetResult());
            }
            catch (Exception ex)
            {
                Logger.Error(ex, $"Unexpected error thrown while executing '{nameof(CreateEmailAddressHandler)}'.");
                throw;
            }
        }