public void SendMail(ApplicationContext app, CreateEventSourceCommand commandEvent) { string bodyMessage = $"A aplicação {app.ApplicationName} parou de funcionar às {app.EventDateTime} " + ", email enviado automaticamente."; string emailMessage = $"OESP {app.ApplicationName}"; var command = new SendEmailCommand(emailAddress: EmailConfig.EmailAddress , emailOrigin: EmailConfig.EmailOrigin, message: emailMessage, body: bodyMessage); using (var scope = this.ServiceProvider.CreateScope()) { _sendEmail = scope.ServiceProvider.GetRequiredService <SendEmailHandler>(); var result = (CommandResult)_sendEmail.Handle(command); if (result.Ok) { InsertEmailEventSource(app, command, true); } else { InsertEmailEventSource(app, command, false); } } }
public void Then_Should_Have_Invoked_NotificationApi_Successfully_With_No_Personalisation_Tokens() { //arrange var firstEmailTemplate = Builder <EMailTemplate> .CreateNew().Build(); firstEmailTemplate.TemplateId = "FirstTemplateId"; _message = Builder <SendEmailRequest> .CreateNew().WithConstructor(() => new SendEmailRequest("*****@*****.**", firstEmailTemplate, new {})).Build(); var secondEmailTemplate = Builder <EMailTemplate> .CreateNew().Build(); secondEmailTemplate.RecipientTemplate = null; _emailTemplateQueryRepository.Setup(x => x.GetEmailTemplate(firstEmailTemplate.TemplateId)).ReturnsAsync(secondEmailTemplate); _sendEmailHandler = new SendEmailHandler(_notificationApiMock.Object, _emailTemplateQueryRepository.Object, _loggerMock.Object); //act _sendEmailHandler.Handle(_message, new CancellationToken()).Wait(); //assert _notificationApiMock.Verify(); }
public void Then_RecipientTemplate_should_be_used_to_send_subsequent_emails() { var eMailTemplate1 = Builder <EMailTemplate> .CreateNew().Build(); eMailTemplate1.RecipientTemplate = "SecondTemplateId"; //arrange var request = Builder <SendEmailRequest> .CreateNew().WithConstructor(() => new SendEmailRequest("*****@*****.**", eMailTemplate1, new { key = "value" })).Build(); var secondEmailTemplate = Builder <EMailTemplate> .CreateNew().Build(); secondEmailTemplate.TemplateId = "SecondTemplateId"; secondEmailTemplate.RecipientTemplate = "ThirdTemplateId"; _emailTemplateQueryRepository.Setup(x => x.GetEmailTemplate("SecondTemplateId")).ReturnsAsync(secondEmailTemplate); var thirdEmailTemplate = Builder <EMailTemplate> .CreateNew().Build(); thirdEmailTemplate.TemplateId = "ThirdTemplateId"; thirdEmailTemplate.RecipientTemplate = null; _emailTemplateQueryRepository.Setup(x => x.GetEmailTemplate("ThirdTemplateId")).ReturnsAsync(thirdEmailTemplate); _sendEmailHandler = new SendEmailHandler(_notificationApiMock.Object, _emailTemplateQueryRepository.Object, _loggerMock.Object); _sendEmailHandler.Handle(request, new CancellationToken()).Wait(); _notificationApiMock.Verify(not => not.SendEmail(It.IsAny <Email>()), Times.Exactly(3)); }
public void ValidateOk() { var command = new SendEmailCommand(emailAddress: "*****@*****.**", emailOrigin: "*****@*****.**" , message: "mensagem", body: "corpo"); var handle = new SendEmailHandler(_service); var result = (CommandResult)handle.Handle(command); Assert.AreEqual(true, result.Ok); }
public void ValidateFail() { var command = new SendEmailCommand(emailAddress: "email", emailOrigin: "email" , message: "", body: ""); var handle = new SendEmailHandler(_service); var result = (CommandResult)handle.Handle(command); Assert.AreEqual(false, result.Ok); }
public void Then_Should_Have_Invoked_NotificationApi_Successfully_With_No_Personalisation_Tokens() { //arrange var emailTemplate = Builder <EmailTemplateSummary> .CreateNew().Build(); emailTemplate.TemplateId = "TemplateId"; _message = Builder <SendEmailRequest> .CreateNew().WithConstructor(() => new SendEmailRequest("*****@*****.**", emailTemplate, new {})).Build(); _sendEmailHandler = new SendEmailHandler(_notificationApiMock.Object, _loggerMock.Object); //act _sendEmailHandler.Handle(_message, new CancellationToken()).Wait(); //assert _notificationApiMock.Verify(); }
public void Then_Fails_Due_To_Invalid_Email() { //arrange _message = Builder <SendEmailRequest> .CreateNew().WithConstructor(() => new SendEmailRequest("", Builder <EMailTemplate> .CreateNew().Build(), new { })).Build(); _emailTemplateQueryRepository.Setup(x => x.GetEmailTemplate(It.IsAny <string>())).ReturnsAsync(Builder <EMailTemplate> .CreateNew().Build()); _sendEmailHandler = new SendEmailHandler(_notificationApiMock.Object, _emailTemplateQueryRepository.Object, _loggerMock.Object); //act _sendEmailHandler.Handle(_message, new CancellationToken()).Wait(); //assert _loggerMock.Verify( x => x.Log(LogLevel.Error, It.IsAny <EventId>(), It.IsAny <FormattedLogValues>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Once); }
public async Task Handle_CallsMessageProcessor_WhenGivenValidRequest() { var messageProcessorMock = new Mock <IMessageProcessor>(); messageProcessorMock.Setup(m => m.Send(It.IsAny <EmailRequest>())) .ReturnsAsync(It.IsAny <SendGrid.Response>()).Verifiable(); var sut = new SendEmailHandler(messageProcessorMock.Object); var request = new EmailRequest(fromAddress: "*****@*****.**", fromName: "Robert", toAddress: "*****@*****.**"); var response = await sut.Handle(request, It.IsAny <CancellationToken>()); Func <EmailRequest, bool> matches = r => r.FromAddress == request.FromAddress && r.FromName == request.FromName && r.ToAddress == request.ToAddress; messageProcessorMock.Verify(m => m.Send(It.Is <EmailRequest>(r => matches(r)))); messageProcessorMock.VerifyAll(); }
public void Then_Fails_Due_To_Invalid_Email() { //arrange var emailTemplate = Builder <EmailTemplateSummary> .CreateNew().Build(); emailTemplate.TemplateId = "TemplateId"; emailTemplate.Recipients = string.Empty; _message = Builder <SendEmailRequest> .CreateNew().WithConstructor(() => new SendEmailRequest(string.Empty, emailTemplate, new { })).Build(); _sendEmailHandler = new SendEmailHandler(_notificationApiMock.Object, _loggerMock.Object); //act _sendEmailHandler.Handle(_message, new CancellationToken()).Wait(); //assert _loggerMock.Verify( x => x.Log(LogLevel.Error, It.IsAny <EventId>(), It.IsAny <FormattedLogValues>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Once); }