public async Task <ActionResult> GoBackToSMSVerifyStart(SendSmsOutcomeViewModel model)
        {
            //var VerifyForSMSViewModel = new VerifyForSMSViewModel(model);
            var verifyForSMSViewModel = _viewRouter.Build(model, ControllerContext);

            return(View(verifyForSMSViewModel.ViewName, model));
        }
        public void Returns_the_expected_model_when_calling_SubmitSMSRegistration()
        {
            _mockJourneyViewModelBuilder.Setup(r => r.Build(AnyQuestionViewModel(), AnyQuestionWithAnswers())).ReturnsAsync(new JourneyViewModel {
                Journey = _journeyModel
            });
            var journeyJson         = JsonConvert.SerializeObject(_journeyModel);
            var smsOutcomeViewModel = new SendSmsOutcomeViewModel
            {
                Journey = _journeyModel,
                VerificationCodeInput = new VerificationCodeInputViewModel {
                    InputValue = "DxC112"
                },
                JourneyJson = journeyJson,
            };
            var returnedModel = new SMSRegistrationViewModel(smsOutcomeViewModel);

            _mockRegisterForSmsViewModelBuilder.Setup(
                s => s.MessageCaseDataCaptureApi <SubmitSMSRegistrationRequest, SMSSubmitRegistrationViewDeterminer>(AnySendSmsOutcomeViewModel(), AnyString()))
            .ReturnsAsync(returnedModel);

            var result = _sut.SubmitSMSRegistration(smsOutcomeViewModel);

            var model = (SendSmsOutcomeViewModel)((ViewResult)result.Result).Model;

            Assert.AreEqual("123456", model.Journey.Steps[0].AnswerInputValue);
        }
        public async Task MessageCaseDataCaptureApi_SendsRequestWithCorrectParameters()
        {
            // Arrange
            var builder      = new RegisterForSMSViewModelBuilder(_mockConfiguration.Object, _mockRestClient.Object);
            var mobileNumber = "1234567891";
            var endPointUrl  = "api/test-endpoint";
            var model        = new SendSmsOutcomeViewModel()
            {
                MobileNumber = mobileNumber, VerificationCodeInput = new VerificationCodeInputViewModel()
                {
                    InputValue = "654321"
                }
            };
            var expectedRequest = new JsonRestRequest(endPointUrl, Method.POST).AddJsonBody(mobileNumber);

            _mockRestClient.Setup(s => s.ExecuteAsync(It.IsAny <IRestRequest>())).ReturnsAsync(new RestResponse());

            // Act
            var result = await builder.MessageCaseDataCaptureApi <VerifySMSCodeRequest, SMSEnterVerificationCodeViewDeterminer>(model, endPointUrl);

            // Assert
            _mockRestClient.Verify(m => m.ExecuteAsync(It.Is <RestRequest>(
                                                           r => r.Method == Method.POST &&
                                                           r.Resource == endPointUrl &&
                                                           ((VerifySMSCodeRequest)r.Parameters[0].Value).MobilePhoneNumber == mobileNumber)), Times.Once);
        }
