コード例 #1
0
        public async Task Execute_ReturnsBadRequest_WhenEmailRequestHasNoTo()
        {
            var deserializerMock  = new Mock <IRequestDeserializer>();
            var mediatorMock      = new Mock <IMediator>();
            var configurationMock = new Mock <IConfiguration>();

            var emailRequestResponse = "Successfully Send Email";
            var fromAddress          = "*****@*****.**";
            var fromName             = "from name";

            var requestDTO = new EmailRequestDTO
            {
                Subject          = "Subject",
                PlainTextContent = "Email Content"
            };

            deserializerMock.Setup(d => d.Deserialize <EmailRequestDTO>(It.IsAny <HttpRequest>())).ReturnsAsync(requestDTO);
            mediatorMock.Setup(m => m.Send(It.IsAny <EmailRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(emailRequestResponse).Verifiable();
            configurationMock.Setup(c => c.FromAddress).Returns(fromAddress);
            configurationMock.Setup(c => c.FromName).Returns(fromName);

            var sut = new EmailController(deserializerMock.Object, mediatorMock.Object, configurationMock.Object);

            Func <EmailRequest, bool> matchesRequest = request => request.ToAddress.Address == requestDTO.To &&
                                                       request.PlainTextContent == requestDTO.PlainTextContent &&
                                                       request.Subject == requestDTO.Subject;



            mediatorMock.Verify(m => m.Send(It.Is <EmailRequest>(r => matchesRequest(r)), It.IsAny <CancellationToken>()), Times.Never());
            await Assert.ThrowsExceptionAsync <BadRequestException>(() => sut.Execute(requestDTO));
        }
コード例 #2
0
        public async Task Execute_CreatesEmailRequest_FromHttpRequest()
        {
            var deserializerMock  = new Mock <IRequestDeserializer>();
            var mediatorMock      = new Mock <IMediator>();
            var configurationMock = new Mock <IConfiguration>();

            var emailRequestResponse = "Successfully Send Email";
            var fromAddress          = "*****@*****.**";
            var fromName             = "from name";

            var requestDTO = new EmailRequestDTO
            {
                To               = "*****@*****.**",
                Subject          = "Subject",
                PlainTextContent = "Email Content"
            };

            deserializerMock.Setup(d => d.Deserialize <EmailRequestDTO>(It.IsAny <HttpRequest>())).ReturnsAsync(requestDTO);
            mediatorMock.Setup(m => m.Send(It.IsAny <EmailRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(emailRequestResponse).Verifiable();
            configurationMock.Setup(c => c.FromAddress).Returns(fromAddress);
            configurationMock.Setup(c => c.FromName).Returns(fromName);

            var sut = new EmailController(deserializerMock.Object, mediatorMock.Object, configurationMock.Object);

            Func <EmailRequest, bool> matchesRequest = request => request.ToAddress.Address == requestDTO.To &&
                                                       request.PlainTextContent == requestDTO.PlainTextContent &&
                                                       request.Subject == requestDTO.Subject;

            var result = await sut.Execute(requestDTO);

            mediatorMock.Verify(m => m.Send(It.Is <EmailRequest>(r => matchesRequest(r)), It.IsAny <CancellationToken>()), Times.Once());

            Assert.AreEqual(emailRequestResponse, result.Response);
        }
コード例 #3
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            var requestDTO = await _requestDeserializer.Deserialize <EmailRequestDTO>(req);

            try
            {
                var response = await _controller.Execute(requestDTO);

                return(new OkObjectResult(response));
            } catch (BadRequestException)
            {
                return(new BadRequestObjectResult("Bad email request"));
            }
        }
コード例 #4
0
        public async Task Execute_ReturnsArgumentNullException_WhenFromAddressIsNull()
        {
            var deserializerMock  = new Mock <IRequestDeserializer>();
            var mediatorMock      = new Mock <IMediator>();
            var configurationMock = new Mock <IConfiguration>();

            var emailRequestResponse = "Successfully Send Email";

            var requestDTO = new EmailRequestDTO
            {
                Subject          = "Subject",
                To               = "*****@*****.**",
                PlainTextContent = "Email Content"
            };

            deserializerMock.Setup(d => d.Deserialize <EmailRequestDTO>(It.IsAny <HttpRequest>())).ReturnsAsync(requestDTO);
            mediatorMock.Setup(m => m.Send(It.IsAny <EmailRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(emailRequestResponse).Verifiable();
            configurationMock.Setup(c => c.FromAddress).Returns(null as string);
            configurationMock.Setup(c => c.FromName).Returns("From Name");

            var sut = new EmailController(deserializerMock.Object, mediatorMock.Object, configurationMock.Object);

            await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => sut.Execute(requestDTO));
        }