Exemple #1
0
        public async Task <IActionResult> UpdateEmailAddress([FromRoute][Required] int id, [FromBody] UpdateEmailAddressDto dto)
        {
            Logger.Trace($"Executing '{nameof(UpdateEmailAddress)}'.");

            var userId = HttpContext.GetUserId();

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

            var request = new UpdateEmailAddressRequest(id, dto.Address);

            request.SetUserId(userId.Value);

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

                return(result.GetResult());
            }
            catch (Exception ex)
            {
                Logger.Error(ex, $"Unexpected error thrown while executing '{nameof(UpdateEmailAddressHandler)}'.");
                throw;
            }
        }
 public async Task <EmailAddressResponse> Update(UpdateEmailAddressRequest request, AdminKey adminKey = null, HttpClient httpClient = null)
 {
     using (var api = new GetAddesssApi(adminKey ?? AdminKey, HttpClient ?? httpClient))
     {
         return(await api.EmailAddress.Update(request));
     }
 }
        public async Task Should_ReturnBadRequest_When_PassInvalidEmailAddress(string updatedEmailAddress, int emailAddressId, int userId)
        {
            var cancellationToken = new CancellationToken();

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

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

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

            databaseContext.SaveChanges();

            var request = new UpdateEmailAddressRequest(emailAddressId, updatedEmailAddress);

            request.SetUserId(userId);

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

            Assert.Multiple(() =>
            {
                Assert.IsFalse(result.Success);
                Assert.AreEqual(result.StatusCode, HttpStatusCode.BadRequest);
                Assert.IsTrue(result.Message.Contains("Invalid email address"));
            });
        }
        public async Task Should_ReturnNotFound_When_PassNotExistingEmailAddressForUser(string updatedEmailAddress, int emailAddressId, int userId)
        {
            var cancellationToken = new CancellationToken();

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

            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 UpdateEmailAddressRequest(emailAddressId, updatedEmailAddress);

            request.SetUserId(userId);

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

            Assert.Multiple(() =>
            {
                Assert.IsFalse(result.Success);
                Assert.AreEqual(result.StatusCode, HttpStatusCode.NotFound);
            });
        }
        public async static Task <EmailAddressResponse> Update(GetAddesssApi api, string path, AdminKey adminKey, UpdateEmailAddressRequest request)
        {
            if (api == null)
            {
                throw new ArgumentNullException(nameof(api));
            }

            api.SetAuthorizationKey(adminKey);

            var response = await api.Put(path, request);

            var body = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(new EmailAddressResponse.Success((int)response.StatusCode, response.ReasonPhrase, body, request.NewEmailAddress));
            }

            if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
            {
                var message = GetMessage(body);
                return(new EmailAddressResponse.FailedInvalidEmailAddress((int)response.StatusCode, response.ReasonPhrase, body, message));
            }

            return(new EmailAddressResponse.Failed((int)response.StatusCode, response.ReasonPhrase, body));
        }
 public async Task <EmailAddressResponse> Update(UpdateEmailAddressRequest request)
 {
     return(await Update(Api, Path, this.AdminKey, request));
 }