public async Task ShouldReturnOkWithValidRequest() { var body = new SendSessionSmsRequest { Domain = "discover-skills-and-careers.co.uk", MobileNumber = "0123456789", SessionId = "201904-282gk265gzmzyz", TemplateId = "3B840739-F4C5-40AA-93E9-6827A6F29003" }; _userSessionRepository.GetUserSession("201904-282gk265gzmzyz").Returns(Task.FromResult(new UserSession { UserSessionId = "201904-282gk265gzmzyz" })); _notifyClient.SendSms(body.Domain, body.MobileNumber, body.TemplateId, body.SessionId).Returns(Task.CompletedTask); var result = await RunFunction(body); Assert.IsType <HttpResponseMessage>(result); var content = await result.Content.ReadAsAsync <SendSessionSmsResponse>(); Assert.Equal(HttpStatusCode.OK, result.StatusCode); Assert.True(content.IsSuccess); }
public static async Task <HttpResponseMessage> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assessment/notify/sms")] 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(); } SendSessionSmsRequest sendSessionSmsRequest; using (var streamReader = new StreamReader(req.Body)) { var body = streamReader.ReadToEnd(); sendSessionSmsRequest = JsonConvert.DeserializeObject <SendSessionSmsRequest>(body); } if (sendSessionSmsRequest == null || string.IsNullOrEmpty(sendSessionSmsRequest.SessionId)) { log.LogError($"CorrelationId: {correlationGuid} - Session Id not supplied"); return(httpResponseMessageHelper.BadRequest()); } if (string.IsNullOrEmpty(sendSessionSmsRequest.Domain)) { log.LogError($"CorrelationId: {correlationGuid} - Domain not supplied"); return(httpResponseMessageHelper.BadRequest()); } if (string.IsNullOrEmpty(sendSessionSmsRequest.TemplateId)) { log.LogError($"CorrelationId: {correlationGuid} - TemplateId not supplied"); return(httpResponseMessageHelper.BadRequest()); } if (string.IsNullOrEmpty(sendSessionSmsRequest.MobileNumber)) { log.LogError($"CorrelationId: {correlationGuid} - Mobile Number not supplied"); return(httpResponseMessageHelper.BadRequest()); } var userSession = await userSessionRepository.GetUserSession(sendSessionSmsRequest.SessionId); if (userSession == null) { log.LogError($"CorrelationId: {correlationGuid} - Session Id does not exist {sendSessionSmsRequest.SessionId}"); return(httpResponseMessageHelper.NoContent()); } await notifyClient.SendSms(sendSessionSmsRequest.Domain, sendSessionSmsRequest.MobileNumber, sendSessionSmsRequest.TemplateId, userSession.UserSessionId); var result = new SendSessionSmsResponse() { IsSuccess = true, }; return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result))); } catch (Exception ex) { var result = new SendSessionSmsResponse() { IsSuccess = false, Message = ex.Message }; return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result))); } }