public ContactUsControllerTest()
        {
            _mockEmailClient = new Mock <IHttpEmailClient>();
            _mockLogger      = new Mock <ILogger <ContactUsController> >();
            _configuration   = new Mock <IApplicationConfiguration>();

            _configuration.Setup(a => a.GetEmailEmailFrom(It.IsAny <string>()))
            .Returns(AppSetting.GetAppSetting("businessid:Email:EmailFrom"));

            _businessId = new BusinessId("businessid");

            _contactUsId = new ContactUsId("name", "slug", "email", "test button text", "test return url");

            _repository.Setup(o => o.Get <ContactUsId>(It.IsAny <string>(), It.IsAny <List <Query> >()))
            .ReturnsAsync(HttpResponse.Successful(200, _contactUsId));

            _controller          = new ContactUsController(_repository.Object, _mockEmailClient.Object, _mockLogger.Object, _configuration.Object, _businessId);
            _validContactDetails = new ContactUsDetails(_userName, _userEmail, _emailSubject,
                                                        _emailBody, _serviceEmails, _title);

            var request          = new Mock <HttpRequest>();
            var context          = new Mock <HttpContext>();
            var headerDictionary = new HeaderDictionary {
                { "referer", _url }
            };

            request.Setup(r => r.Headers).Returns(headerDictionary);
            context.Setup(c => c.Request).Returns(request.Object);
            _controller.ControllerContext = new ControllerContext(new ActionContext(context.Object, new RouteData(), new ControllerActionDescriptor()));
        }
        public ActionResult ContactUs(ContactUsViewModel contact)
        {
            ContactUsDetails obj      = new ContactUsDetails();
            string           response = obj.EmailFunctionality(contact);

            if (response == "Success")
            {
            }

            return(RedirectToAction("Index"));
        }
Exemplo n.º 3
0
 private string CreateMessageBody(ContactUsDetails contactUsDetails)
 {
     return("Thank you for contacting us<br /><br />" +
            "We have received your message and will get back to you." +
            "This confirms that we have received your enquiry and a copy of the information received is detailed below:<br /><br />" +
            $"SENDER : {contactUsDetails.Name}<br />" +
            $"EMAIL: {contactUsDetails.Email}<br />" +
            $"SUBJECT: {contactUsDetails.Subject}<br />" +
            $"MESSAGE: {contactUsDetails.Message}<br /><br />" +
            $"From page: {Request.Headers["referer"]}<br />");
 }
        public async Task ShouldNotSendEmailWhenInvalid()
        {
            var invalidDetails = new ContactUsDetails {
                Email = "nam", Name = "name"
            };

            _controller.ModelState.AddModelError("", "Error");

            await _controller.Contact(invalidDetails);

            _mockEmailClient.Verify(client => client.SendEmailToService(It.IsAny <EmailMessage>()), Times.Never);
        }
        public async Task ShouldSendSentStatusBackInTheRedirectAsFalseIfMessageInvalid()
        {
            var invalidDetails = new ContactUsDetails {
                Email = "nam", Name = "name"
            };

            _controller.ModelState.AddModelError("Name", "an invalid name was provided");
            _controller.ModelState.AddModelError("Email", "an invalid email was provided");

            var pageResult = await _controller.Contact(invalidDetails) as RedirectResult;;

            pageResult.Url.Should().Contain("message=an invalid name was provided<br />an invalid email was provided<br />");
        }
Exemplo n.º 6
0
        public void TestMessageIsRequired()
        {
            var model   = new ContactUsDetails();
            var context = new ValidationContext(model, null, null);
            var result  = new List <ValidationResult>();
            var valid   = Validator.TryValidateObject(model, context, result, true);

            Assert.False(valid);
            var failure = Assert.Single(
                result,
                x => x.ErrorMessage == "An enquiry message is required");

            Assert.Single(failure.MemberNames, x => x == "Message");
        }
