public async Task ReturnOtpGenerationBadRequest()
        {
            var sessionId   = TestBuilder.Faker().Random.Hash();
            var otp         = TestBuilder.Faker().Random.String();
            var phoneNumber = TestBuilder.Faker().Random.String();
            var systemName  = TestBuilder.Faker().Random.Word();
            var otpRequest  = new OtpGenerationRequest(sessionId, new Communication("MOBILE"
                                                                                    , phoneNumber), new OtpGenerationDetail(systemName, Action.REGISTRATION.ToString()));
            var generateMessage = new OtpSender(otpRepository.Object,
                                                otpGenerator.Object,
                                                smsClient.Object,
                                                new OtpProperties(5))
                                  .GenerateMessage(otpRequest.GenerationDetail, otp);
            var expectedResult = new Response(ResponseType.InternalServerError, "OtpGeneration Saving failed");

            otpGenerator.Setup(e => e.GenerateOtp()).Returns(otp);
            smsClient.Setup(e => e.Send(phoneNumber, generateMessage)).ReturnsAsync(expectedResult);

            var response = await otpController.GenerateOtp(otpRequest) as ObjectResult;

            otpGenerator.Verify();
            smsClient.Verify();
            response.Should().NotBeNull()
            .And.BeOfType <ObjectResult>()
            .Which.StatusCode.Should().Be(StatusCodes.Status500InternalServerError);
        }
Example #2
0
        private async void ReturnSuccessResponse()
        {
            var          sessionId         = TestBuilder.Faker().Random.Hash();
            const string otpToken          = "123456";
            var          systemName        = TestBuilder.Faker().Random.Word();
            var          phoneNumber       = TestBuilder.Faker().Phone.PhoneNumber();
            var          testOtpResponse   = new Response(ResponseType.Success, "Otp Created");
            var          otpCreationDetail = new OtpGenerationDetail(systemName, Action.FORGOT_PIN.ToString());
            var          otpRequest        = new OtpGenerationRequest(sessionId, new Communication("MOBILE"
                                                                                                   , phoneNumber), otpCreationDetail);
            var generatedMessage = otpSender.GenerateMessage(otpCreationDetail, otpToken);

            otpGenerator.Setup(e => e.GenerateOtp()).Returns(otpToken);
            otpWebHandler.Setup(e => e.Send(otpRequest.Communication.Value, generatedMessage, otpRequest.GenerationDetail.GetTemplateID()))
            .ReturnsAsync(testOtpResponse);
            otpRepository.Setup(e => e.Save(otpToken, sessionId))
            .ReturnsAsync(testOtpResponse);

            var otpResponse = await otpSender.GenerateOtp(otpRequest);

            otpGenerator.Verify();
            otpWebHandler.Verify();
            otpRepository.Verify();
            otpResponse.Should().BeEquivalentTo(testOtpResponse);
        }
        public async Task ShouldSuccessInOtpGeneration()
        {
            var sessionId   = TestBuilder.Faker().Random.Hash();
            var systemName  = TestBuilder.Faker().Random.Word();
            var otp         = TestBuilder.Faker().Random.String();
            var phoneNumber = TestBuilder.Faker().Random.String();
            var otpRequest  = new OtpGenerationRequest(sessionId, new Communication("MOBILE"
                                                                                    , phoneNumber), new OtpGenerationDetail(systemName, Action.REGISTRATION.ToString()));
            var expectedResult  = new Response(ResponseType.Success, "Otp Created");
            var generateMessage = new OtpSender(otpRepository.Object,
                                                otpGenerator.Object,
                                                smsClient.Object,
                                                new OtpProperties(5))
                                  .GenerateMessage(otpRequest.GenerationDetail, otp);

            otpGenerator.Setup(e => e.GenerateOtp()).Returns(otp);
            smsClient.Setup(e => e.Send(phoneNumber, generateMessage)).ReturnsAsync(expectedResult);
            otpRepository.Setup(e => e.Save(otp, sessionId)).ReturnsAsync(expectedResult);

            var response = await otpController.GenerateOtp(otpRequest);

            otpGenerator.Verify();
            smsClient.Verify();
            response.Should()
            .NotBeNull()
            .And
            .Subject.As <OkObjectResult>()
            .Value
            .Should()
            .BeEquivalentTo(expectedResult);
        }