コード例 #1
0
        public async Task ShouldReturnOkWithValidRequest()
        {
            var body = new SendSessionEmailRequest
            {
                Domain       = "discover-skills-and-careers.co.uk",
                EmailAddress = "*****@*****.**",
                SessionId    = "201904-282gk265gzmzyz",
                TemplateId   = "3B840739-F4C5-40AA-93E9-6827A6F29003"
            };

            _userSessionRepository.GetUserSession("201904-282gk265gzmzyz").Returns(Task.FromResult(new UserSession
            {
                UserSessionId = "201904-282gk265gzmzyz"
            }));

            _notifyClient.SendEmail(body.Domain, body.EmailAddress, body.TemplateId, body.SessionId).Returns(Task.CompletedTask);

            var result = await RunFunction(body);

            Assert.IsType <HttpResponseMessage>(result);
            var content = await result.Content.ReadAsAsync <SendSessionEmailResponse>();

            Assert.Equal(HttpStatusCode.OK, result.StatusCode);
            Assert.True(content.IsSuccess);
        }
コード例 #2
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assessment/notify/email")] HttpRequest req,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IUserSessionRepository userSessionRepository,
            [Inject] INotifyClient notifyClient)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogInformation("Unable to locate 'DssCorrelationId' in request header");
                }

                if (!Guid.TryParse(correlationId, out var correlationGuid))
                {
                    log.LogInformation("Unable to parse 'DssCorrelationId' to a Guid");
                    correlationGuid = Guid.NewGuid();
                }

                SendSessionEmailRequest sendSessionEmailRequest;
                using (var streamReader = new StreamReader(req.Body))
                {
                    var body = streamReader.ReadToEnd();
                    sendSessionEmailRequest = JsonConvert.DeserializeObject <SendSessionEmailRequest>(body);
                }

                if (sendSessionEmailRequest == null || string.IsNullOrEmpty(sendSessionEmailRequest.SessionId))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Session Id not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(sendSessionEmailRequest.Domain))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Domain not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(sendSessionEmailRequest.TemplateId))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - TemplateId not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                if (string.IsNullOrEmpty(sendSessionEmailRequest.EmailAddress))
                {
                    log.LogError($"CorrelationId: {correlationGuid} - EmailAddress not supplied");
                    return(httpResponseMessageHelper.BadRequest());
                }

                var userSession = await userSessionRepository.GetUserSession(sendSessionEmailRequest.SessionId);

                if (userSession == null)
                {
                    log.LogError($"CorrelationId: {correlationGuid} - Session Id does not exist {sendSessionEmailRequest.SessionId}");
                    return(httpResponseMessageHelper.NoContent());
                }

                await notifyClient.SendEmail(sendSessionEmailRequest.Domain, sendSessionEmailRequest.EmailAddress, sendSessionEmailRequest.TemplateId, userSession.UserSessionId);

                var result = new SendSessionEmailResponse()
                {
                    IsSuccess = true,
                };

                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result)));
            }
            catch (Exception ex)
            {
                var result = new SendSessionEmailResponse()
                {
                    IsSuccess = false,
                    Message   = ex.Message
                };
                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result)));
            }
        }