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);
        }
        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);
        }
        public OtpControllerTest()
        {
            otpRepository = new Mock <IOtpRepository>();
            otpGenerator  = new Mock <IOtpGenerator>();
            smsClient     = new Mock <ISmsClient>();
            var otpService        = new OtpSender(otpRepository.Object, otpGenerator.Object, smsClient.Object, otpProperties);
            var otpServiceFactory = new OtpSenderFactory(otpService, new FakeOtpSender(otpRepository.Object), null);

            otpController = new OtpController(otpServiceFactory,
                                              new OtpVerifier(otpRepository.Object, new OtpProperties(1)));
        }
Exemple #4
0
        public void ShouldReturnDefaultOtpSender(string mobileNumber)
        {
            var otpSender        = new OtpSender(null, null, null, null);
            var otpSenderFactory = new OtpSenderFactory(
                otpSender,
                new FakeOtpSender(null),
                new List <string>
            {
                mobileNumber
            });

            var response = otpSenderFactory.ServiceFor(mobileNumber);

            response.As <OtpSender>().Should().NotBeNull().And.BeEquivalentTo(otpSender);
        }
Exemple #5
0
 public OtpSenderTest()
 {
     otpSender = new OtpSender(otpRepository.Object, otpGenerator.Object, otpWebHandler.Object, otpProperties, smsServiceProperties);
 }