コード例 #1
0
        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);
        }
コード例 #2
0
        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)));
            }
        }