public void ReturnActivationCode() { var maxId = 10; var expected = $"BAC{123 + maxId - 1}"; var charCodesGeneratorMock = new Mock <IRandomCharCodesGenerator>(); charCodesGeneratorMock.Setup(x => x.Generate(3)) .Returns(new[] { 66, 65, 67 }); var ordersDataStoreMock = new Mock <IOrdersDataStore>(); ordersDataStoreMock.Setup(x => x.GetMaxId()) .Returns(maxId); var sut = new ActivationCodeGenerator(charCodesGeneratorMock.Object, ordersDataStoreMock.Object); var actual = sut.Generate(); actual.Should().Be(expected); }
public async Task <IActionResult> Login([FromBody] LoginModel loginModel) { if (ModelState.IsValid) { var user = _userRepository.FindByPhoneNumber(loginModel.PhoneNumber); if (user == null) { // register user var activationCode = ActivationCodeGenerator.Generate(); _userRepository.Create(new User { ActivationCode = activationCode, CreateActivationCodeDate = DateTime.Now, PhoneNumber = loginModel.PhoneNumber, SerialNumber = Guid.NewGuid().ToString() }); var smsResponse = await _smsService .SendAsync(new List <string> { loginModel.PhoneNumber }, $"با سلام کد فعالسازی شما : {activationCode}"); if (smsResponse.IsSuccessful) { return(Ok(ServiceResult.Okay("کد فعالسازی برای کاربر ارسال شد"))); } else { return(Ok(ServiceResult.Error($"خطا در ارسال پیامک از سمت پیامک سفید : {smsResponse.Message}"))); } } else { // generate activationCode var activationCode = ActivationCodeGenerator.Generate(); var smsResponse = await _smsService .SendAsync(new List <string> { user.PhoneNumber }, $"با سلام کد فعالسازی شما : {activationCode}"); if (smsResponse.IsSuccessful) { user.ActivationCode = activationCode; user.CreateActivationCodeDate = DateTime.Now; // update user _userRepository.Update(user); return(Ok(ServiceResult.Okay("کد فعالسازی برای کاربر ارسال شد"))); } else { return(Ok(ServiceResult.Error($"خطا در ارسال پیامک از سمت پیامک سفید : {smsResponse.Message}"))); } } } return(Ok(ServiceResult.Error("model is not valid"))); }