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); }
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); }
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); }