Beispiel #4
0
 public void InitializeDataCaptureApiModelMapper()
 {
     _fromViewModel = new SendSmsOutcomeViewModel {
         VerificationCodeInput = new VerificationCodeInputViewModel()
     };
     Mapper.Initialize(m => m.AddProfile <NHS111.Models.Mappers.WebMappings.DataCaptureApiRequestMappings>());
 }
        private async Task <ActionResult> RedirectToNextQuestion(SendSmsOutcomeViewModel model)
        {
            ModelState.Clear();

            var questionViewModel = CovertSendSmsOutcomeViewModelToQuestionViewModel(model);

            var viewRouter = await _questionNavigiationService.NextQuestion(questionViewModel, ControllerContext).ConfigureAwait(false);

            return(View(viewRouter.ViewName, viewRouter.JourneyModel));
        }
        public async Task <ActionResult> SubmitSMSRegistration(SendSmsOutcomeViewModel model)
        {
            model.VerificationCodeInput = GetVerificationCodeInputFromJourney(model);

            var result = await _registerForSmsViewModelBuilder
                         .MessageCaseDataCaptureApi <SubmitSMSRegistrationRequest, SMSSubmitRegistrationViewDeterminer>(model, _configuration.CaseDataCaptureApiSubmitSMSRegistrationMessageUrl)
                         .ConfigureAwait(false);

            return(View(result.ViewName, result.SendSmsOutcomeViewModel));
        }
        public async Task <ActionResult> GetSMSSecurityCode(SendSmsOutcomeViewModel model)
        {
            var result = await _registerForSmsViewModelBuilder
                         .MessageCaseDataCaptureApi <GenerateSMSVerifyCodeRequest, SMSGenerateCodeViewDeterminer>(model, _configuration.CaseDataCaptureApiGenerateVerificationCodeUrl)
                         .ConfigureAwait(false);

            ModelState.Clear();

            return(View(result.ViewName, result.SendSmsOutcomeViewModel));
        }
        private VerificationCodeInputViewModel GetVerificationCodeInputFromJourney(SendSmsOutcomeViewModel model)
        {
            var verificationCodeInput = JsonConvert.DeserializeObject <Journey>(model.JourneyJson)
                                        .GetStepInputValue <string>(QuestionType.String, "DxC112");

            return(new VerificationCodeInputViewModel()
            {
                InputValue = verificationCodeInput
            });
        }
        public async Task <ActionResult> SubmitSMSSecurityCode(SendSmsOutcomeViewModel model)
        {
            if (VerificationCodeInputIsNotValid())
            {
                return(View("Enter_Verification_Code_SMS", model));
            }

            var result = await _registerForSmsViewModelBuilder
                         .MessageCaseDataCaptureApi <VerifySMSCodeRequest, SMSEnterVerificationCodeViewDeterminer>(model, _configuration.CaseDataCaptureApiVerifyPhoneNumberUrl)
                         .ConfigureAwait(false);

            return(string.IsNullOrWhiteSpace(result.ViewName)
                ? await RedirectToNextQuestion(model).ConfigureAwait(false) : View(result.ViewName, result.SendSmsOutcomeViewModel));
        }
Beispiel #10
0
        public async Task <SMSRegistrationViewModel> MessageCaseDataCaptureApi <TRequest, TViewDeterminer>(SendSmsOutcomeViewModel model, string endPoint)
            where TViewDeterminer : SMSViewDeterminerBase, new()
        {
            var request = Mapper.Map <TRequest>(model);

            var response = await SendRequestToDataCaptureApi <TRequest>(endPoint, request);

            var smsRegisrationModel = new SMSRegistrationViewModel(model);

            new TViewDeterminer().Build(smsRegisrationModel, response.StatusCode);

            return(smsRegisrationModel);
        }
        private static QuestionViewModel CovertSendSmsOutcomeViewModelToQuestionViewModel(SendSmsOutcomeViewModel model)
        {
            var questionViewModel = Mapper.Map <QuestionViewModel>(model);

            questionViewModel.Journey = JsonConvert.DeserializeObject <Journey>(model.JourneyJson);
            questionViewModel.Journey.Steps.Add(new JourneyStep()
            {
                Answer           = new Answer(),
                AnswerInputValue = model.VerificationCodeInput.InputValue,
                QuestionId       = "DxC112",
                QuestionNo       = "DxC112",
                QuestionType     = QuestionType.String
            });
            var answer = JsonConvert.DeserializeObject <Answer>(model.SelectedAnswer);

            answer.Title = "verify";
            questionViewModel.SelectedAnswer   = JsonConvert.SerializeObject(answer);
            questionViewModel.AnswerInputValue = model.MobileNumber;
            return(questionViewModel);
        }
 public SMSRegistrationViewModel(SendSmsOutcomeViewModel sendSmsOutcomeViewModelModel)
 {
     SendSmsOutcomeViewModel = sendSmsOutcomeViewModelModel;
 }