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); }
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))); } }