Exemple #1
0
        public async Task should_not_send_sms_for_a_user_more_than_5_times_in_a_day()
        {
            const string phoneNumber = "13603503455";

            var user = _theApp.MockUser();

            Enumerable.Range(1, 5).ToList().ForEach(index =>
            {
                var record = new PhoneNumberVerificationRecord
                {
                    CreatedAtUtc = DateTime.UtcNow.AddMinutes(-2 * index),
                    UserId       = user.Id,
                    Code         = "389451",
                    Expires      = DateTime.UtcNow.AddMinutes(15),
                    PhoneNumber  = StringUtility.RandomNumbers(11)
                };
                _phoneVerifyRepo.Save(record);
            });


            var userCtrl = _theApp.CreateController <UserController>();
            var result   = await userCtrl.SendPhoneNumberVerificationCode(phoneNumber);

            Assert.False(result.HasSucceeded);
            var messageSent = _phoneVerifyRepo
                              .All()
                              .Where(r => r.UserId == user.Id)
                              .ToList();

            Assert.Equal(5, messageSent.Count);
        }
Exemple #2
0
        public async Task should_not_send_sms_again_in_2_minutes()
        {
            const string phoneNumber = "13603503455";

            var user   = _theApp.MockUser();
            var record = new PhoneNumberVerificationRecord
            {
                UserId      = user.Id,
                Code        = "389451",
                Expires     = DateTime.UtcNow.AddMinutes(15),
                PhoneNumber = phoneNumber
            };

            _phoneVerifyRepo.Save(record);
            var userCtrl = _theApp.CreateController <UserController>();

            var result = await userCtrl.SendPhoneNumberVerificationCode(phoneNumber);

            Assert.False(result.HasSucceeded);
            var sentRecords = _phoneVerifyRepo
                              .All()
                              .Where(r => r.UserId == user.Id && r.PhoneNumber == phoneNumber)
                              .ToList();

            Assert.Equal(1, sentRecords.Count);
        }
        public async Task SendVerificationCodeAsync(int userId, string phoneNumber)
        {
            var verificationCode = StringUtility.RandomNumbers(length: 6);

            var record = new PhoneNumberVerificationRecord
            {
                UserId      = userId,
                Code        = verificationCode,
                Expires     = _clock.Now.UtcDateTime.AddMinutes(15),
                PhoneNumber = phoneNumber
            };

            _verificationCodeRecordRepo.Save(record);

            await _smsSender.SendVerificationCodeAsync(phoneNumber, verificationCode);
        }
Exemple #4
0
        public void should_verify_phone_number()
        {
            const string code        = "389451";
            const string phoneNumber = "13603503455";

            var user   = _theApp.MockUser();
            var record = new PhoneNumberVerificationRecord
            {
                UserId      = user.Id,
                Code        = code,
                Expires     = DateTime.UtcNow.AddMinutes(15),
                PhoneNumber = phoneNumber
            };

            _phoneVerifyRepo.Save(record);

            var userCtrl = _theApp.CreateController <UserController>();
            var result   = userCtrl.DoVerifyPhoneNumber(code);

            Assert.True(result.HasSucceeded);
            _theApp.ReloadEntity(user);
            Assert.NotNull(user.PhoneNumberId);
        }