Exemplo n.º 7
0
        public void TestEmailValidationPassesIfEmailIsRightFormat()
        {
            var model = new ContactUsDetails
            {
                Name    = "Name",
                Email   = "*****@*****.**",
                Subject = "Subject",
                Message = "Message"
            };
            var context = new ValidationContext(model, null, null);
            var result  = new List <ValidationResult>();
            var valid   = Validator.TryValidateObject(model, context, result, true);

            Assert.True(valid);
        }
Exemplo n.º 8
0
        private Task <HttpStatusCode> SendEmailMessage(ContactUsDetails contactUsDetails)
        {
            var messageSubject = $"{contactUsDetails.Title} - {contactUsDetails.Subject}";

            _logger.LogDebug("Sending contact us form email");

            var fromEmail = _applicationConfiguration.GetEmailEmailFrom(_businessId.ToString()).IsValid()
                ? _applicationConfiguration.GetEmailEmailFrom(_businessId.ToString()).ToString()
                : string.Empty;

            return(_emailClient.SendEmailToService
                       (new EmailMessage(messageSubject,
                                         CreateMessageBody(contactUsDetails),
                                         fromEmail,
                                         contactUsDetails.ServiceEmail,
                                         contactUsDetails.Email,
                                         new List <IFormFile>())));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> Contact(ContactUsDetails contactUsDetails)
        {
            var contactUsModel = await GetContactUsId(contactUsDetails.ServiceEmailId);

            contactUsDetails.ServiceEmail = contactUsModel.EmailAddress;

            string redirectUrl;

            if (!string.IsNullOrEmpty(contactUsModel.SuccessPageReturnUrl))
            {
                redirectUrl = contactUsModel.SuccessPageReturnUrl;
            }
            else
            {
                var referer = Request.Headers["referer"];
                if (string.IsNullOrEmpty(referer))
                {
                    return(NotFound());
                }
                redirectUrl = new UriBuilder(referer).Path;
            }

            var message = "We have been unable to process the request. Please try again later.";

            if (ModelState.IsValid)
            {
                var successCode = await SendEmailMessage(contactUsDetails);

                if (IsSuccess(successCode))
                {
                    return(RedirectToAction("ThankYouMessage", new ThankYouMessageViewModel {
                        ReturnUrl = redirectUrl, ButtonText = contactUsModel.SuccessPageButtonText
                    }));
                }
            }
            else
            {
                message = GetErrorsFromModelState(ModelState);
            }

            var toUrl = $"{redirectUrl}?message={message}" + "#error-message-anchor";

            return(await Task.FromResult(Redirect(toUrl)));
        }
Exemplo n.º 10
0
        public void TestEmailValidationFailsIfEmailIsNotRightFormat()
        {
            var model = new ContactUsDetails
            {
                Name    = "Name",
                Email   = "email",
                Subject = "Subject",
                Message = "Message"
            };
            var context = new ValidationContext(model, null, null);
            var result  = new List <ValidationResult>();
            var valid   = Validator.TryValidateObject(model, context, result, true);

            Assert.False(valid);
            var failure = Assert.Single(
                result,
                x => x.ErrorMessage == "This is not a valid email address");

            Assert.Single(failure.MemberNames, x => x == "Email");
        }
Exemplo n.º 11
0
        public ActionResult ContactUs(ContactUsDetails contactUsDetails)
        {
            if (String.IsNullOrEmpty(HttpContext.Session.GetString("UserId")))
            {
                return(RedirectToAction("Login", "UserEntry"));
            }
            MailMessage mailMessage = new MailMessage();

            mailMessage.From = new MailAddress(contactUsDetails.Email);
            mailMessage.To.Add(contactUsDetails.Email);
            mailMessage.Subject = contactUsDetails.Subject;
            mailMessage.Body    = "<b>Sender Name: </b>" + HttpContext.Session.GetString("UserName") + "<br/>" +
                                  "<b>Sender Email: </b>" + contactUsDetails.Email + "<br/>" +
                                  "<b>Comments: </b>" + contactUsDetails.Message;
            mailMessage.IsBodyHtml = true;
            SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);

            smtpClient.EnableSsl   = true;
            smtpClient.Credentials = new System.Net.NetworkCredential("*****@*****.**", "fiiPractic0000");
            smtpClient.Send(mailMessage);
            return(View());
        }